如果历史命令和命令补充等有用的shell特性不能工作,请看一下内容。
1、环境变量
bash shell 维护大量已经执行命令、多种配置参数的设置、正在操作的环境等信息,其中很多信息存储在 shell 环境中,因此称作“环境变量(environment variable)。
可以通过输入 printenv 命令,来显示当前 shell 中所有环境变量的设置及其定义,如下所示:
# printenv
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 命令。
注意:
在环境变量前带有“$”表示要引用该变量的值,而不是引用它的名称。
设置完环境变量后,可以在任何时候使用 unset 命令取消设置。unset 命令从执行它的shell中删除环境变量以及它的值。
2、通配符和模式匹配
为了不需要完整地输入每一个文件名,并让识别特殊的文件变得更简单,Linux shell提供了大量不通的方法,来指定用于匹配特殊文件名的模式。
Linux shell提供的最基本模式匹配是两个特殊的字符,称为 通配符。它表示字符能与其他任何字符进行匹配。Linux shell支持的两个基本通配符如下:
*
星号(*) ——
也称作星形字符,它代表一行中的任意数量字符(包括无任何字符)。
*
问号(?) ——
代表任何单个字符。
除了这两个通配符外,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 中的模式匹配
模式 | 匹配的文件名 |
|
* | 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 |
3、连接命令和重定向输入输出
UNIX和Linux提供了许多小且简单的命令,可以把这些命令连接在一起执行复杂的任务。
例如,一些操作系统可以提供专门命令,用于打印当前目录列表。在Linux系统中,可以通过把已有的列表命令(ls)和打印命令(lpr)连接成单独的命令序列来完成这个任务。在这个命令序列中,ls 命令的输出作为 lpr 命令的输入。
通过使用特殊的符号来连接这两个命令,该符号称作
管道(|)。如下所示:
ls | lpr
Linux shell 把一个命令的输出连接到另一个命令的输入来提供该功能。
摘自《SUSE Linux 10 宝典》P35—P39
分享到:
相关推荐
3. 高级shell特性:例如输入输出重定向、管道、进程替换、信号处理、正则表达式和文本处理工具(如grep、sed、awk)的集成使用。 4. shell脚本调试:介绍如何调试shell脚本,包括错误检查、跟踪执行和性能分析。 5...
4. 理解并应用高级Shell特性,如正则表达式、进程间通信和信号处理。 5. 提升在UNIX环境下的问题解决和自动化任务处理能力。 随着对UNIX和Shell的深入理解,你将能够更有效地利用这个强大的平台,无论是进行系统...
**四、高级Shell特性** 1. **正则表达式**:在Shell中使用正则表达式进行文本匹配和操作。 2. **文件测试运算符**:利用`-f`, `-d`, `-e`等测试文件的属性。 3. **数组和关联数组**:在Bash中使用数组和关联数组...
chap29.zip:可能深入讲解了高级Shell特性,如变量的扩展、命令替换、进程控制,甚至可能涉及到了正则表达式的应用,这些都极大地增强了Shell脚本的灵活性和功能。 chap21.zip:这部分可能关注的是Shell脚本中的...
1. **高级Shell特性**:可能涉及数组、别名、函数、进程控制、信号处理等更复杂的话题。 2. **脚本优化**:讨论如何编写高效、可读性强的脚本,包括代码组织结构、最佳实践和性能调优。 3. **脚本库和模块化**:...
10. **高级特性**:探索高级SHELL特性,如过程替换、数组、别名、函数等,以及如何利用这些特性提高脚本的效率和可维护性。 通过阅读《LINUX与UNIX SHELL编程指南》,你将具备编写简单至复杂SHELL脚本的能力,能够...
9. **高级Shell特性**:探索更高级的特性,如进程控制(后台运行、信号处理)、数组、函数引用、子Shell等。 10. **自动化任务**:通过cron定时任务系统,学习如何安排定期执行的Shell脚本,实现自动化工作流程。 ...
**高级Shell脚本编程指南** 在信息技术领域,Shell脚本是一种强大的工具,它允许用户通过命令行接口自动化执行一系列操作。对于系统管理员、开发者以及任何需要处理日常任务的人来说,掌握高级Shell脚本编程技巧是...
三、高级Shell特性 1. 输入/输出重定向:`>`用于覆盖输出,`>>`用于追加输出,`用于输入,`|`用于管道连接命令。还可以使用`&>`将标准输出和错误输出合并到同一个文件。 2. 命令替换:`$(command)`或``command``...
三、高级Shell特性 1. **函数**:创建可重用的代码块,如`function myFunction() { ... }`。 2. **数组**:支持多值变量,`myArray=(value1 value2)`。 3. **逻辑运算符**:`&&`(与),`||`(或),`!`(非)。 4. ...
6. **管道与重定向**:高级Shell特性如管道(`|`)允许连接命令,重定向(`>`,`)则可以改变输入输出流。实现这些功能需要熟悉进程间的管道通信及文件描述符的重定向。 7. **命令历史和自动补全**:为了提高用户...
8. **高级Shell特性**:可能包含数组、函数、子Shell、进程控制等更复杂的话题。 9. **grep、sed和awk**:这三个强大的文本处理工具经常与Shell一起使用,用于搜索、替换和格式化文本。 通过学习这个指南,你可以...
在这一部分,书中深入讨论了函数、数组和别名等高级Shell特性。读者将学习如何编写可复用的函数,以及如何使用数组处理多值数据。此外,还会讲解Shell脚本调试技巧,帮助开发者找出并修复程序中的错误。 第四部分:...
七、高级Shell特性 1. **alias**:创建命令别名,简化常用命令,如`alias ll='ls -l'`。 2. **history**:查看命令历史记录。 3. **tab补全**:在命令行输入部分命令后按Tab键,系统会自动补全。 掌握这些基本的...
8. **高级特性**:探讨数组、别名、函数、进程控制、信号处理等高级Shell特性,提升脚本的复杂性和功能性。 9. **Shell脚本实例**:通过实际案例分析,加深对Shell编程的理解,提高实际应用能力。 通过学习《Sams ...
高级Shell指南针对那些希望深入理解和充分利用Shell功能的用户,旨在提升他们的Shell编程技巧和效率。下面,我们将深入探讨Shell的核心知识和高级应用。 1. **Shell基础**: - **Shell种类**:常见的Shell有Bash...
三、高级Shell特性 1. **管道(|)**:将一个命令的输出作为另一个命令的输入,实现命令间的数据传递。 2. **重定向(> 和 <)**:改变命令的标准输出和输入,例如将输出保存到文件。 3. **通配符**:如*和?,用于...