Linux命令重定向与管线命令

命令重定向:

在Bash命令执行中,除了有>符号,还有3种输出输入状况,分别是:

1标准输入:代码为0,或称为stdin,使用方式为<

2标准输出:代码为1,或称为stdout,使用方式为1>

3错误输出:代码为2,或称为stderr,使用方式为2>

>>累加到文件中,文件累加,旧数据保留.

例:

[test@testtest]#ls–al1>list.txt2>list.err

将显示数据正确输出到list.txt,错误的数据输出到list.err

>与>>比较,区别:

>:将原来由屏幕输出的正确数据输出到>右边的文件或设备

>>:将原来由屏幕输出的正确数据输出到>>右边,与>不同的是,该文件将不会被覆盖,而新的数据将以累加方式添加到文件的最后面.

/dev/null是什么呢?

答:基本上,它有点象一个无底洞,专门收集垃圾,当您输入的任何东西导向到这个虚拟的垃圾桶,它就会凭空消失,非常有用.

例:

[test@testtest]#find/-nametesting1>list_right2>/dev/null

如果要把数据都写到同一个文件中

[test@testtest]#find/-nametesting1>list_right2>&1

管线命令

管线命令使用的是”|”界定符号

管线命令”|”仅能处理经由前一个指令传来的正确信息,也就是标准输出(stdout)信息,对于标准错误信息并没有直接处理能力.

每个管线部分都是指令,而后一个指令的输入乃是前一个指令的输出.

常用的管线命令:

cut

语法:

[root@test/root]#cut–d“分隔字符”[-cf]fields

参数说明:

-d:后面接的是分割字符,默认是空格符

-c:后面接的是第几个字符

-f:后面接的是第几个区块

cut的主要用途在于将同一行里的数据进行分解,最常用在分析一些数据或文件数据的时候,因为有时候我们会以某些字符当作分割参数,然后将数据加以切割,以取得我们需要的数据(常用与分析我们的日志文件).

sort

语法:

[root@test/root]#sort[-t分隔符][(+起始)(-结束)][-nru]

参数说明:

-t分隔符:使用分隔符隔开不同区块,默认是tab

+start–end:由第start区块排序到end区块

-n:使用纯数字排序(否则会以字母方式排序)

-r:反向排序

-u:相同出现的一行,只列出一次

[root@test/root]#cat/etc/passwd|sort

将列出来的个人帐号排序

wc

语法:

[root@test/root]#wc[-lmw]

参数说明:

-l:多少行

-m:多少符号

-w:多少字

例:

[root@test/root]#cat/etc/passwd|wc–l

这个文件里有多少行.

uniq

语法:

[root@test/root]#uniq

uniq删除重复的行从而只显示一个

tee

例:

[root@test/root]#last|teelast.list|cut–d“”–fi

使用tee,会将数据同时传给下一个命令执行,也会将数据写入last.list文件中

tr

语法:

[root@test/root]#tr[-ds]SET1

参数说明:

-d:删除SET1这个字符串

-s:取代重复的字符

例:

[root@test/root]#cat/etc/passwd|tr–d:

“:”这个符号在/etc/passwd中不见了

split

语法:

[root@test/root]#split[bl]输入文件输出文件前导字符

参数说明:

-b:以文件SIZE来分

-l:以行数来分

例:

[root@test/root]#split–l5/etc/passwdtest

会产生testaa,testab,testac等文件

相关推荐