打开的文件都有一个fd: file descriptor (文件描述符)
标准输入:keyborad, 0
标准输出:monitor, 1
标准错误输出:monitor, 2
I/O重定向:改变标准位置
输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS
>:覆盖重定向,目标文件中的原有内容会被清除;
>>: 追加重定向,新内容会追加至目标文件尾部;
# set -C: 禁止将内容覆盖输出至已有文件中;
强制覆盖:>|
# set +C:
2>: 覆盖重定向错误输出数据流;
2>>: 追加重定向错误输出数据流;
标准输出和错误输出各自定向至不同位置:
COMMAND > /path/to/file.out 2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向:
&>:覆盖重定向
&>>:追加重定向
COMMAND > /path/to/file.out 2> &1
COMMAND >> /path/to/file.out 2>> &1
>>X 2>>&1 正常输出到X 错误输出到跟正常输出一样的地方(X)
输入重定向:<
tr命令:转换或删除字符
tr [OPTION]... SET1 [SET2] 把SET1 转换成 SET2
-d 删除SET1不转换
HERE Documentation:<<
# cat << EOF 从终端输入直到输入EOF
# cat > /path/to/somefile << EOF
管道:
COMMAND1 | COMMAND2 | COMMAND3 |... 上一个命令的执行返回值给下一个命令
Note:最后一个命令会在当前shell进程的子shell进程中执行;
tee命令:
tee [OPTION]... [FILE]...
一般用于中间管道,将输入到进程的数据直接输出到指定文件一份,另一份传给下一命令(通过管道),或者直接输出到屏幕
文本处理工具:wc, cut, sort, uniq
wc命令: 统计文章详情
wc [OPTION]... [FILE]...
-l: lines 统计行数
-w: words 统计单词数
-c: characters 统计字数
cut命令: 对文章按要求切割
cut [OPTION]... [FILE]...
-d DELIMITER: 指明分隔符
-f FILEDS: 指明分割后取那些段落
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
--output-delimiter=STRING
sort命令: 排序
sort [OPTION]... [FILE]...
-f: 忽略字符大小写
-r: 逆序
-t DELIMITER: 字段分隔符
-k #:以指定字段为标准排序
-n: 以数值大小进行排序
-u: uniq,排序后去重,临近去重
uniq命令:
uniq [OPTION]... [FILE]...
-c: 显示每行重复出现的次数;
-d: 仅显示重复过的行;
-u: 仅显示不曾重复的行;
Linux学习日记--基础命令(4)--文本处理,重定向,管道
原文地址:http://openex.blog.51cto.com/6280069/1688259