1. Linux中的shell有哪些类型?Linux操作系统的缺省shell是什么?
Sh, csh, bash等. linux操作系统缺省的shell是bash?
2. shell有哪些通配符?各起什么作用?
*, ? , []
*表示匹配任意数目的任意字符。
?表示匹配任意一个字符
[]匹配再[]中定义的范围的字符,例如[0-9]表示匹配0->9的单个数字,[abc]表示匹配abc中的任意一个字符.[0-9a-z]表示匹配任意单个数字或者任意一个小写字符。[0-9]*表示匹配任意多个数字
+表示一个或多个
3. shell中有哪三种引号?它们的作用有什么不同?
“” 由双引号括起来的字符作为普通字符对待,除非是``,$,‘\’字符,这写字符表示特殊含义,但如果这些字符前加'\'则对这些字符进行转义,表示不要对这些字符进行特殊处理。
‘’由单引号阔气来的字符都作为一般字符对待。
``反短斜线,命令用反短斜线包括起来,表示将该命令的结果作为整个命令的一个部分。例如,查找某个目录下所有的包含某个字符串s的文件。
grep s `find dir`
find dir命令将返回目录下面的所有文件.grep 命令将会所有文件中查找含有字符串s的行。
如果使用管道 find dir|grep s,则find dir命令得到的所有文件名所组成的串将通过管道传输给grep命令,因此grep命令查找到的是文件名中包含字符串s的文件。
4. 要统计/usr/bin目录下的文件个数,用重定向和管道分别完成,怎样做?
管道:
ls -lR|grep '^-'|wc -l
ls -lR列出当前目录下所有的文件,包括子目录下的文件
grep '^-'过滤特殊文件,剩下的都是一般文件,^表示非的意思好像
wc -l统计行数,得到文件数目。
也可以使用find命令
find ./ -type f|wc -l
不统计子目录:
find ./ -maxdepth 1 -type f|wc -l
重定向:
5. 命令替换与重定向有何区别?举例说明。
命令替换将命令得到的结果作为命令的一个参数。比如命令得到的结果是文件,那么这个文件将作为整个命令行的参数。重定向将命令结果形成的字符串作为管道另一端命令的一个参数。比如命令得到的结果也是文件,但是管道的另一端的命令得到的只是该文件的字符串作为的参数。
昨天回去请教了一下,现在我的理解是这样的:命令替换就是把命令执行的结果做为整行命令的参数,有点象宏替换似的。管道则是将一个命令的输出作为另一个命令的输入,另一个命令就好像是从标准输入中得到这些数据似的。

