我们知道,Linux的标准输入设备默认指向键盘,而标准输出设备默认指向显示器。 本节介绍的输入输出重定向归根到底可以像文字那样捕捉,也就是说是linux
输入重定向:“使用新指定的设备作为新的输入设备,而不是键盘;
输出重定向:表示使用新指定的设备而不是显示器作为新的输出设备。
使用文件和命令的执行结果而不是键盘作为新的输入设备是常见的,新的输出设备通常是指文件spa
Linux输入重定向
输入重定向所需的符号及其用途如表1所示。 net
表1输入用于重定向的符号和用途
命令符号格式
制作使用
命令文件
将文件指定为命令的输入设备
命令分隔符
表示从标准输入设备(键盘)读取并在遇到分隔符之前中止()读取的数据不包含分隔符),其中的分隔符实际上是自定义字符串
指令文件1文件2
将文件1作为命令的输入设备,并将该命令的执行结果输出到文件2。
【例1】
缺省情况下,cat命令接受来自标准输入设备(键盘)的输入,并将其显示在控制台上。但是,如果要使用文件而不是键盘作为输入设备,请使用指定的文件作为输入设备并读取文件的内容
例如,/etc/passwd文件包含系统中所有用户的基本信息。 运行以下命令: 代码
[根@ localhost~] # cat/etc/passwd #此处省略了输出信息。 读者可以自己看
[ root @ localhost~] # cat/etc/passwd #的输出结果与上述命令相同
执行结果相同,但请注意,第一行使用键盘作为输入设备,第二行代码使用/etc/passwd文件作为输入设备。 博客
【例2】字符串
[root@localhost ~]#cat 0
c.biancheng.net Linux 0c.biancheng.net
Linux
将0指定为边界后,可以看到可以一直输入数据,除非输入0。 获取
【例3】
首先,创建新的文本文件a.tx,然后运行以下命令: io
[root@localhost ~]#cat a.txt
[ root @ localhost~] # cat/etc/passwda.txt
[root@localhost ~]#cat a.txt#输出了与/etc/passwd文件内容相同的数据
可以通过将/etc/passwd重定向到输入设备,并将输出重定向到a.txt,将/etc/passwd文件的内容复制到a.txt。 选项卡
Linux输出重定向
使用输出重定向的频率高于输入重定向。 另外,与输入重定向不同,输出重定向也能够细分为标准输出重定向和错误输出重定向这两种技术。
例如,使用ls命令分别显示两个文件的属性信息,但其中一个文件不存在。 以下是一个示例: 类
[ root @ localhost~] # touch demo1. txt
[ root @ localhost~] # ls-l demo1. txt
- rw-rw-r----1root root0oct 1215336002 demo1. txt
[ root @ localhost~] # ls-l demo2. txt
ls : cannotaccessdemo2. txt : nosuchfileordirectory
由于上述命令中存在demo1.txt,因此该文件的部分属性信息已正确输出。 这也是该命令执行的标准输出信息。 另一方面,因为不存在demo2.txt,所以在执行ls命令之后显示的错误信息是该命令的错误输出信息。
再次强调,要将本来输出到画面上的数据导出到文件中,必须区分这两种输出信息。
而且,标准输出重定向和错误输出重定向分别包含空写入和附加写入两种模式。 因此,输出重定向所需的符号及其用途如表2所示。
表2输出重定向中使用的符号和用途
命令符号格式
制作使用
命令文件
将命令执行的标准输出结果重定向到指定的文件并输出,如果该文件已包含数据,则清空原始数据并写入新数据。
命令2文件
将命令执行的错误输出结果重定向到指定的文件,如果该文件已包含数据,则清空原始数据并写入新数据。
命令文件
将指令执行的标准输出结果重定向到指定的文件并输出。 如果文件中已经包含数据,新数据将写入原始内容之后。
命令2文件
如果将命令执行的错误输出结果重定向到指定的文件,并且该文件已包含数据,则新数据将写入原始内容之后。
指令文件21
或者
命令文件
如果将标准或错误输出写入指定的文件,并且该文件已包含数据,则新数据将写入原始内容之后。 请注意,在第一种格式中,最后21是一个整体,可以视为固定表示法。
【例4】创建包含字符串“Linux”的新文本文件Linux.txt和空文本文件demo.txt,然后执行以下命令:
[ root @ localhost~] # cat Linux.txt demo.txt
[root@localhost ~]#cat demo.txt
Linux
[ root @ localhost~] # cat Linux.txt demo.txt
[root@localhost ~]#cat demo.txt
Linux
[ root @ localhost~] # cat Linux.txt demo.txt
[root@localhost ~]#cat demo.txt
Linux
Linux
[ root @ localhost~] # catb.txt demo.txt
cat : b.txt : nosuchfileordirectory
[ root @ localhost~] # catb.txt2demo.txt
[root@localhost ~]#cat demo.txt
cat : b.txt : nosuchfileordirectory
[ root @ localhost~] # catb.txt2demo.txt
[root@localhost ~]#cat demo.txt
cat : b.txt : nosuchfileordirectory
cat : b.txt : nosuchfileordirectory