程序:指令+数据
每个程序都有读入数据和输出数据的需求;
每一个打开的文件都有一个fd:file descriptor(文件描述符)
标准输入:keyborad,0(文件描述符)
标准输出:monitor,1
标准错误输出:monitor,2
-----------------------------------------------------------------------------------------------------------------------------
I/O重定向:改变标准位置;
输出重定向:命令 > 目标文件, 命令 >> 目标文件
>:覆盖重定向,目标文件中的原有内容会被清除;
>>:追加重定向,新内容会被追加至目标文件尾部;
# set -C:禁止将内容覆盖输出至已有文件中;
强制覆盖:>|
#set +C:允许将内容覆盖输出至已有文件中;
2>:覆盖重定向错误输出数据流;
2>>:追加重定向错误输出数据流;
标准输出和错误输出各自定向至不同位置:
命令 > /path/to/file.out 2> /path/to/error.out
合并标注输出和错误输出为同一个数据流进行重定向:
&> :覆盖重定向
&>>追加重定向
命令 > /path/to/file.out 2> &1
命令 >> /path/to/file.out 2>> &1
输入重定向:<
tr命令:转换或删除字符
tr [OPTION]... SET1[SET2]
例:tr 'abc' 'ABC' 将输入的所有a,b,c分别对应转换为A,B,C;
tr 'a-z' 'A-Z' 将输入的所有小写字母转换为大写字母;
<<
例:
# cat << EOF
# cat > /path/to/somefile <<EOF
-------------------------------------------------------------------------------------------------------------------------------
管道:前一个命令的输出作为后面命令的输入
命令1 | 命令2 | 命令3 | ...
最后一个命令会在当前shell进程的子shell进程中执行;
tee命令: 从标准输入设备输入,同时输出到标准输出设备和指定的文件;