Shell 中的特殊字符
1. 通配符
当我们需要使用Shell命令处理一组文件(例如file1.txt、file2.txt、file3.txt……),按个输入文件名会十分的麻烦。这时我们可以使用通配符。
Shell命令的通配符有以下几种:
*(星号):匹配多个字符
?(问号):匹配一个字符
[](方括号):匹配指定的字符
[-](方括号内有-):匹配指定范围的字符
[^](方括号内有^):匹配除了指定字符外的字符
例如,现在有以下几个文件:
file1.txt
file2.txt
file3.txt
file123.txt
file124.txt
file134.txt
file125.txt
file5.txt
则以下通配符表示:
file?.txt:选中了文件file1.txt、file2.txt、file3.txt、file5.txt
file1?4.txt:选中了文件file124.txt和file134.txt
file*.txt:选中了所有文件
file1*.txt:选中了文件file1.txt、file123.txt、file124.txt、file134.txt、file125.txt
file[1-3].txt:选中了文件file1.txt、file2.txt、file3.txt
file[135].txt:选中了文件file1.txt、file3.txt、file5.txt
file[^135].txt:选中了文件file2.txt
2. 管道
管道符号"|"可以将一系列的Shell命令连接起来,将第一个命令的输出作为第二个命令的输入,而第二个命令的输出又将作为第三个命令的输入……以此类推。管道经常与cut命令、grep命令等命令一起出现。
例如,使用管道连接两个指令:
ls ~ | wc -w
wc 指令可以统计当前文档的相关信息,-w表示统计有多少词,-l表示有多少行,-m表示有多少字符。在这个用管道连接的命令中,ls ~的输出结果将作为wc -w的输入,wc命令统计ls ~命令输出的结果内有多少个单词。
通过管道符号"|"可以将多个Shell命令联合使用,可以实现单个指令中无法得到的效果。
示例:命令 cat hello.c | grep printf
cat命令的意思是在终端打印指定文档。该命令首先将hello.c的内容输出,然后使用grep命令查找所有带有“printf”字样的行。
3. 输入输出重定向
在Linux中默认的输入是键盘,默认的输出是终端。若想改变输入/输出的目标,则需要使用输入输出重定向符号来改变输入输出目标重定向到新的目标。
输入输出重定向符号有以下几种:
>文件名 或 1> 文件名:将该文件作为重定向的输出源,即将输出结果显示在该文件内。(采用w(新建)模式)
>>文件名:将该文件作为重定向的输出源,即将输出结果显示在该文件内。(采用a(追加)模式)
<文件名:将该文件作为重定向的输入源
2>文件名 或 &> 文件名:将该文件作为重定向的输出错误源,即命令产生的错误信息会重定向到该文件中
示例1:ls -l >hello.txt 将ls -l的结果输出到文件hello.txt中
示例2:wc -l <hello.txt 将hello.txt作为输入内容传输给wc命令