Shell 重定向

文件标识符

设备 设备文件名 文件标识符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

3-9是保留的标识符
输出经常由两种类型组成,一,程序运行结果;二,状态和错误信息


输出重定向

>重定向符
>>追加重定向,如果文件不存在,文件会被创建
一旦使用数字、&,数字、&和>、>>之间不能有空格
没有数字、%有无空格没有关系,但是为了方便还是有比较好

类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定文件或设备中
命令 >> 文件以追加的方式把命令的正确输出输出到指定文件或设备中
标准错误输出重定向错误命令 2>文件以覆盖的方式把命令的错误输出输出到指定文件或设备中
错误命令 2>>文件以追加的方式把命令的错误输出输出到指定文件或设备中
正确输出和错误输出同时保存命令 >文件 2>&1以覆盖方式把命令的正确输出、输出到指定文件或设备中
命令 >>文件 2>&1以追加方式把命令的正确输出、输出到指定文件或设备中
命令 &>文件以覆盖方式把命令的正确输出、输出到指定文件或设备中
命令 &>>文件以追加方式把命令的正确输出、输出到指定文件或设备中
命令 >>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中
只执行,不显示命令 &> /dev/null(a bit bucket) 将命令的结果丢入null(作用类似于垃圾箱)中,只执行,不显示
1
2
3
4
5
6
7
8
9
ls -l /bin/usr > ls-output.txt 2>&1
#传统方式,这种方式使用了两个重定向,一个是重定向标准输出到文件ls-output.txt,一个是重定向标准错误(2)到标准输出(1)
#顺序不能变,标准错误的重定向必须总是出现在标准输出重定向之后
ls -l /bin/usr > ls-putput.txt 2> ls-outputerror.txt
#分别输出
ls -l /bin/usr &> ls-output.txt
#bash提供的第二种方式
1
2
3
#技巧
> a.txt
#删除文件内容或创建一个新的空文件


输入重定向

命令 < 文件名 
#把文件的内容作为输入 
命令 << 标识符
#统计标识符到标识符再次出现之间的字符



cat <<EOF
#展示键盘输入
cat > /path/to/somefile <<EOF
#将键盘输入放到文件,输入以EOF界定



参考: