高级shell特性

如果历史命令和命令补充等有用的shell特性不能工作,请看一下内容。

[b]1、环境变量[/b]
bash shell 维护大量已经执行命令、多种配置参数的设置、正在操作的环境等信息,其中很多信息存储在 shell 环境中,因此称作“环境变量(environment variable)。
可以通过输入 printenv 命令,来显示当前 shell 中所有环境变量的设置及其定义,如下所示:
[b]# [color=blue]printenv[/color][/b]
LESSKEY=/etc/lesskey.bin
NNTPSERVER=news
INFODIR=/usr/local/info:/usr/share/info:/usr/info
MANPATH=/usr/share/man:/usr/local/man:/usr/local/share/man:/usr/X11R6/man:/opt/gnome/share/man
HOSTNAME=test
HOME=/root
PATH=/sbin:/usr/sbin:/usr/local/sbin:/opt/gnome/sbin:/root/bin:/usr/local/bin
... ...
_=/usr/bin/printenv

环境变量名通常由大写字母和下划线组成,具有多种使用方式。
例如:
HOME 环境变量的值是一个包含用户主目录名的字符串;
PATH 环境变量是用冒号分开的目录列表,当查找已经执行过的命令时,shell顺序搜索这些目录;
PS1 环境变量定义了shell所显示提示的结构和内容;
“_” 环境变量(示例代码的最后一行) 表示用shell执行的最后一个命令的完成路径,在本例中,就是刚刚运行的 printenv 命令的完整路径。

可以在很多地方对环境变量进行设置:
* Linux 系统中位于/etc/profile、/etc/profile.local以及/etc/profile.d 目录中的系统配置文件。这些在每次登录系统时执行,用以帮助初始化工作环境的系统文件。
* 系统配置文件,如/etc/bashrc。这些文件通常在每次启动一个新shell以及对系统shell配置变量进行设置时,由用户个性化的bash配置文件执行。
* 用户特有的配置文件,如.bashrc,每次启动新shell时读取这个文件。
* 在shell脚本内,用于在该脚本内使用,或者导出到命令行环境。
* 为了方便从命令行设置,或在被shell执行的shell函数内设置。
通过使用 export 命令,让以后所有 shell 都可用的环境变量对父shell也可用。

经常我们在 PATH 环境变量的列分隔值中添加新目录,以便shell在该目录中访问可执行文件。
例如,系统安装了流行的Linux Firefox浏览器,Firefox通常安装在/usr/local/firefox目录下,实际执行以运行浏览器的二进制程序是/usr/local/firefox/firefox。可以通过输入 firefox 命令完整的代码来运行Firefox,但这样有些繁琐,更好的解决方案是把目录/usr/local/firefox 添加到PATH环境变量的值中。可以在当前shell下执行下面的命令来做到这一点:
export PATH=$PATH:/usr/local/firefox
输入这个命令后,可以在该shell下,通过简单地输入 firefox 并按下回车键,来执行 firefox 命令。

[b]注意:[/b]
在环境变量前带有“$”表示要引用该变量的值,而不是引用它的名称。
设置完环境变量后,可以在任何时候使用 unset 命令取消设置。unset 命令从执行它的shell中删除环境变量以及它的值。

[b]2、通配符和模式匹配[/b]
为了不需要完整地输入每一个文件名,并让识别特殊的文件变得更简单,Linux shell提供了大量不通的方法,来指定用于匹配特殊文件名的模式。
Linux shell提供的最基本模式匹配是两个特殊的字符,称为 通配符。它表示字符能与其他任何字符进行匹配。Linux shell支持的两个基本通配符如下:
* [b]星号(*)[/b] —— [color=red]也称作星形字符,它代表一行中的任意数量字符(包括无任何字符)。[/color]
* [b]问号(?) [/b]—— [color=red]代表任何单个字符[/color]。
除了这两个通配符外,Linux shell也支持在文件名中匹配特殊模式的其他两种方法:
* 在方括号中指定值的方位,用破折号分隔。例如,表达式 [1-3] 将于任何包含在1~3范围内的值相匹配。
* 在大括号(也成为波形括号)中指定用逗号分隔的值列表。例如,表达式{1,3}将与数字1或3相匹配。

例如,假定某一目录包含下面的文件:
file1 file1.doc file2 file2.doc
file3 file3.txt file8 other_file.doc

如何使用通配符、值的范围以及列表,与特殊的文件相匹配,如下:
Linux shell 中的模式匹配
[table]
| 模式 | 匹配的文件名
|
| * | file1,file1.doc,file2,file2.doc,file3,file3.txt,file8,other_file.doc
|
| file? |file1,file2,file3,file8
|
| *.doc |file1.doc,file2.doc,other_file.doc
|
| file?.doc |file1.doc,file2.doc
|
| file?.* |file1.doc,file1.doc,file3.txt
|
| file[1-3] |file1,file2,file3
|
| file{1,3} |file1,file3
|
| file{1,3}.{doc,txt} |file1.doc,file3.txt|
[/table]

[b]3、连接命令和重定向输入输出[/b]
UNIX和Linux提供了许多小且简单的命令,可以把这些命令连接在一起执行复杂的任务。
例如,一些操作系统可以提供专门命令,用于打印当前目录列表。在Linux系统中,可以通过把已有的列表命令(ls)和打印命令(lpr)连接成单独的命令序列来完成这个任务。在这个命令序列中,ls 命令的输出作为 lpr 命令的输入。
通过使用特殊的符号来连接这两个命令,该符号称作 [b]管道(|)[/b]。如下所示:
ls | lpr
Linux shell 把一个命令的输出连接到另一个命令的输入来提供该功能。


摘自《SUSE Linux 10 宝典》P35—P39
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值