一、啥是输入重定向
卧槽,我理解输入重定向时灰常的难以理解,其实用通俗的话来说就是:
改变输入的方式,比如我们通常标准输入是通过键盘来输入,向程序发出指令,
我们改变它的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入。
二、文件描述符
标准输入文件的描述符 代表为 0
Linux shell 输入重定向
三、实例操作(一看就懂,一听就会)干货:
1. 标准输入
正常键盘操作:
#以键盘作为标准输入设备,并将内容显示控制台。
[root@lixian ~]#ls -l total 8 -rw-r--r--. 1 root root 7 Dec 1 12:54 err.txt -rw-r--r--. 1 root root 102 Nov 30 23:05 out.txt
输入重定向操作:
#它是将err.txt文件指定为输入设备,并将内容显示到控制台,并不是用键盘设备输入。
[root@lixian ~]#ls -l <err.txt total 8 -rw-r--r--. 1 root root 7 Dec 1 12:54 err.txt -rw-r--r--. 1 root root 102 Nov 30 23:05 out.txt
举个实际的例子:
我想查看messages-20191201 这个文件有多少行
使用wc -l 命令,其中,-c选项统计字节数,-w选项统计单词数,-l选项统计行数。
我以messages-20191201 为输入设备 ,导入给wc -l 命令,统计一下文件中的内容行数。
[root@lixian /var/log]#wc -l <messages-20191201 19150 [root@lixian /var/log]#
2. 自定义输入
#使用特定的符号来当分界符,分界符可以自己自定义,
当用ls -l 这条命令会等待用户的输入,当用户输入之后 碰到相同的分界符,会自动结束输入,并将结果打印出来。
[root@lixian ~]#ls -l <<end > dawkdw > daw434645 > fje3243lrg > end total 4 -rw-r--r--. 1 root root 0 Dec 1 14:02 a.txt -rw-r--r--. 1 root root 0 Dec 1 14:01 err.txt -rw-r--r--. 1 root root 147 Dec 1 14:02 out.txt [root@lixian ~]#
[root@lixian ~]#cat <<endli > wdhiuahfiu435'3 > wejfoie435 > dejfirjgiotjgiotj > end > dwjdw > endli wdhiuahfiu435'3 wejfoie435 dejfirjgiotjgiotj end dwjdw [root@lixian ~]#
3.输入并输出
以a.txt为输入的设备,以out.txt为输出的设备,
相当于a.txt发出指令告诉程序执行ls -l ,然后将结果输出到out.txt里面。
[root@lixian ~]#ls -l <a.txt >>out.txt [root@lixian ~]#cat out.txt total 0 -rw-r--r--. 1 root root 0 Dec 1 14:02 a.txt -rw-r--r--. 1 root root 0 Dec 1 14:01 err.txt -rw-r--r--. 1 root root 0 Dec 1 14:02 out.txt