Xargs用法一例

起因要从[Tomboy][]和同步说起,想同步两台电脑上tomboy的数据,“Start page”冲突也就算了,我用其他的,要命的是数据文件同步之后,tomboy必须要重新启动才能重新读取数据文件,所以要用ps x找出tomboy进程,杀掉再重新启动,如果是使用默认的applet方式,gnome会自动提示是否重新加载的。总的ps x命令如下:

ps x|grep -m1 tomboy|awk '{print $1}'| xargs -I'{}' kill '{}'

功能解释如下

  • ps x就不用说了
  • grep是用来查找进程列表中带有tomboy文字的,-m1是只找出第一个匹配,因为第二个匹配会是ps x本身
  • awk是用来打印第一列的
  • xargs中的-I指定用'{}'kill命令中来代表输入参数,在本例中可以省略的。

以上命令组合起来就可以比较“智能”的完成任务了,和find -exec有些类似。

另外我发现tomboy的“Start Here”是不让删除的,不过把标题改一下就可以删了。。。

PS1: 发现hexdump可以以16进制形式显示文件内容,比如一个内容为01234567890的文件:

$ hexdump a
0000000 3130 3332 3534 3736 3938 0a30          
000000c

注意这种默认的输出方式,字的高位可低位是反的,比如代表0的30就排在代表1的31的后面。也可以通过参数指定输出的方式,比如-b是逐字节按8进制输出:

$ hexdump a -b
0000000 060 061 062 063 064 065 066 067 070 071 060 012                
000000c

-c是逐字符输出,转义字符会输出为\n这种形式:

$ hexdump a -c
0000000   0   1   2   3   4   5   6   7   8   9   0  \\n                
000000c

-C是16进制逐字输出,后面还显示原始字符,有点像Ultraedit里面的那种感觉:

$ hexdump a -C
00000000  30 31 32 33 34 35 36 37  38 39 30 0a              |01234567890.|
0000000c

PS2: 今天在公交车上看新闻联播的时候在想,cctv的新闻联播有版权么?应该是有,那为何那么多地方电视台天天“转播”新闻联播,他们都交版权费了么?同样的还有纯洁春节晚会,天气预报,焦点访谈等等,都收点钱的话央视又能大赚一笔。

Update @ 2007-05-06

上述用xargs实现kill指定进程的方式纯属演示xargs的功能,杀指定进程用pkill pattern更方便,甚至还支持正则表达式,感谢[fcicq](http://www.fcicq.net/wp/)。

One thought on “Xargs用法一例”

Leave a Reply

Your email address will not be published. Required fields are marked *