三、深入Shell
1、通配符
Shell命令中可以使用通配符来同时匹配多个文件方便操作。Linux的通配符除了 MSDOS中常用的“*”和“?”外,还包括“[]”和“!”组成的字符组模式,能够扩充需要匹配的文件的范围。
1. 通配符“*”
通配符“*”代表任意长度的任何字符,如“a*”可表示诸如“abc”“about”等以“a”开头的字符串。需要注意的是通配符不能与开头的文件名匹配。例如,“*”不能匹配到名为“.file”的文件,而必须使用“.*”才能匹配到类似“.file”的文件。
2. 通配符“?”
通配符“?”代表任何一个字符,如“a?”就可表示诸如“ab”“at”等以“a”开头并仅有两个字符的字符串。
3. 字符组通配符“[ ]”“-”和“!”
“[ ]”表示指定的字符范围,“[ ]”内的任意一个字符都用于匹配。“[ ]”内的字符范围可以由直接给出的字符组成,也可以由起始字符、和终止字符组成。例如,“[abc]*”或“[a-c]*”都表示所有以“a”“b”或者“C”开头的字符串。而如果使用“!”,则表示不在此范围之内的其他字符。
通配符在指定一系列文件名时非常有用,例如:
| 命令 | 作用 |
|---|---|
ls *.png | 列出所有PNG图片文件 |
ls a? | 列出首字母是a, 文件名只有两个字符的所有文件 |
ls [abc]* | 列出首字母是a、b或者c的所有文件 |
ls [!abc]* | 列出首字母不是a、b、c的所有文件 |
ls [a-z]* | 列出首字母是小写字母的所有文件 |
2、重定向
Linux中通常利用键盘输人数据,而命令的执行结果和错误信息都输出到屏幕。也就是说,Linux的标准输人是键盘,标准输出和标准错误输出是屏幕。
Shell中不使用系统的标准输人、标准输出或标准错误输出端口,重新指定至文件的情况称为重定向。根据输出效果的不同,与输出相关的重定向可分为输出重定向、附加输出重定向和错误输出重定向 3种。与输人相关的重定向只有一种,称为输人重定向。
1. 输出重定向
输出重定向就是命令执行的结果不在标准输出(屏幕)上显示,而是保存到某一文件的操作,利用符号">"来实现。
例:将当前目录中所有文件和子目录的详细信息保存到list文件。
[jerry@centos ~]$ls -al >list
[jerry@centos ~]$
ls -al命令显示当前目录中所有文件和子目录的详细信息,一般情况下应在屏幕上显示送些信息。而命令中使用输出重定向符号">"和文件名后,屏幕上就不会出现任何信息,而将本应出现在屏幕上的内容全部保存到指定的文件中。指定的文件并不需要预先创建,输出重定向能新建命令中指定的文件。而如果指定的文件已存在,则其原有内容将被覆盖。
cat命令可用于查看文本文件的内容,而如果与输出重定向相配合,则有更加强大的功能。
- 创建文本文件
格式:cat >文件
说明:输入此类命令后,屏幕光标闪烁,用户输入文件内容。所有的内容输入完成后,按【Enter】键将光标移动到下一行,然后按【Ctrl+D】组合键结束输入,再次出现Shell命令提示符.
- 合并文本文件
格式:cat 文件列表 > 文件
说明:将文件列表中所有文件的内容合并到指定文件。
2. 附加输出重定向
附加输出重定向的功能与输出重定向基本相同。两者的不同之处在于:附加输出重定向将输出内容追加到原有内容的后面,而不会覆盖其内容,利用符号">>"来实现附加输出重定向功能。
3. 错误输出重定向
Shell中标准输出与错误输出是两个独立的输出操作。标准输出是输出命令执行的结果,而错误输出是输出命令执行中的错误信息。错误输出也进行重定向,并可分为下两种情况:
- 程序的执行结果显示在屏幕上,而错误信息重定向到指定文件,使用"
2>"符号。 - 程序的执行结果和错误信息都重定向到同一文件,使用"
&>"符号。
4. 输入重定向
输人重定向跟输出重定向完全相反,是指不从标准输入(键盘)读人数据,而是从文件读入数据,用"<"符号来实现。由于大多数命令都以参数的形式在命令行上指定输人文件,所以输人重定向并不常使用。但是,少数命令(如patch命令)不接受文件名作为参数,必须使用输人重定向。
3、管道
管道是Shell的另一大特征,其将多个命令前后连接起来形成一个管道流。管道流中的每一个命令都作为一个单独的进程运行,前一命令的输出结果传送到后一命令作为输入,从左到右依次执行每个命令。利用"|"符号实现管道功能。综合利用重定向和管道能够完成一些比授复杂的操作。
4、历史记录
利用Shell命令进行操作时,用户需要多次反复输人相关的命令行,这比较费时且不太方便。为避免用户的重复劳动,Shell提供历史记录、别名和自动补全等功能,简化Shell命令输人工作。
1. 历史记录简介
Shell记录一定数量的已执行的命令,当需要再次执行时,不用再次输人,直接调用即可。用户主目录中名为.bash_history的隐藏文件,用于保存曾执行过的Shell命令。每当用户退出登录或关机后,本次操作中使用过的所有Shell命令就会追加保存在该文件中。Bash默认最多保存1000条Shell命令的历史记录。
2. 利用历史记录的方法
-
使用上下方向键、【
PgUp】或【PgDn】键,在Shell命令提示符后出现已执行过的命令。直接按【Enter】键就可再次执行这一命令,也可以对历史记录进行编辑,修改为用户所需的命令后再执行。 -
先利用
history命令查看Shell命令的历史记录,然后调用已执行过的Shell命令。
格式:history [数字]
功能:查看Shell命令的历史记录。如果不使用数字参数,则查看Shell命令的所有历史记录。如果使用数字参数,则查看最近执行过的指定个数的Shell命令。
3. 再次执行已执行过的Shell命令
格式:!序号
功能:执行指定序号的Shell命令,而"!!"命令再次执行刚刚执行过的那个Shell命令。
5、别名
別名是按照Shell命令标准格式所写命令行的缩写,用以减少输人,方便使用。用户只要输人别名命令,就执行对应的Shell命令。alias命令可查看和设置别名。
格式:alias [别名=1标准Shell命令行,]
功能:查看和设置别名。
1. 查看别名
无参数的alias命令查看用户可使用的所有别名命令及其对应的标准Shell命令。
Shell规定:当别名命令与标准Shell命令同名时,別名命令优先于标准Shell命令执行。也就是说,在Shell命令的提示符后输入ls命令时,其真正执行的并不是标准的ls命令,而是ls别名命令,即执行ls --color= auto命令。如果要使用标准的Shell命令,需要在命令名前添加"\“字符,即输人”\ls"命令将执行标准的ls命令。
2. 设置别名
使用带参数的alias命令可设置用户的别名命令。在设置別名时,"="的两边不能有空格,并在标准Shell命令行的两端使用单引号。将用户经常使用的命令设置为别名命令将大大提高工作效率。
6、自动补全
自动补全,是指用户在输人命令时不需要输人完整的命令,只需要输人前几个字母,系统会自动找出匹配的文件或命令,避免输入时出现差错。利用【Tab】键实现自动补全功能。
- 自动补全文件或目录名
- 自动补全命令名
本文深入介绍了Linux Shell的使用。涵盖通配符,如“*”“?”等用于匹配文件;重定向,包括输出、附加输出、错误输出和输入重定向;管道可连接多个命令;还有历史记录方便再次执行命令,别名可简化输入,自动补全能避免输入差错。
1656





