目录
1 标准I/O重定向
1.1 标准输入输出
Linux中给程序提供了三种I/O设备
- 标准输入(STDIN) -0 默认接受来自终端窗口的输入
- 标准输出(STDOUT)-1 默认输出到终端窗口
- 标准错误(STDERR) -2 默认输出到终端窗口
范例:文件描述符
1.2 标准输出和错误重定向
重定向符号:
- 1> 或 >:把STDOUT重定向到文件
- 2>:把STDERR重定向到文件
- &>:把所有输出重定向到文件
追加符号:
- 1>> 或 >>:把STDOUT追加到文件
- 2>>:把STDERR追加到文件
- &>>:把所有输出追加到文件
标准输出和错误输出各自定向至不同位置:
- COMMAND > /path/to/file.out 2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向:
- &> 覆盖重定向
- &>> 追加重定向
- COMMAND > /path/to/file.out 2>&1 (顺序很重要)
- COMMAND >> /path/to/file.out 2>&1
1.3 标准输入重定向
从文件中导入STDIN,代替当前终端的输入设备,使用 < 来重定向标准输入
1.3.1 tr命令
tr 命令可以转换和删除字符
- -d :删除所有属于第一字符集的字符
- -s :把连续重复的字符以单独一个字符表示,即去重
- -t :将第一个字符集对应字符转化为第二字符集对应的字符
- -c :取字符集的补集
范例:将文件内容的小写字母替换为大写
范例:将windows文本文件转化为Linux文本文件格式
1.3.2 cat命令
常用选项:
- -A 显示每行结尾符号
- -n 显示每行行号
范例1:利用cat多行重定向发送邮件
mail -s "Please Call" admin@magedu.com <<EOF
>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
>EOF
范例2:利用多行重定向编写文件内容
cat > file.txt <<EOF
>line1
>line2
>EOF
2 管道
管道(使用符号“|”表示)用来连接多个命令
功能说明:
- 将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
- 所有命令会在当前shell进程的子shell进程中执行
- 组合多种工具的功能
tee命令可以重定向到多个目标
格式:命令1 | tee [-a ] 文件名 | 命令2
功能:
- 保存不同阶段的输出
- 复杂管道的故障排除
- 同时查看和记录输出