标准I/O重定向
标准输入/输出
程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都有一个fd: file descriptor(文件描述符)。
Linux给程序提供三种 I/O 设备
标准输入(STDIN)-0 默认接受来自键盘的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR)-2 默认输出到终端窗口
标准输出重定向
即改变默认输入/输出位置
把输出和错误重新定向到文件
STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
> 文件内容会被覆盖
set -C 禁止将内容覆盖已有文件,但可追加
> >| file 强制覆盖
set +C 允许覆盖
>> 把输出追加到文件
2> 覆盖重定向错误输出数据流
2>> 追加重定向错误输出数据流
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out
如:skfsfj > f1.txt 2 > f2.txt 正确的信息输出到f1.txt,错误信息输出到f2.txt
echo aa > f1.txt > 2>f2.txt 会将aa输出到f1.txt文件中 合并标准输出、标准错误进行重定向输出到同一个文件中
&> 覆盖重定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)
&>> 追加重定向
COMMAND >> /path/to/file.out 2>&1
():合并多个程序的STDOUT
( cal 2007 ; cal 2008 ) > all.txt
输入重定向
使用 "<" 来重定向标准输入
某些命令能够接受从文件中导入的STDIN
tr ‘a-z’ ‘A-Z’< /etc/issue 该命令会把/etc/issue中的小写字符都转换成大写字符
tr –d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符
cat > file
>mage
>wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入
cat < file1 > file2
cat < file1 >> file1
使用“<< 终止词”命令从键盘把多行重导向给STDIN,直到终止词位置的所有文本都发送给STDIN
有时被称为就地文本(here documents)
mail -s "Please Call" admin@magedu.com <<END
> Hi Wang
>
>Please give me a call when you get in. We may need
> to do some maintenance on server1.
>
>Details when you're on-site
> Zhang
> END
tr命令
字符替换或删除
tr [OPTION]... SET1 [SET2]
选项:
-c -C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
示例:
tr abc 123 回车进入交互输入模式,输入的字符遇到a、b、c会被1、2、3对应替换掉
tr -d ‘abc’ < /data/f1.txt 重定向输入读取文件内容,将读取到的内容中的“abc”字符串删除
tr -dc ‘abc’ < /data/f1.txt 重定向输入读取文件内容,将读取到的内容中不