`

高级shell特性

阅读更多
   如果历史命令和命令补充等有用的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
分享到:
评论

相关推荐

    UNIX shell范例精解(第4版)

    3. 高级shell特性:例如输入输出重定向、管道、进程替换、信号处理、正则表达式和文本处理工具(如grep、sed、awk)的集成使用。 4. shell脚本调试:介绍如何调试shell脚本,包括错误检查、跟踪执行和性能分析。 5...

    UNIX和shell程序设计权威教程

    4. 理解并应用高级Shell特性,如正则表达式、进程间通信和信号处理。 5. 提升在UNIX环境下的问题解决和自动化任务处理能力。 随着对UNIX和Shell的深入理解,你将能够更有效地利用这个强大的平台,无论是进行系统...

    shell精品教程shell精品教程shell精品教程

    **四、高级Shell特性** 1. **正则表达式**:在Shell中使用正则表达式进行文本匹配和操作。 2. **文件测试运算符**:利用`-f`, `-d`, `-e`等测试文件的属性。 3. **数组和关联数组**:在Bash中使用数组和关联数组...

    linux与unix shell编程指南Code代码

    chap29.zip:可能深入讲解了高级Shell特性,如变量的扩展、命令替换、进程控制,甚至可能涉及到了正则表达式的应用,这些都极大地增强了Shell脚本的灵活性和功能。 chap21.zip:这部分可能关注的是Shell脚本中的...

    LinuxShell脚本攻略,中英两份

    1. **高级Shell特性**:可能涉及数组、别名、函数、进程控制、信号处理等更复杂的话题。 2. **脚本优化**:讨论如何编写高效、可读性强的脚本,包括代码组织结构、最佳实践和性能调优。 3. **脚本库和模块化**:...

    LINUX与UNIX SHELL编程指南

    10. **高级特性**:探索高级SHELL特性,如过程替换、数组、别名、函数等,以及如何利用这些特性提高脚本的效率和可维护性。 通过阅读《LINUX与UNIX SHELL编程指南》,你将具备编写简单至复杂SHELL脚本的能力,能够...

    Mastering Unix shell programming

    9. **高级Shell特性**:探索更高级的特性,如进程控制(后台运行、信号处理)、数组、函数引用、子Shell等。 10. **自动化任务**:通过cron定时任务系统,学习如何安排定期执行的Shell脚本,实现自动化工作流程。 ...

    高级Shell脚本编程指南

    **高级Shell脚本编程指南** 在信息技术领域,Shell脚本是一种强大的工具,它允许用户通过命令行接口自动化执行一系列操作。对于系统管理员、开发者以及任何需要处理日常任务的人来说,掌握高级Shell脚本编程技巧是...

    Shell学习大全

    三、高级Shell特性 1. 输入/输出重定向:`>`用于覆盖输出,`>>`用于追加输出,`用于输入,`|`用于管道连接命令。还可以使用`&>`将标准输出和错误输出合并到同一个文件。 2. 命令替换:`$(command)`或``command``...

    linux下101个shell脚本

    三、高级Shell特性 1. **函数**:创建可重用的代码块,如`function myFunction() { ... }`。 2. **数组**:支持多值变量,`myArray=(value1 value2)`。 3. **逻辑运算符**:`&&`(与),`||`(或),`!`(非)。 4. ...

    操作系统模拟Shell课程设计源码

    6. **管道与重定向**:高级Shell特性如管道(`|`)允许连接命令,重定向(`>`,`)则可以改变输入输出流。实现这些功能需要熟悉进程间的管道通信及文件描述符的重定向。 7. **命令历史和自动补全**:为了提高用户...

    Linux&shell

    8. **高级Shell特性**:可能包含数组、函数、子Shell、进程控制等更复杂的话题。 9. **grep、sed和awk**:这三个强大的文本处理工具经常与Shell一起使用,用于搜索、替换和格式化文本。 通过学习这个指南,你可以...

    linux与shell编程指南

    在这一部分,书中深入讨论了函数、数组和别名等高级Shell特性。读者将学习如何编写可复用的函数,以及如何使用数组处理多值数据。此外,还会讲解Shell脚本调试技巧,帮助开发者找出并修复程序中的错误。 第四部分:...

    linuxshell命令 unixshell命令教程

    七、高级Shell特性 1. **alias**:创建命令别名,简化常用命令,如`alias ll='ls -l'`。 2. **history**:查看命令历史记录。 3. **tab补全**:在命令行输入部分命令后按Tab键,系统会自动补全。 掌握这些基本的...

    Sams_Unix Shell Programming, Third Edition-fly.chm

    8. **高级特性**:探讨数组、别名、函数、进程控制、信号处理等高级Shell特性,提升脚本的复杂性和功能性。 9. **Shell脚本实例**:通过实际案例分析,加深对Shell编程的理解,提高实际应用能力。 通过学习《Sams ...

    高级shell指南(适合想要提升自己shell能力的人)

    高级Shell指南针对那些希望深入理解和充分利用Shell功能的用户,旨在提升他们的Shell编程技巧和效率。下面,我们将深入探讨Shell的核心知识和高级应用。 1. **Shell基础**: - **Shell种类**:常见的Shell有Bash...

    linuxshell命令unixshell命令教程.rar

    三、高级Shell特性 1. **管道(|)**:将一个命令的输出作为另一个命令的输入,实现命令间的数据传递。 2. **重定向(> 和 <)**:改变命令的标准输出和输入,例如将输出保存到文件。 3. **通配符**:如*和?,用于...

Global site tag (gtag.js) - Google Analytics