bash基础学习
来源:互联网 发布:淘宝猪哼少焦点访谈 编辑:程序博客网 时间:2024/06/07 18:50
bash(Bourne Again Shell),是一种命令解释器,类似于windows下的CMD,同时也是一门高级编程语言,作为命令你给解释器,他们通过提示符响应并处理用户在命令行上输入的命令。而作为一门编程语言,他们将处理存放在所谓shell脚本文件中的命令,(脚本就是用来处理多个shell命令的可执行文本).
shell基础:
初始化文件:当启动shell时候,他将运行初始化文件初始化自己。不用的shell有不同的初始化文件,一般用户只需要主目录下.bash_profile和bashrc文件。
添加PATH路径 PATH=$PATH:$路径名
更改PATH路径 export PATH=‘所要更改的内容’
重定向标准输出:默认情况下,shell将命令的标准输出发送到屏幕上。除非将标准输入与输出重定向。
文件描述符:0(标准输入)1(标准输出)2(标准错误输出)。 重定向符号为 > ,默认是 1>;< 默认是 0<
复制文件描述符:
leo@Leo-PC:/media/Leo/C$ cat x y 1>hold1 2>&1
leo@Leo-PC:/media/Leo/C$ cat hold1
cat: x: 没有那个文件或目录
this is y.
这里2>&1声明文件描述符2为文件描述符1的副本,这样做的结果是,标准输出和标准错误输出均被重定向到文件hold中。
shell脚本:
是包含shell可执行命令的文件。chmod是改变用户权限的命名,UGO是指user,group,other,文件有3种属性r,w,x.脚本必须是要可读的。
#开始一行注释。
命令分隔符有 ;,换行符,/,|,&
双引号括起来的字符串具有转义作用,单引号括起的不具有。
作业控制:
jobs,列出作业;fg,将作业移到前台运行;bg,将作业移到后台运行.
操作目录栈:
pushd,popd,dirs
参数和变量:
形式 变量名=值
leo@Leo-PC:/media/Leo/C$ leo=huixuejie
leo@Leo-PC:/media/Leo/C$ echo leo
leo
leo@Leo-PC:/media/Leo/C$ echo $leo
huixuejie
变量属性:1.readonly 使变量值不可改变
2.declare和peset:为变量赋予属性。
-a 声明一个数组变量
-f 声明一个函数变量
-i 声明一个整形变量
-r 声明变量为只读,也可用readonly
-x 输出变量(设置为全局变量),也可用export
3. unset 删除变量
特殊字符:
进程:是指命令在Linux上的执行,永和登录启动的shell与其他一样,也是一条命令或者一个进程。
进程结构:类似于文件结构,它可以是一个层次似的机构,有父进程,子进程,根进程。fork(创建)进程。
进程编号:每个进程开始的时候,linux为其分配一个唯一的PID(process identification),PPID为父进程。
命令历史机制:历史机制是一项对C shell的改造功能。它维护了最近发出的命令行的列表。~
重新执行和编辑命令:三种方式
1.fc 命令:显示,编辑和重新执行命令
fc -l 显示最近出现的16个命令。后面可以带参数[first][last],表示从first开始last结束匹配的命令。
fc [-e editor][first][last]可以用来编辑和重新执行前面的命令。
fc -s 不调用编译而重新执行命令
2.使用感叹号(!):
!!:前一个命令
!n:历史列表中编号为n的命令
!-n:往前第n条命令
!string:最近以string开头的命令行。
字符标志有:
n第n个字
^第1个字(字的编号以0开始)
$最后一个字
m-nm到n的所有字
n*n代最后之间的所有字
*除命令以外的所有字
%最近的匹配?string?搜索的那个字
修饰符:有时候需要改变正要重新执行的实践的某个方面,可以在字符标志后面或者实践标志符后面放置一个或者多个修饰符,每个修饰符前面必须有一个:号。
替换的语法是[g]s/old/new/
添加g表示全局替换。
快速替换:^old^new^
其他修饰符:
e(extension)删掉除文件名扩展名之外的所有内容
h(head)删除路径名的最后部分
p(print-not)显示命令,但是不要执行
q(quote)引用该替换,以防止对其进行进一步的替换
r(root)删除文件扩展名
t(tail)删除路径名中除末尾之外的所有元素
x去q类似,除了单独引用替换中的每个字
3.Readline库
bath的命令行编辑功能通过Readline库实现,任何C语言编写的应用程序都可以使用这个库。
编辑模式有2种,vi模式,emacs模式。默认是emacs模式
emacs模式:不必在命令模式和输入模式切换.
ctrl+B向后移动一个字符
ctrl+F向前移动一个字符,可以在移动前面加上数字,但需要先键入ESC
ctrl+A跳到行首
ctrl+E跳到行尾
ctrl+D可以删除一个字符
ctrl+K可以删除光标到行末的所有字符
ESC+b/f 向后向前移动一个字
别名:是一种名称(通常短小),shell将其翻译成另一个(通常较长的)名字或者(复杂的)命令.
alias,unalias ,别名中双引号括起的部分,会被展开,单引号括起的部分不会被展开。
函数:shell函数类似shell脚本,里面存放了一系列可在后期执行的命令。因为shell将函数存放在物理内存(RAM)而不是磁盘文件中,所以shell访问函数的速度要比访问脚本的速度快很多。
声明语法:
[function]function-name()
{
commands
}
其中,function-name是为调用该函数使用的函数名,commands由调用函数是将要执行的命令组成。
例如$function whoson()
>{
>date
>echo "User currently Logged On"
>who
>}
显示日期,一条标题,和一个正在使用该系统的用户列表
若希望函数总是可以,不必要每次输入,则可以将函数放入初始化文件~/.bash_profile中
bash的特性和选项:
命令行选项:
表8-12 命令行选项
选 项
解 释
语 法
help
显示用法信息
--help
no edit
阻止用户在交互式shell中使用Readline库编辑命令行
--noediting
no profile
阻止读取初始化文件/etc/profile、~/.bash_profile、~/.bash_login和~/.profile
--noprofile
no rc
阻止读取~/.bashrc初始化文件;如果shell以sh调用的话,这个选项默认是打开的
--norc
POSIX
在POSIX模式下运行bash
--posix
version
显示bash版本信息并退出
--version
login
使bash像登录shell一样运行
-l(小写l)
shopt
带上shopt选项opt运行shell;-O(大写O)设置该选项,+O删除该设置
[+-]O [opt]
end of options
在命令行中发信号表示选项结束;后面的字将作为参数,即使它们以连字符(-)开头
--
shell特性:
表8-13 bash特性
特 性
描 述
语 法
备 用 语法
allexport
在执行这条命令之后自动输出用户创建的所有变量和函数
set -o allexport
set -a
braceexpand
使bash执行花括号扩展(默认)
set -o
braceexpand
set -B
cdspell
纠正传递给cd的参数中目录名中小的拼写错误
shopt -s cdspell
cmdhist
保存一个多行命令中的所有文本行,如果需要将添加分号
shopt -s cmdhist
dotglob
使模糊文件引用中的shell特殊字符(通配符)来匹配以句号(.)开头的文件名;默认情况下,这些特殊字符并不匹配开头的句号;必须总要显式地指定文件名.和..,因为没有模式曾匹配它们
shopt -s dotglob
emacs
为命令行编辑指定emacs模式(默认)
set -o emacs
errexit
使bash在遇到简单的命令失败(而不是控制结构)时退出
set -o errexit
set -e
execfail
使shell脚本在找不到exec参数所指的文件时继续运行;默认情况下,当exec找不到其参数指定的文件时,脚本将终止
shopt -s execfail
(续表)
特 性
描 述
语 法
备 用 语法
expand_aliases
使别名扩展(默认情况下,对于交互式shell是开启的,而对于非交互式shell是关闭的)
shopt -s
expand_alias
hashall
使bash记住它使用PATH找到的命令的位置
set -o hashall
set -h
histappend
在shell退出时,使bash把历史列表追加到HISTFILE命令的文件后面;默认情况下,bash会覆盖掉这个文件
shopt -s
histappend
histexpend
使历史机制(使用感叹号)工作(默认);关闭这个特性将关闭历史扩展
set -o histexpand
set -H
history
开启命令历史特性(默认情况下是开启的)
set -o history
ignoreeof
指定bash接收到10次EOF字符之后才能退出;在信号不好的链路上很有用
set -o ignoreeof
monitor
启用作业控制(默认启用)
set -o monitor
set -m
nocaseglob
使模糊文件引用匹配文件名而不区分大小写(默认关闭)
shopt -s
nocastglob
noclobber
帮助阻止文件覆盖(默认关闭)
set -o noclobber
set -C
noglob
关闭路径名扩展(默认关闭)
set -o noglob
set -f
notify
如果启用了作业控制,将立即报告后台作业的终结状态;默认行为是在显示下一个提示符之前显示该状态
set -o notify
set -b
nounset
当在交互式shell中使用未设置变量时,将显示一条错误消息并退出shell脚本
set -o unset
set –u
nullglob
使bask扩展模糊文件引用,这些模糊文件引用不能将文件名与一个空字符相匹配。默认情况下,bash无需扩展这些文件引用就可以传递它们
shopt-s nullglob
posix
以POSIX模式返回bash
set-o posix
verbose
当bask读取命令行时显示这些命令行
set-o verbose
set-v
vi
为命令行的编辑指定vi编辑模式
set-o vi
xpg_echo
使内置命令cd在无需-e选项的情况下扩展反斜线转义序列
shopt –s xpg_echo
xtrace
启用shell调试功能
set-o xtrace
set-x
打开和关闭shell特性:set -o/+o
shopt -s/-u 若用shopt更改set设置,则需要包含-o选项
处理命令行:命令行展开:
1.花括号展开:将花括号中以逗号隔开的字符串展开为一空格分隔的字符串列表。
2.带字符展开:带字符(~)
3.参数展开和变量展开:后面没有开放的美元符号$将引入参数或者变量展开
4.算数展开:$((expression))
5.命令替换:是用命令的输出来替换该命令
6.分词:参数和变量展开,命令替换和算数展开的结果都可以作为分词的候选者。
7.路径名展开。
8.进程替换
- bash基础学习
- Bash 基础学习笔记
- bash基础学习
- bash学习笔记1-bash基础
- Linux 基础学习 Bash(RHEL)
- 《学习bash》笔记--基础shell编程
- Linux基础学习-Bash Shell简介
- linux学习基础---bash命令行基本操作
- Linux学习笔记:bash的基础特性
- bash 基础
- Bash 基础
- Bash基础
- Bash基础
- bash基础
- bash 基础
- Bash基础
- bash基础
- Learning Bash 学习bash
- MFC OnFileNew OnFileOpen过程分析代码
- 算法:蛇形填数
- java 当前路径
- T30备忘
- 祝福
- bash基础学习
- simply scheme 第二章 练习
- [sql server] 分组取最大最小常用sql
- C#委托-概念理解(转载)
- 顾准的绝望之望
- c# 日期函数
- 20100703
- Cygwin&Vim 搭建Mainframe IDE [17] - 设置VimShell
- 在JSF中使用 properties 文件