bash (Bourne-Again SHell) 是当前众多Linux系统的默认shell,拥有强大的功能,便于人们操纵使用Linux系统。 html
bash中使用的一些特殊符号有: shell
符 号 | 内 容 |
---|---|
# | 批注符号,这个最常被使用在script当中,视为说明。其后的数据均不执行 |
|
转义符号,将特殊字符或通配符还原成通常字符 |
| | 管道 (pipe),分隔两个管道命令的界定 |
; | 连续命令执行分隔符,连续性命令的界定 |
$ | 适用变量前导符,便是变量以前须要加的变量替代值 |
& | 做业控制 (job control),将命令转到后台工做 |
>与>> | 数据流重定向,输出向导,分别是“替换”与“累加” |
<与<< | 数据流重定向,输入向导,分别是“键盘输入”与“结束输入” |
' ' | 单引号,不具备变量置换的功能 |
" " | 双引号,具备变量置换的功能 |
` ` | 能够先执行的命令,也可以使用$() |
( ) | 子shell的起始与结束 |
{ } | 命令块的组合 |
举例说明: bash
#屏幕本应该显示的标准输出(stdout)内容重定向转存到test.txt文件中 #若是test.txt文件已存在,则覆盖 $ ls -al ~ > ~/test.txt #屏幕本应该显示的标准输出内容重定向转存到test.txt文件中 (数据累加而不覆盖) $ ls -al ~ >> ~/test.txt #将标准输出内容重定向到test.txt中,标准错误输出则重定向到test2.txt中,均为累加方式而非覆盖 $ ls -al /test/ >> ~/test.txt 2>> ~/test2.txt #将标准输出内容与标准错误输出内容均重定向至test.txt中,累加方式 $ find /home/ -name "test.txt" &>> ~/test.txt #正确写法 $ find /home/ -name "test.txt" >> ~/test.txt 2>>&1 #正确写法 $ find /home/ -name "test.txt" >> ~/test.txt 2>> ~/test.txt #错误写法 #将标准错误输出内容丢弃,只在屏幕上显示标准输出内容 $ find /home/ -name "test.txt" 2> /dev/null
<的做用:用文本文件内容或设备来源代替键盘输入 less
<<的做用:结束输入 (不经常使用) spa
举例说明: code
#建立一个文本文件test3.txt,内容为 /home/lsy/,以 end 为结束输入 $ cat > test3.txt << "end" > /home/lsy/ > end 在此处按下回车 $ 查看当前目录下,存在test3.txt文件 #下面这条命令的执行效果同 ls -al /home/lsy/ $ ls -al < test3.txt
管道|用于链接两个命令,即以“|”左边命令的标准输出,做为右边命令的标准输入,以下所示: htm
command1 | command2 | command3 stdout1 => stdin2 stdout2 => stdin3
管道命令只会处理标准输出,而对于标准错误输出则会忽略。并且,管道右边的命令,必需可以接收标准输入,如less、more、grep、cut等命令,而ls、cp、mv等命令不能接收标准输入,于是不能放在管道右边。 ip
举个例子: get
rpm -qa --last | less #用less来查看显示结果
命令tee能够截获标准输出 (不能截获标准错误输出),传给一个文件或设备,同时保留做为标准输出继续交给下一步处理。用法以下: 博客
tee [-a] file/device -a : 以累加的方式,将数据流加入file中 #将 ls -al 的执行结果以累加方式保存至test.txt中,并显示在屏幕上 $ ls -al | tee -a test.txt #将 ls -al 的执行结果以累加方式保存至test.txt中,并显示在屏幕上(用less命令查看) $ ls -al | tee -a test.txt | less #将 ls -al 的执行结果分别保存至test.txt、test2.txt中,均以累加方式写入 $ ls -al | tee -a test.txt >> test2.txt