bash的基础特性
globbing:文件名通配(整体文件名匹配,非局部文件名匹配)
匹配模式:元字符
-
* :匹配任意长度的任意字符
str*,*str*,*str,*s*t*r* -
?:匹配任何单个字符
str?,?str,?str?,?s?t?r? - []:匹配指定范围内的任意单个字符
- [[:upper:]]或[A-Z]:所有大写字母
- [[:lower:]]:所有小写字母
- [[:alpha:]]或[a-z]:所有字母
- [[:digit:]]或[0-9]:所有数字
- [[:alnum:]]:所有字母和数字
- [[:space:]]:所有空白字符
- [[:punct:]]:所有标点符号
-
[^]:匹配指定范围外的任意单个字符,相当于反向匹配
*“\”为转义符
IO重定向及管道
程序是指令加数据,必须有IO
- 输入设备包括:键盘设备、文件系统上的常规文件、网卡等
- 输出设备包括:显示器、文件系统上的常规文件,网卡等
程序的数据流分三种:
- 输入的数据流:标准输入(stdin),键盘
- 输出的数据流:标准输出(stdon),显示器
- 错误输出流: 错误输出(stderr),显示器
fd:file descriptor,文件描述符
- 标准输入:0
- 标准输出:1
- 错误输出:2
IO重定向
输出重定向,>
特性:覆盖输出,无提示,不可恢复,危险操作!
set
设置或撤销,仅针对当前特性
-c 禁止覆盖输出重定向已经存在的文件;
~]# set -c 表示打开set特性,此时若要强行覆盖可以使用[path] >| [path]实现
~]# set +c 表示关闭set特性输出重定向,>>
特性:追加输出,把输出添加到目标
错误输出流重定向: 2> (同样会覆盖文件),2>>
合并正常输出流和错误输出流
&>,&>>
~]# COMMAND > [path] 2>&1
~]# COMMAND >> [path] 2>&1特殊设备:/dev/null
任何数据的输入/dev/null都会丢弃,也叫数据黑洞
单不需要输入的结果时就可以把数据流定向到/dev/null
如:~]# head -1 /etc/passwd &> /dev/null输入重定向,<
tr命令:
把输入的数据当中的字符,凡是在SET1定义范围出现的,全部对位转换为SET2出现的字符。
其过程不会修改源文件,只是把结果输出到显示器
tr [option]...SET1[SET2]
~]# tr SET1 SET2 < [PATH]
-d
如:~]# tr [a-z][A-Z]
表示接下来的输入会把小写字母转换为大写字母输出在显示器
~]# tr [a-z][A-Z] < [PATH]
表示把[PATH]内容中的小写字母替换为大写字母并输出
~]# tr -d SET1 < [PATH]
表示把[PATH]中符合SET1条件的内容删除并输出
-
<< :Here Document
cat << [结束符]
表示接下来输入的内容在输入结束符后会全部输出至显示器
*结束符不应与输入内容匹配
cat > [PATH&NAME] << [结束符]
表示接下来输入的内容将在[PATH&NAME]中创建一个名为NAME的文档,并保存
管道
连接程序,实现将前一个命令的输出直接定向给后一个程序当输入数据流
COMMAND1 | COMMAND2 | COMMAND3……
如:
~]# cat /etc/issue | tr [a-z][A-Z]
tee命令
把输入数据流输出至显示器并保存至指定文件,经常跟管道一起使用,实现数据流分方向发送
COMMAND | tee /PATH/TO/SOMEFILE
如:
~]# cat /etc/issue | tee /tmp/issue.tee