I/O重定向
通常对于程序来讲,输入输出可以使键盘、鼠标、显示器等;当然有时候输入的数据是程序自身内部所具有的。同样,输出的数据也有显示器或文件,因此我们到底从哪里输入数据,产生的数据又存放在哪里。
程序:指令+数据
读入数据:Input
输出数据:Output
标准输入:键盘
标准输出:显示器
程序的数据流有三种:
输入的数据流:<-- 标准输入(stdin),键盘
输出的数据流:--> 标准输出(stdout),显示器
错误输出流:--> 标准输出(stdout),显示器
fd(File descriptor):即文件描述符,内核利用fd来访问文件
标准输入:键盘,0
标准输出:显示器,1
标准错误输出:显示器,2
输出重定向:COMMAND > NEW_POS 或 COMMAND >> NWE_POS
>:覆盖重定向,会将目标文件内容覆盖
>>:追加重定向,将输出的内容追加至目标文件尾部
set -C:禁止输出重定向覆盖文件内容
强制覆盖,可使用>|
set +C:允许输出重定向覆盖文件内容
错误输出重定向:COMMAND 2> NEW_POST 或 COMMAND 2>> NEW_POS
2>:覆盖错误输出重定向,覆盖指定的文件内容
2>>:追加覆盖,将错误输出内容追加至文件尾部
合并标准输出和错误输出
(1)&>:覆盖标准输出和错误输出,覆盖指定文件内容
&>>:追加输出
(2)2>&1:
输入重定向:< COMMAND < INPUT_FILE
把另一个文件的内容当做程序的输入
两个特殊文件:
/dev/null:数据黑洞,可将所有无关紧要要的输出信息输出至此设备当中,一般在编写脚本时用的比较多
/dev/zero:吐零机,可无限输出000数据,一般用于生成文件 或覆盖文件
tr命令:删除或转换字符
tr [OPTIONS...] SET1 [SET2]
-c:取字符集的补集
-d:删除SET1定义的字符
-s:把连续的字符显示一次
-t:第一个字符集对应字符转化为第二字符集对应的字符
Here Document:<<
cat << EOF
cat << EOF > aa.txt
管道:|
将一个命令的输出当做下一条命令的输入,实现命令链接
COMMAND1 | COMMAND2 | COMMAND3 |...
将/etc/passwd文件内容转换为大写并输出至aa.txt文件中
tee命令:将标准的输入和标准输出和文件
COMMAND | tee /PATH/TO/SOMEFILE
将输入的文档输出至标准输出并保存至aa.txt文件中