开源的一个重要理念:不要重复发明轮子。 不少开源软件都是现有软件、代码、功能的从新组合。 《大教堂与集市》linux
Linux中,大多数命令都很简单,每每只实现一个或几个简单的功能,咱们能够将不一样功能的命令组合在一块儿使用,以达到完成某个复杂功能的目的。 Linux中,几乎全部命令的返回都是纯文本的,而纯文本形式的数据是绝大多数命令的输入格式,这就让协做成为可能。 Linux的命令行为咱们提供了管道和重定向机制,多命令协做就是经过管道和重定向完成的。正则表达式
名称 | 说明 | 编号 | 默认 |
---|---|---|---|
STDIN | 标准输入 | 0 | 键盘 |
STDOUT | 标准输出 | 1 | 终端 |
STDERR | 标准错误 | 2 | 终端 |
命令经过STDIN接收参数或数据,经过STDOUT输出结果或经过STDERR输出错误。shell
分类 | 关键字 | 定义 | 例子 |
---|---|---|---|
重定向 | > |
将STDOUT重定向到文件(覆盖) | echo "linuxcast.net" > outfile |
重定向 | >> |
将STDOUT重定向到文件(追加) | echo "linuxcast.net" >> outfile |
重定向 | 2> |
将STDERR重定向到文件(覆盖) | echo "linuxcast.net" 2> outfile |
重定向 | 2>&1 |
将STDERR与STDOUT结合 | echo "linuxcast.net" 2>&1 outfile |
重定向 | < |
STDIN | grep linuxcast < /etc/passwd |
管道 | ` | ` | 将一个命令的STDOUT做为另外一个命令的STDIN |
一个更复杂的例子:查找用户linuxcast的Video文件,将查找错误重定向到null(丢弃) find / -user linuxcast 2> /dev/null | grep Video
less
cat/more/less/head/tail
该命令使用正则表达式搜索指定的纯文本文件或纯文本(管道)ide
-i
忽略大小写-n
现实结果所在行数(文件)-v
输出不带关键字的行(反选)-Ax
输出的时候包含结果所在行以后的指定行数-Bx
输出的时候包含结果所在行以前的指定行数-d
指定分割字符,默认为TAB-f
指定输出的列号-c
基于字符进行切割,固定长度例: cut -d: -f1 /etc/passwd
以:
为分割符,显示第一列 grep linuxcast /etc/passwd | cut -d: -f3
输出用户linuxcast的uid(第三列) cut -c2-6 /etc/passwd
第2-6个字符工具
-l
只统计行数line-w
只统计单词word-c
只统计字节数-m
只统计字符数-r
进行倒叙排序-n
基于数字进行排序-f
忽略大小写-u
删除重复行-tc
使用c做为分隔符分割为列进行排序-kx
当进行基于指定字符分割为列的排序时,指定基于哪一个列排序sort -u
排序时删除重复行uniq
删除重复的相邻行-i
忽略大小写-b
忽略空格数量的改变-u
统一显示比较信息(通常用以生成patch文件) diff -u linuxcast linuxcast-new > final.patch
aspell check linuxcast
aspell list < linuxcast
translateui
tr -d 'TMD' < linuxcast
删除关键字tr 'a-z' 'A-Z' < linuxcast
转换大小写使用正则表达式处理文本文件spa
sed 's/linux/unix/g' linuxcast
替换linux为unix,/g
所有替换sed '1,50s/linux/unix/g' linuxcast
替换1-50行sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast
多个正则表达式sed -f sededit linuxcast
将匹配表达式保存在sededit文件中