查找list.TXT的文件

查找位于跟目录以及其子目录下的名为list.TXT的文件,并将查询结果存储到/tmp目录下的myfind文件中的unix指令是:find/-name()... 查找位于跟目录以及其子目录下的名为list.TXT的文件,并将查询结果存储到/tmp目录下的myfind文件中的unix指令是:find / -name( ) 展开
 我来答
匿名用户
2013-07-10
展开全部
ls -l这个命令,将当前目录下的文件显示出来(类似于DOS下的dir命令)。然后用输出重定向操作符 > 来将输出重定向到list.txt文件中。这样,ls的输入就不再输出到屏幕,而是输出到list.txt文件中了。然后用cat list.txt命令查看list.txt文件的内容,得到如上输入。
虽然标准输出和标准报错都是输出到屏幕,但这是两种不同的输出,使用两个不同的流文件。重定向标准报错的时候,就不能用 > 这个操作符,而需要使用 2> 这个操作符。如
$ myprog >stdout.txt 2>stderr.txt
这样,就将标准输出重定向到了stdout.txt中,而将标准输入重定向到了stderr.txt中。
对于输入重定向和报错的重定向,还有一点需要注意:你将输出或者报错重定向到了一个文件,如果这个文件不存在,则建立这样一个文件。如果这个文件存在,则这个文件中的所有内容都将被清除,而以标准输入中的内容取而代之。如果你想将新的内容输入到文件尾,则需要用 >> 这个追加操作符。如上例中,
$ ls -l >> list.txt
则将标准输入的内容追加到了list.txt的文件尾。

同时,还有一个管道操作。管道操作的意思是,有一串命令,利用管道操作符 | ,可以将前一个命令的输出当做后一个命令的输入,以此类推。如:
$ ls /usr/bin | more
[
4odb
4rdf
4xslt
4xupdate
a2p
a2ps
ab
aclocal
……
这个命令的意思是,将/usr/bin下的文件及目录名输出,然后利用more将这个输出分屏显示。就好像将前一个命令的输出,装入了一个管子后传到了下一个命令当做输入来使用。
合理使用重定向及管道操作,可以使Linux命令的威力倍增。

Linux支持通配符。所谓通配符,是指 * 和 ? 这两个字符。* 可以匹配任意多个字符,而 ? 只能匹配单个字符。如: a* 可以代表 ab,abc,ac,acdef等等。而a?则只能代表ab,ac,ad……等等。
除了用*和?来匹配一个或者多个字符外,你也可以指定一个字符清单,用来匹配清单中出现的任意一个字符。字符清单要列在一对[]内,如:
tty?[1234],可以代表tty1,tty2,tty3,tty4这四个词。
tty?[ace],可以代表ttya,ttyc,ttye这三个词。
如果字符清单是单纯的连续的字母或者数字,还可以这样写:
tty?[1-4],与tty?[1234]同样。
tty?[a-e],与tty?[abcde]同样。
另外还有一种写法,即:指定字(不是字符)清单。字(word)清单要包含在一对{}中,用 , 分隔开,其用法举例如下:
$ mkdir /tmp/{bin,tmp,lst}
这个命令,在/tmp/下建立了bin,tmp,lst三个子目录。

除此之外,Linux的各种shell下还提供了丰富的命令操作功能 。下面简要介绍一下:
* 命令补全功能
命令补全功能是指,当你输入一个命令的一部分后,按下<Tab>键,shell会尝试自动补全不完整的功能。如果你的输入太短,以至于 shell无法判定你要输入的命令是什么的时候,会蜂鸣一声以示提示。在这个时候,在某些shell如bash下,如果你再按一次< Tab>,shell则会将所有匹配你输入的命令列出以供你选择。类似地,当你使用一个文件名做为命令的参数的时候,shell也会尝试着去补全这个命令。如下例
$ ls
bin include lib list.txt okdata OkProg src test
$ ls t
输入到这个的时候,按下<Tab>键。由于在当前目录下,只包含test一个以t开头的文件/目录,所以shell自动补全这个文件名,成了这样:
$ ls test/
* 命令历史记录
当你新开了一个shell,进行操作的时候,shell会将你的一部分操作记录下来。保存的操作数目是在$history这个系统变量中保存的。如$ history的值是1000,代表shell将会保存最近的1000次操作。你可以用history命令来查看历史操作。如:
$ history
……
53 22:59 cl
53 22:59 ls -l > list.txt
54 22:59 cat list.txt
……
59 23:10 ls /ur/bin | more
60 23:17 mkdir /tmp/{bin,tmp,lst}
……
上面表示的是输出的一部分。
使用历史命令记录,可以使你省下很多烦琐的输入。在shell提示符下按方向键的上下,就可以选择历史命令。当你输入命令的一部分后按Esc+P,就可以调出最近的一次与你的输入最匹配的操作。如:我现在输入h后按下Esc+P组合键,则显示history,按回车即可执行。
使用!<number>则可调用第<number>次操作。从上面history的输入可以知道第60次操作是mkdir /tmp{bin,tmp,lst},那么如果我输入!60后按回车,则直接再次执行这个操作。
使用!<key>则可以调用与<key>匹配的最近的一次操作。如我输入!ca,则会调用第54次操作的cat list.txt
使用!!可以重复上一次的操作。
此外,还可以对命令中的任何位置(不只局限于开始部分)出现的字符进行搜索。被搜索的字符串应该放在两个?中间。如:
$ !?dir?
会找到 mkdir /tmp/{bin,tmp,lst} 这条历史命令。注意:在这里,?不是通配符,而是一种叫做“正则表达式”的式子。如果第二个字符串后面没有东西,则可以省略。
同样,Linux的shell还允许你对历史命令中的一部分稍加修改后执行,修改用到的方法是:s/old/new/,将old换成new。我们要将mkdir /tmp/{bin,tmp,lst}中的bin改成my后执行,则可以这样:
$ !?kdir?:s/bin/my
实际上,这也是一种正则表达式。正则表达示是Linux下一个强大的工具,可以用来进行复杂的匹配,或者模糊查找,等等。关于正则表达式,我们会在以后涉及到。
当然,我只是为了举个例子,才写这样的命令的。对于简单的命令,这还不如直接写一遍来得迅速。另外,不像DOS只有一个command.com,Linux下有很多的shell,如tcsh,bash等等。在不同的shell中,这些操作方法会有稍许不同。
在Linux下,你还可以编辑shell脚本(类似于MS-DOS下的批处理命令,但功能更为强大)。也可以使用命令函数。这些内容我们暂且搁置。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式