目录
linux中使用
0 代表标准输入 stdin
1 代表标准输出 stdout
2 代表标准错误输出 stderr
输出重定向
1. 输出重定向 (标准输出> 追加输出>> 正确1 错误2)
1.1 标准正确输出重定向 (>) 如果文件不存在,则创建;如果存在,则替换文件原先已有的内容并且写入新内容
echo 'abcdefg' > file
==
echo 'abcefg' 1> file
1.2 追加正确输出重定向 (>>) 如果文件不存在,则创建;如果存在,则在文件最后一行写入新内容
echo 'abcdefg' >> file
==
echo 'abcdefg' 1>> file
1.3 标准错误输出重定向
echo 'abcdefg' 2> file
1.4 追加错误输出重定向
echo 'abcdefg' 2>> file
如果既想让文件有正确的输出,也有错误的输出,怎么办呢?
echo 'abcdefg' 1>> file 2>> file
==
echo 'abcdefg' &>> file &>(还有这个)
echo 'abcdefg' 1>> file 2>&1
echo 'abcdefg' 2>> file 1>&2
拓展:echdddd 'sfsfsfsdfsdf' &> /dev/null /dev/null相当于windows的回收站
PS:当然,对于一条命令同一时刻只会有一个结果,要么正确要么错误。
输入重定向
2. 输入重定向
例子1:
echo '1 2 3 4 5' > file
xargs -n2 < file file作为xargs的参数,默认以空白字符分隔,以两列显示
==
xargs -n2 0< file
xargs -n4 -d: 0< /etc/passwd
-d指定分隔符
例子2:
写入多行数据,用重定向实现
# cat > abc.txt <<EOF,也可以
cat >> abc.txt <<EOF
...
...
...
EOF
PS: EOF(end of file), EOF可替换成任意字符,只要前后一致即可
例子3:
脚本中:
fdisk /dev/sdb <<EOF
n
p
3
+20M
w
EOF
例子4:
tee
ctrl + z
killall -s KILL -I -i -v tee<<EOF
y
EOF
或者
echo y | killall -s KILL -I -i -v tee