一篇对大家学习,理解linux很有用的文章
一种追加手段。输出追加重定向与输出重定向的功能非常相似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。
如果要将一条命令的输出结果追加到指定文件的后面,可以使用追加重定向操作符>>。形式为:命令>>文件名。例如:
$ ls *.doc>>directory.out
$ cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
ch1.doc ch2.doc ch3.doc
$
和程序的标准输出重定向一样,程序的错误输出也可以重新定向。使用符号2>(或追加符号2>>)表示对错误输出设备重定向。例如下面的命令:
$ ls /usr/tmp 2> err.file
可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备将来检查用。
还可以使用另一个输出重定向操作符(>)将标准输出和错误输出同时送到同一文件中。例如:
$ ls /usr/tmp > output.file
利用重定向将命令组合在一起,可实现系统单个命令不能提供的新功能。例如使用下面的命令序列:
$ ls /usr/bin > /tmp/dir
$ wc –w /tmp/dir
459
统计了/usr/bin目录下的文件个数。
管 道
将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起,例如上个例子中的/tmp/dir文件将ls和wc命令联在一起;另一种是Linux所提供的管道功能。这种方法比前一种方法更好。
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。
通过使用管道符“|”来建立一个管道行。用管道重写上面的例子:
$ ls /usr/bin|wc -w
1789
再如:
$ cat sample.txt|grep High|wc -l
管道将cat命令(列出一个文件的内容)的输出送给grep命令。grep命令在输入里查找单词High,grep命令的输出则是所有包含单词High的行,这个输出又被送给wc命令,wc命令统计出输入中的行数。假设sample.txt文件的内容如下:
Things to do today:
Low:Go grocery shopping
High:Return movie
High:Clear level 3 in Alien vs. Predator
Medium:Pick up clothes from dry cleaner
那么该管道行的结果是2。
命令替换
命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为:
command1 `command2`
其中,command2的输出将作为command1的参数。需要注意的是这里的`符号,被它括起来的内容将作为命令执行,执行后的结果作为command1的参数。例如:
$ cd `pwd`
该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下。
第二十二课 在Bash中的操作 2000年/5月/29日
命令和文件名扩展特性
Bash命令行具有命令和文件名扩展特性。当输入一个还没完成的命令或文件名时,只需键入Tab键就能激活命令和文件名扩展特性,从而完成该命令的剩余输入。如果有多个命令或文件的前缀相同,Bash将响铃并等待用户输入足够的字符,以便选择唯一的命令或文件名,如果找到,系统将自动补齐搜索到的命令或文件名,用户按回车键后,系统将执行这条指令。例如:
$ cat pre
$ cat preface
Bash也能列出当前目录下部分匹配的文件名来完成文件名扩展。如果键入Esc,然后键入?,shell将列出所有与输入的字符串相匹配的文件名。例如下例,在没有完成的输入后键入Esc ?,shell将列出所有与输入的字符串相匹配的字符串,然后shell回显命令行,根据列出的文件名,可以键入要输入的文件名或按下Tab键来完成文件名扩展。例如:
$ ls
document docudrama
$ cat doc
document
docudrama
$ cat docudrama
[例】下面是一个目录包含的文件列表:
Firebird2.7.tgz Firebird.README Firebird2.60.tgz
FireBird Firebird2.60.tgz.README
现在要删除Firebird2.60.tgz.README文件,键入:
$ rm –f Fi
系统会发出警报声,并且自动将命令行补全为:
$ rm –f Fire
并等待用户进一步输入文件名的后面部分。现在再键入:
b
系统再次发出警报声,并且自动将命令行补全为:
$ rm –f Firebird
并等待用户进一步输入文件名的后面部分。现在再键入:
2.6
系统再次发出警报声,并且自动将命令行补全为:
$ rm –f Firebird2.60.tgz
并等待用户进一步输入文件名的后面部分。现在再键入:
.
此时命令将被补全为:
$ rm &n
- SN2005学习系统 数字语音室解决方案(05-19)
- 骆驼精讲单片机系列:单片机学习,单片机案例分析集锦(05-16)
- 一文读懂人工智能、机器学习、深度学习有啥渊源(01-21)
- 对比深度学习十大框架:TensorFlow 并非最好?(09-21)
- 云中的机器学习:FPGA上的深度神经网络(06-04)
- 斯坦福机器学习公开课笔记13A——混合高斯模型、混合贝叶斯模型(04-19)