1. I/O 重新导向
- 输出导向
# ls -al /etc > /test1/ext.txt -> 将 /etc 目录下的文件数据结果存储到 /test1/etc.txt 文件中
# cat > /test1/editor.txt -> 成为简单的文字编辑器
I Love Linux !! -> 按 Enter 键
-> 按 Ctrl+c 就可结束文件编辑
- 附加输出导向
# cat >> /test1/origin.txt -> 可以在键盘输入内容,附加在源文件之后
- 输入导向
输出导向的概念和输入导向刚好相反。前者是将命令或程序的执行结果通过屏幕或文件来输出,但是后者却是将键盘或文件提供命令来执行。
# cat file1
The content of file1 !
# cat < file1
The content of file1 !
在上述的范例中,二者的输出结果完全相同,但是在执行的程序上却完全不同。在"cat file1"命令中,cat 的标准输入文件为 file1 。因此 cat 在收到输入文件后会执行它的功能而将 file1 的内容显示到屏幕。但是在 "cat < file1"命令中,cat 并没有任何的标准输入文件,而是利用“输入重导(<)”的功能将 file1 传给 cat 当成标准输入文件,最后才能将 file1 的内容显示到屏幕。
在可以接受参数的命令上,输入重导并没有很大的用处,但是在无法接受参数的命令上就相当有用,例如 "patch"
# patch patch-2.4.3-2
# patch < patch-2.4.3-2
因为patch命令无法接受参数,所以在上述的第一行命令输入后,patch 命令会将
patch-2.4.3-2 视为参数,因为它无法接受参数,所以画面不会有任何的反应,若是利用输入重导 (<) 来将 patch-2.4.3-2 文件输入给 patch ,则系统就会开始执行源代码更新的操作。
- 附加输入导向(<< 字符串)
附加输入导向可以自行定义一个字符串,例如 quit ,系统在收到此字符串前,会持续地将数据输入文件,这个功能经常使用在电子邮件系统中。以下是一个传送电子邮件的范例,假设我们定义的字符串是"Finsh",可以继续输入邮件内容。当输入"Finsh"字符串后,系统便会结束邮件的编辑并且寄出。
# mail 751446682@qq.com << Finsh
>The mail is from sherlock
>Finsh -> 结束邮件的编辑并且寄出.
- 错误输出导向(&>)
错误输出导向不论是正常或错误的执行,都不会将信息结果显示在屏幕上,而是直接写入文件中。一般的程序设计师都会习惯将程序测试和出错时所有信息(正常和错误)记录在文件中,以利日后修改时参考。
# ls /user1 > /test1/error.txt
ls: /usr1 : No such file or directory -> 错误信息显示在屏幕
# cat /test1/error.txt -> 错误信息没有记录在文件中
# ls /usr1 &> /test1/error.txt -> 没有出现错误信息
# cat /test1/error.txt -> 错误记录在文件中
2.管道
举例来说,/etc 目录下的文件有很多。若是使用 "ls al"命令,它们并没有办法在同一页中显示,若是我们要浏览第一页中的数据,可能不是很方便,此时可以将"ls -al"命令产生的结果利用管道 (|) 直接导向至 "less" 命令。然后就可以使用上下键来逐行浏览输出结果。
# ls -al /etc | less
# ls -l /etc | grep mysql ->在 etc 目录中搜索包含 mysql 关键字的文件
没有评论:
发表评论