Linux重定向,顾名思义:更改重新更改命令读取/输入以及输出的方式、方向。Linux重定向有三种类型,分别是标准输入重定向、标准输出重定向、标准错误输出重定向,下面分别对其进行详细讲解。
1.标准输入重定向
1.1.标准输入重定向介绍
标准输入(stdin),编号为0,bash命令从stdin获取输入,默认情况下,键盘作为输入方式。重定向符号为:<、<<
另外,"0<"和"<"是一个意思,默认情况下,标准输入的0可以省略。
1.2.标准输入重定向实例
1.2.1.列出文件中的行数
命令:
wc -l </etc/passwd
1.2.2.编写文件
命令:
cat >> /root/a.txt <<EOF
aaaa
bbbb
EOF
备注:红色字体"定格"修改:“顶格”
2.标准输出重定向
2.1.标准输出重定向介绍
标准输出(stdout),编号为1,bash命令将输出发送到stdout,默认情况下,显示器作为输出媒介。重定向符号为:>、>>
另外,在标准重定向输出中
1."1>"和">"及"1>>"和">>"是一个意思,默认情况下,标准输入的1可以省略。
2.带有>的命令输出将覆盖现有文件内容。
3.带有>>的命令输出将追加至现有文件内容的下方。
2.2.标准输出重定向实例
2.2.1.列出文件中的行数至另一个文件
命令:
wc -l /etc/passwd >/root/tongji.txt
cat /root/tongji.txt
2.2.2.往/root/a.txt追加内容
命令:
echo "zhuijia" >>/root/a.txt
cat /root/a.txt
3.标准错误输出重定向
3.1.标准错误输出重定向介绍
标准输出(stderr),编号为2,bash命令将错误输出发送到stderr,默认情况下,显示器作为输出媒介。重定向符号为:2>、2>>
另外,在标准错误重定向输出中
1."2>"和"2>>"中,2是不能省略的
2.带有>的命令输出将覆盖现有文件内容。
3.带有>>的命令输出将追加至现有文件内容的下方。
3.2.标准错误输出重定向实例
3.2.1.列出不存在文件的错误信息至某一个文件
命令:
ls -l ztj.txt 2>/root/stderr.txt
cat /root/stderr.txt
3.2.2.列出不存在文件的错误信息追加至/root/stderr.txt
命令:
ls -l ztj-1.txt 2>>/root/stderr.txt
cat /root/stderr.txt
4.重定向混合用法
4.1.以覆盖的方式,往现有/root/a.txt文件输入内容
命令:
cat >/root/a.txt <<EOF
ztj
ztj
EOF
4.2.以追加的方式,往现有/root/a.txt文件输入内容
命令:
cat >>/root/a.txt <<EOF
ztj1
ztj1
EOF
4.3.执行某命令,将标准错误输出和标准输出的内容输出[追加]到标准输出的文件中
"1>"和">"及"1>>"和">>"是一个意思,默认情况下,标准输入的1可以省略。
命令:
ls -l /root/a.txt >>/root/stdin.txt 2>&1
ls -l /root/ztj.txt >>/root/stdin.txt 2>&1
OR
ls -l /root/a.txt 1>>/root/stdin.txt 2>&1
ls -l /root/ztj.txt 1>>/root/stdin.txt 2>&1
OR
ls -l /root/a.txt &>>/root/stdin.txt
ls -l /root/ztj.txt &>>/root/stdin.txt
4.4.执行某命令,将标准输出和标准错误输出的内容输出[追加]到标准错误输出的文件中
该方法了解即可,99.99%的情况下不会用。
命令:
ls -l /root/a.txt 2>>/root/stderr.txt 1>&2
ls -l /root/ztj.txt 2>>/root/stderr.txt 1>&2
4.5.2>&1和1>&2的区别
2>&1和1>&2的区别
-->2>&1 错误返回值传递给1输出通道,&1表示1输出通道,然后通过1输出通道记录至/root/stdin.txt文件
E.g:
ls -l /root/a.txt 1>>/root/stdin.txt 2>&1 红色标记为1输出通道,其中1可以省略。
-->1>&2 正确返回值传递给2输出通道,&2表示2输出通道,然后通过2输出通道记录至/root/stderr.txt文件
E.g:
ls -l /root/a.txt 2>>/root/stderr.txt 1>&2 红色标记为2输出通道,其中2不可省略。