[问题]求教命令管道的一种用法

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

[问题]求教命令管道的一种用法

#1

帖子 xrfang » 2007-04-05 13:34

我经常使用类似以下的命令:

代码: 全选

ps ax |grep httpd
以上代码检查apache进程是不是在运行。

但我对这种用发不知道对否:

代码: 全选

sudo find / |grep -e \\.keys\$ |grep scite -
以上管道的意图是:第一步,列出出系统所有文件; 第二步,过滤这个列表,只要留下后缀为.keys的文件名;第三步,查找这些文件中有没有含有scite字符串。

关键的疑惑是第三步(前两步是得到我想要的效果的)。第三步的意图是在文件内容里寻找字符串,而不是在文件命列表(即上个管道的输出)里面寻找。

我在一些地方看到了用一个”-“符号的方法,但纯属瞎猜。请高手指点。谢谢。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2007-04-05 13:53

grep searches the named input FILEs (or standard input if no files are
named, or the file name - is given)
for lines containing a match to the
given PATTERN. By default, grep prints the matching lines.
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#3

帖子 laborer » 2007-04-05 13:57

可以用

代码: 全选

locate .keys | xargs grep scite
头像
xrfang
帖子: 1116
注册时间: 2006-12-08 10:21

#4

帖子 xrfang » 2007-04-05 14:32

谢谢。

我看了xargs,对我这个情况应该是可以用的。但有一个问题。

比如:

locate .txt |xargs cat

假设找到2个文件a.txt, b.txt

xargs就会试图执行命令"cat a.txt b.txt"

有没有办法让它执行"cat a.txt",然后再执行”cat b.txt"? 对于cat可能是一样的,但我觉得会有需要让它分开执行。
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#5

帖子 laborer » 2007-04-07 3:04

代码: 全选

locate .txt | xargs -n 1 cat
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
回复