标准IO
读入数据:Input
输出数据:Output
Linux给程序提供三种I/O设备
1.标准输入 ( Stdin )— 0 默认接受来自键盘的输入
2.标准输出(Stdout)— 1 默认输出到终端窗口
3.标准错误 (Stderr)— 2 默认输出到终端窗口
file desoriptor : 文件描述符 (打开的文件都有一个fb)
把输出和错误重新定向到文件
Stdout和Stderr重新定向
支持的操作符号包括:> , 2> , &>
> 把Stdout重定向到文件.
2 > 把Stderr重定向到文件.
&> 把所有输出重定向到文件.
会覆盖原文件的输出
set -c >| file set +c
set -c: 禁止将内容覆盖已有文件,但可以追加.
>| file: 强制覆盖
set +c: 允许覆盖
进行追加的输出和错误输出
>> 2> 2>>
>> 原有内容的基础上,追加输出
2 > 覆盖重定向错误输出数据流
2>> 追加重定向错误输出数据流
合并标准输出和错误输出为同一个数据流进行重定向
&> 覆盖重定向
&>> 追加重定向
CMD > /path/to/file.out 2>&1 (顺序很重要)
CMD>> /path/to/file.out 2>&1
重定向输出的新旧写法
旧写法 COMMAND &> /path/to/somefile、COMMAND &>> /path/to/somefile
新写法 COMMAND > /path/to/somefile 2>&1、COMMAND >> /path/to/somefile 2>&1
输入重定向(Input Redirection)
tr命令
tr [OPTION]… SET1 [SET2]
tr命令可以对来自标准输入的字符进行替换、压缩和删除。
它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大
option
-c 或 - -complement: 取字符集1的补集.
-d 或是 - -delete: 删除所有属于第一字符集的字符.
-s 或 - -squeeze-repeats: 把连续重复的字符以单独一个字符表示.
-t 或 - -truncate-setl: 先删除第一字符集较第二字符集多出的字符.
arguments
字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”
字符集2:指定要转换成的目标字符集。
实例
1.将输入字符由大写转换为小写:
echo “HELLO WORLD” | tr ‘A-Z’ ‘a-z’
hello world
2.使用tr删除字符:
echo “hello 123 world 456” | tr -d ‘0-9’
hello world
3.将制表符转换为空格:
cat text | tr ‘\t’ ’ ‘
tr可以使用的字符类
- [:alnum:] : 字母和数字
- [:alpha:] : 字母
- [:cntrl:] : 控制字符(非打印)
- [:digit:] : 数字
- [:graph:] : 图形字符
- [:lower:] : 小写字母
- [:print:] : 可打印字符
- [:punct:] : 标点符号
- [:space:] : 空白字符
- [:upper:] : 大写字母
- [:xdigit:] : 十六进制字符