原创 SHELL学习笔记(2)

2006-10-19 17:35 3919 7 5 分类: 软件与OS

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实际上就是系统的垃圾箱。

文章评论1条评论)

登录后参与讨论

用户1053025 2006-10-20 09:53

欢迎来到EDN,我先占个一楼,哈哈。
相关推荐阅读
用户479067 2008-03-31 10:03
资源网站
http://softdata.studa.com           //下载 http://ibook8.com/http://www.dzzl.cn/   电子资料城www.ithao123.c...
用户479067 2008-02-28 17:53
地的分类
1. 信号“地”;信号“地”又称参考“地”,就是零电位的参考点,也是构成电路信号回路的公共段,图形符号“⊥”。1) 直流地:直流电路“地”,零电位参考点。2) 交流地:交流电的零线。应与地线区别开。3...
用户479067 2008-02-28 17:52
0欧姆电阻的作用
0欧姆电阻的作用大概有以下几个功能:①做为跳线使用。这样既美观,安装也方便。②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接。我们可以用一个0欧的电阻来连接这两个地,而不是直接连在一起。这...
用户479067 2008-02-28 17:48
上拉电阻
上拉电阻:1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。2、OC门电路必须加...
用户479067 2008-02-28 17:46
电平转换方案
 1. 常用的电平转换方案(1) 晶体管+上拉电阻法    就是一个双极型三极管或 MOSFET,C/D极接一个上拉电阻到正电源,输入电平很灵活,输出电平大致就是正电源电平。(2) OC/OD 器件+...
用户479067 2008-02-28 17:40
字节对齐
字节对齐一、概念    对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然...
我要评论
1
7
关闭 站长推荐上一条 /2 下一条