现在的位置: 首页 > 综合 > 正文

linux_shell学习总结(2)…

2013年09月03日 ⁄ 综合 ⁄ 共 2856字 ⁄ 字号 评论关闭

1. 特殊字符

* 匹配文件名中的任何字符串,包括空字符串。

? 匹配文件名中的任何单个字符。

[...] 匹配[ ]中所包含的任何字符。

[!...] 匹配[ ]中非感叹号!之后的字符。

s h e l l 遇到上述字符时,就会把它们当作特殊字符,而不是文件名中的普通字符,这样用

户就可以用它们来匹配相应的文件名。

1*:使用星号*可以匹配文件名中的任何字符串。就不用多说了,和win 下差不多

2、?:使用可以匹配文件名中的任何单个字符。和win 差不多

3[]:使用[
. . . ]
可以用来匹配方括号[ ]中的任何字符。可以使用一个横杠-来连接两个字

母或数字,以此来表示一个范围。

1)列出以i
o 开头的文件名:

代码:

#ls [io]*

2)列出log.开头、后面跟随一个数字、然后可以是任意字符串的文件名:

代码:

#ls
log.[0-9]*

3)与例二相反,列出log.开头、后面不跟随一个数字、然后可以是任意字符串的文件名

代码:

#ls
log.[!0-9]*

4)列出所有以LPS
开头、中间可以是任何两个字符,最后以1 结尾的文件名:

代码:

#ls LPS??1

5)列出所有以大写字母开头的文件名:

代码:

$ ls [A-Z]*

6)列出所有以小写字母开头的文件名:

代码:

$ ls [a-z]*

7)为了列出所有以数字开头的文件名:

代码:

$ ls [0-9]*

8)列出所有以.
开头的文件名(隐含文件,例如. p r o f i l e. r h o s t s. h i s t o r y

等):

代码:

$ ls .*

 

2.

cat:显示文件内容,创建文件,还可以用它来显示控制字符

c a t 命令的一般形式为:

代码:

cat
[options] filename1 ... filename2 ...

1显示名为m y f i l e 的文件:

代码:

$ cat
myfile

2)新建文件

代码:

$cat
>myfile

This is
great

<ctrl-d>

$cat myfile

This is
great

 

cat:参数选项

使用方式:

代码:

cat
[-AbeEnstTuv] [--help] [--version] fileName

说明:把档案串连接后传到基本输出(萤幕或加
> fileName 到另一个档案)

参数:

引用:

-n --number 1 开始对所有输出的行数编号

-b --number-nonblank -n 相似,只不过对于空白行不编号

-s --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

-v --show-nonprinting 显示非打印字符

例:

显示时加上行号

代码:

$cp
/etc/httpd/conf/httpd /usr/sam

$ cat -n
httpd.conf

httpd.conf 的内容加上行号后输入
httpd1.conf 这个文件里

代码:

$cat -n
httpd.conf > httpd1.conf

对文件httpd.conf 加上行号(空白不加)后显示

代码:

$ cat -b
httpd.conf

textfile1 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到
textfile3

里。

代码:

$ cat -b
textfile1 textfile2 >> textfile3

清空/etc/test.txt 档案内容

代码:

$cat
/dev/null > /etc/test.txt

 

3.

tee:读取标准输入的数据,并将其内容输出成文件。

语 法:tee [-ai][--help][--version][文件…]

补充说明:tee 指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存

成文件。我们可利用tee 把管道导入的数据存成文件,甚至一次保存数份文件。

参 数:-a 附加到既有文件的面,而非覆盖它。如果给予tee 指令的文件名称已经存在,

预设会覆盖该文件的内容。加上此参数,数据会新增在该文件内容的最面,而不会删除原先之内

容。

-i 忽略中断信号

--help 在线帮助

--version 显示版本信息

例一:

列出文本文件slayers.story 的内容,同时复制3 份副本,文件名称分别为ss-copy1

ss-copy2ss-copy3

代码:

$ cat
slayers.story |tee ss-copy1 ss-copy2 ss-copy3

例一: 把列出当前目录,并把结果结到myfile

代码:

$ls -l |tee
myfile

 

4.

标准输入、输出和错误

当我们在s h e l l 中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述

符来引用这些文件。由于文件描述符不容易记忆,
s h e l l 同时也给出了相应的文件名。

下面就是这些文件描述符及它们通常所对应的文件名:

引用:

文件文件描述符

输入文件—标准输入0:它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。

输出文件—标准输出1:它是命令的输出,缺省是屏幕,也可以是文件。

错误输出文件—标准错误2:这是命令错误的输出,缺省是屏幕,同样也可以是文件。

如果没有特别指定文件说明符,命令将使用缺省的文件说明符(你的屏幕,更确切地说是你的终

端)。

系统中实际上有1 2 个文件描述符,但是正如我们在上表中所看到的,
012 是标准输入、

输出和错误。可以任意使用文件描述符3 9

在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。

5 - 1 列出了最常用的重定向组合,并给出了相应的文件描述符。

在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必

需的。

代码:

常用文件重定向命令

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
<&-
把关闭标准输入

5.

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

 

抱歉!评论已关闭.