老手经验谈 介绍UNIX高手的十大习惯
作者:佚名 出处:网络 更新时间:2007-08-07 责任编辑:
 
 

传递空格分隔的列表


在最简单的调用形式中,xargs 就像一个筛选器,它接受一个列表(每个成员分别在单独的行上)作为输入。



该工具将那些成员放置在单个空格分隔的行上:


清单 14. xargs 工具产生的输出示例

~ $ xargs

a

b

c

Control-D

a b c

~ $


您可以发送通过 xargs 来输出文件名的任何工具的输出,以便为其他某些接受文件名作为参数的工具获得参数列表,如以下示例所示:


清单 15. xargs 工具的使用示例

~/tmp $ ls -1 | xargs

December_Report.pdf README a archive.tar mkdirhier.sh

~/tmp $ ls -1 | xargs file

December_Report.pdf: PDF document, version 1.3

README: ASCII text

a: directory

archive.tar: POSIX tar archive

mkdirhier.sh: Bourne shell script text executable

~/tmp $


xargs 命令不只用于传递文件名。您还可以在需要将文本筛选到单个行中的任何时候使用它:


清单 16. 好习惯 7 的示例:使用 xargs 工具来将文本筛选到单个行中

~/tmp $ ls -l | xargs

-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 \

root root 238 Dec 03 08:19 README drwxr-xr-x 38 joe joe 354082 Nov 02 \

16:07 a -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar -rwxr-xr-x 1 \

joe joe 3239 Sep 30 12:40 mkdirhier.sh

~/tmp $


谨慎使用 xargs


从技术上讲,使用 xargs 很少遇到麻烦。缺省情况下,文件结束字符串是下划线 (_);如果将该字符作为单个输入参数来发送,则它之后的所有内容将被忽略。为了防止这种情况发生,可以使用 -e 标志,它在不带参数的情况下完全禁用结束字符串。


了解何时 grep 应该执行计数——何时应该绕过


避免通过管道将 grep 发送到 wc -l 来对输出行数计数。grep 的 -c 选项提供了对与特定模式匹配的行的计数,并且一般要比通过管道发送到 wc 更快,如以下示例所示:


清单 17. 好习惯 8 的示例:使用和不使用 grep 的行计数

~ $ time grep and tmp/a/longfile.txt | wc -l

2811


real 0m0.097s

user 0m0.006s

sys 0m0.032s

~ $ time grep -c and tmp/a/longfile.txt

2811


real 0m0.013s

user 0m0.006s

sys 0m0.005s

~ $


除了速度因素外,-c 选项还是执行计数的好方法。对于多个文件,带 -c 选项的 grep 返回每个文件的单独计数,每行一个计数,而针对 wc 的管道则提供所有文件的组合总计数。

 
     
 
 
后退<<上一页 继续>>下一页
[上一页][第1页][第2页][第3页][第4页][第5页][下一页]
 
内容导航  
第1页UNIX高手的十大习惯之.. 第2页二、谨慎引用变量
第3页三、传递空格分隔的列.. 第4页UNIX高手的十大习惯之..
第5页Unix
上一篇 : 提高UNIX工作效率 解析有.. 下一篇Photoshop极品美女打造性..
 
  您要为所发表的言论的后果负责,请各位遵纪守法并注意文明用语
标题:  

[ 关于本站 ] [ 广告服务 ] [ 商务合作 ] [ 联系我们 ] [ 合作伙伴 ] [ 法律顾问 ] [ 网站地图 ]
千橡公司 京ICP证041489号 Copyright (c) 1997-2007 All Right Reserved.