`

高级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
分享到:
评论

相关推荐

    高级Bash Shell脚本编程指南

    这本使用大量的例子详细地介绍了Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash 的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用...

    Shell高级编程(中文版)

    Shell高级编程(中文版) 毫无疑问,UNIX/Linux 最重要的软件之一就是 shell,目前最流行的 shell 被称为 Bash(Bourne Again Shell), 几乎所有的 Linux 和绝大部分的 UNIX 都可以使用 Bash。作为系统与用户之间的交互...

    Linux下Shell编程

    shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的...

    高级shell编程指南

    这本书使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。 英文版的作者Mendel Cooper对...

    linnux下Shell编程基础

    Shell本身是一个用C语言编写的...因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。

    shell编程基本语法

    shell编程基本语法,介绍shell的基本用法,和简单的高级特性,适合入门,。。。。

    高级Bash脚本编程指南(中文版)

    了 Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解 Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能...

    shell (用C语言编写的程序)

    Shell本身是一个用C语言编写的...因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度

    Unix Shell编程基础篇

    熟练编写Unix Shell程序,内容提纲: Shell介绍 Shell脚本介绍 Shell特性 正则表达式 变量与运算符 Shell的输入与输出 Shell函数 脚本调试 高级编程技巧 Shell工具

    linux下shell编程

    shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的...

    Linux的shell编程

    Linux的桥梁。...因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。

    Shell脚本教程资源合集

    因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 本资源是Shell脚本教程合集, ...

    shellunix编程前五章

    Shell本身是一个用C语言编写的...因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。

    Unix Shell编程(第三版)

    包括Unix基本命令、Shell编程要用到的主要工具、Shell程序的基本内容以及子Shell编程中的高级特性。 ■一个程序有多种实现方法,本书分别采用不同的编程方法实现同一功能,读者通过研究不断改进的程序范例,不但可以...

    高级Bash脚本编程指南_手册CHM版

    这本使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用...

    高级bash编程指南.pdf

    了Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能肯定...

    Unix教程基础篇(内容包括UNIX的基本特性及高级性能)

    本书从实质上、专业上讲解UNIX操作系统...内容包括UNIX的基本特性及高级性能,例如shell配置、目录管理、shell编程,编辑器的使用方法等。本书条理清晰、重点突出,为快速了解与掌握UNIX操作系统提供了极有价值的参考。

    高级Bash 脚本编程指南

    了Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能肯定...

    高级Bash脚本编程指南

    了Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能肯定...

Global site tag (gtag.js) - Google Analytics