在路上...

The development of life
我们一直都在努力,有您的支持,将走得更远...

站内搜索: Google

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

find
F i n d是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。即使系统中含有网络文件系统( N F S ),f i n d命令在该文件系统中同样有效,只要你具有相应的权限。在运行一个非常消耗资源的f i n d命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指3 0 G字节以上的文件系统)。
F i n d命令的一般形式为:
find pathname -options [-print -exec -ok]
让我们来看看该命令的参数:
pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print find命令将匹配的文件输出到标准输出。
-exec find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' c o m m -
and' {} \;,注意{ }和\;之间的空格。
-ok 和- e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的s h e l l命令,
在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

echo

使用e c h o命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:
echo string

如果是LINUX系统,必须使用- n选项来禁止echo命令输出后换行

别忘了使用- e选项才能使转义符生效, 例如:
echo -e "this echo's 3 new lines \n\n\n"

cat

如果希望创建一个新文件,并向其中输入一些内容,只需使用c a t命令把标准输出重定向到该文件中,这时c a t命令的输入是标准输入—键盘,你输入一些文字,输入完毕后按< C T R L - D >结束输入。这真是一个非常简单的文字编辑器!
cat  >myfile

cat -v filename  可以显示文本里的控制字符。

tee

t e e命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。
例如:  who | tee  myfile
既将结果显示到终端上,又通过tee拷贝到 myfile (相当于 >)
tee -a  file   是追加到文件尾。(相当于>>).


标准输入、输出和错误

当我们在s h e l l中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件系统中实际上有1 2个文件描述符, 0、1、2是标准输入、输出和错误。可以任意使用文件描述符3到9。你可能会问为什么会有一个专门针对错误的特殊文件?这是由于很多人喜欢把错误单独保存到一个文件中,特别是在处理大的数据文件时,可能会产生很多错误。

常用文件重定向命令
command > filename                     把标准输出重定向到一个新文件中
command >> filename                   把标准输出重定向到一个文件中(追加)
command 1 > fielname                  把标准输出重定向到一个文件中
command > filename 2>&1           把标准输出和标准错误一起重定向到一个文件中
command 2 > filename                  把标准错误重定向到一个文件中
command 2 >> filename                把标准输出重定向到一个文件中(追加)
command >> filename 2>&1         把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2    把c o m m a n d命令以f i l e n a m e文件作为标准输入,以f i l e n a m e 2文件作为标准输出
command < filename                      把c o m m a n d命令以f i l e n a m e文件作为标准输入
command << delimiter                   把从标准输入中读入,直至遇到d e l i m i t e r分界符
command <&m                             把文件描述符m作为标准输入
command >&m                             把标准输出重定向到文件描述符m中
command <&-                              关闭标准输入

结合使用标准输出和标准错误

一个快速发现错误的方法就是,先将输出重定向到一个文件中,然后再把标准错误重定向到另外一个文件中。下面给出一个例子:我有两个审计文件,其中一个的确存在,而且包含一些信息,而另一个由于某种原因已
经不存在了(但我不知道)。我想把这两个文件合并到a c c o u n t s . o u t文件中。
$ cat account_qtr.doc account_end.doc 1>accounts.out 2>accounts.err
现在如果出现了错误,相应的错误将会保存在a c c o u n t s . e r r文件中。


合并标准输出和标准错误

在合并标准输出和标准错误的时候,切记s h e l l是从左至右分析相应的命令的。下面给出一个例子:
$ cleanup >cleanup.out 2>&1
在上面的例子中,我们将c l e a n u p脚本的输出重定向到c l e a n u p . o u t文件中,而且其错误也被重定向到相同的文件中。
$ grep "standard"* > grep.out 2>&1


exec
e x e c命令可以用来替代当前s h e l l;换句话说,并没有启动子s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个s h e l l。它的一般形式为:
exec command
其中的c o m m a n d通常是一个s h e l l脚本。
我所能够想像得出的描述e x e c命令最贴切的说法就是:它践踏了你当前的s h e l l
当这个脚本结束时,相应的会话可能就结束了。e x e c命令的一个常见用法就是在用户的. p r o f i l e最后执行时,用它来执行一些用于增强安全性的脚本。如果用户的输入无效,该s h e l l将被关闭,然后重新回到登录提示符。e x e c还常常被用来通过文件描述符打开文件。
记住, e x e c在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的s h e l l。


/dev/null实际上就是系统的垃圾箱。

posted on 2009-08-14 13:19  palam  阅读(146)  评论(0编辑  收藏  举报