一、什么是重定向
在Linux中,每个命令都会有标准输入、标准输出和标准错误。标准输入通常是键盘输入,标准输出通常是显示器输出,而标准错误通常是显示器输出。
但是在实际应用中,我们可能需要将命令执行的结果保存到文件中或者将文件的内容作为命令的输入。这时就需要用到重定向。
Linux重定向允许用户改变标准输入、标准输出和标准错误的方向。通俗的说,就是可以将命令的输出结果重定向成要保存的文件,或将文件里的内容输入到命令中。
二、输出重定向
输出重定向可以将命令的结果输出到文件而不是显示器上。可以用>符号将结果输出到一个文件中,例如:
$ ls > file.txt
这样,ls命令输出的结果就保存到了file.txt这个文件中。如果file.txt不存在,则会创建一个。
除此以外,还可以用>>符号将结果追加到文件的末尾,例如:
$ echo "hello world" >> file.txt
这样,"hello world"这个字符串就被追加到了file.txt文件的末尾。
三、输入重定向
输入重定向可以将文件中的内容作为命令的输入,可以用<符号将文件内容输入到命令中,例如:
$ uniq < file.txt
这样,uniq命令的输入就是file.txt这个文件的内容。
四、错误重定向
错误重定向可以将错误信息输出到文件而不是显示器上。可以用2>符号将错误信息输出到一个文件中,例如:
$ ls /bin/usr 2> error.txt
这样,错误信息就会被输出到error.txt文件中。
不过需要注意的是,如果想同时将标准输出和错误输出都保存到文件中,可以用2>&1符号,例如:
$ ls /bin/usr > file.txt 2>&1
五、管道符
管道符|是用来将一个命令的输出直接作为另一个命令的输入的。例如:
$ ls | wc -l
这里,ls命令的输出结果将会作为wc -l命令的输入。wc -l是一个用来计算行数的命令,所以这个命令的输出结果就是当前目录下的文件和文件夹的数量。
管道符可以将多个命令链接在一起,形成管道链。例如:
$ ls | grep file | wc -l
这里,首先执行ls命令获取当前目录下的所有文件和文件夹,然后将文件名中包含file的文件过滤出来,最后统计这些文件的数量。
总结
Linux重定向在日常工作中非常常见。通过合理使用输出重定向、输入重定向、错误重定向和管道符,可以提高工作效率,减少人工干预,使工作更加智能化。