数据流重定向
在Shell中,数据流可以使用符号来表示:
1、标准输入(stdin):代码为0,使用<或<<
2、标准输出(stdout):代码为1,使用>(覆盖)或>>(累加)
3、标准错误输出(stderr):代码为2,使用2>或2>>
例子:
ls /home > ~/fileinfo
以上命令会将ls /home的结果输出到目录~/下的fileinfo文件中。
find /home -name .bashrc > list_right 2> list_error
在/home目录下查找名为.bashrc的文件,正确的输出信息存到list_right中,错误信息存到list_error中。
管道命令
ls -al /etc | less
将ls -al /etc的输出作为less命令的输入。
注意事项:
1、每一个管道后面接的必然是“命令”,而且这个命令必须要能够接受standard input的数据才行,例如less, more, head。而cp, ls, mv就不是管道命令。
2、管道命令仅能处理standard output,对于standard error output会予以忽略 。
选取命令:cut, grep
last | cut -d ' ' -f 1
last命令会输出近期登录系统的用户信息,cut -d ' ' -f 1的意思是以 ' ' 作为分隔符来分割每一行,然后选取第一个字段。
grep 'MANPATH' /etc/manpath.config
找出文件/etc/manpath.config中含有字符串'MANPATH'的行,并且用颜色标记。
排序统计命令:sort, wc, uniq
-
sort
cat /etc/passwd | sort
或
sort /etc/passwd
文件/etc/passwd中存储着系统中所有的账户,sort命令默认会以第一个字段进行按照字典序进行排序(/etc/passwd中分隔符为:)。
-
wc(统计文件行数、字符数)
cat /etc/manpath.config | wc
统计文件/etc/manpath.config的行数(-l),单词数(-w),字符数(-m)。
-
uniq(去重)
last | cut -d ' ' -f 1 | sort | uniq
使用last将登录帐号列出,仅列出帐号名,进行排序后去重。