bash参考手册之六(Bash特性)

6 Bash 特性


这部分描述Bash独有的特性。
*  调用Bash : Bash可以接受的命令行选项。
*  Bash启动文件 : Bash何时及如何执行脚本。
*  交互Shell : 什么是交互式shell。
*  Bash条件表达式 : 内建命令test用到的表达式元素。
*  shell算术 : shell变量的算术。
*  别名 : 给命令另一个名字。
*  数组 : 数组变量。
*  目录堆栈 : 访问过的目录历史。
*  打印提示符 : 控制PS1字符串。
*  限制shell : 对shell执行的更多控制模式。
*  Bash POSIX 模式 : 使得Bash的行为更接近POSIX标准。


6.1 调用Bash


bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument …]

bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument …]

bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument …]

所有可以用于内建命令set(见 Set内建命令 章节)的单个字符的选项,都可以在调用shell时,作为选项使用。此外,还有几个多个字符的选项可以使用。为了能够被识别出来,这些选项必须位于命令行的单个字符选项之前。


--debugger

在shell启动前,为调试器指定配置文件。打开扩展调试模式(见 shopt内建命令 章节,中关于shopt内建命令的 extdebug 选项的描述>)。

--dump-po-strings

一个列表,由 ‘$’ 引导的所有双引号包括的字符串,以 GNU gettext PO (便携对象)文件格式打印在标准输出。除了输出格式外,等价于 -D。 

--dump-strings

等价于 -D。

--help

在标准输出上显示使用信息,并成功退出。

--init-file filename
--rcfile filename

在交互shell中,从 filename 中执行命令。(而不是 ~/.bashrc)

--login

等价于 -l 。

--noediting

在交互shell中,不使用GNU Readline 库(见 命令行编辑 章节)从命令行读取。

--noprofile

当Bash以登录shell方式调用时,不载入系统级启动文件 /etc/profile ,或者所有个人初始化文件 ~/.bash_profile, ~/.bash_login, 或者 ~/.profile。

--norc

在交互式shell中不读取初始化文件 ~/.bashrc 。如果使用 sh 调用shell时,默认启用此选项。

--posix

改变Bash中与POSIX标准不同的默认行为,以符合POSIX标准。此选项使得Bash的行为成为POSIX标准的严格超集。见 Bash POSIX 模式 章节,关于Bash POSIX 模式的描述。

--restricted

使得shell成为限制shell(见 限制shell)。

--verbose

等价于 -v 。按原样打印shell的输入行。

--version

在标准输出上显示当前Bash的实例的版本信息,并成功退出。


还有几个单字符的选项,在调用shell时可用,但是内建命令set中不可用。


-c string

处理选项后,从string中读取和执行命令,然后退出。所有后续的参数都赋值给位置参数,从$0开始。

-i

强制shell以交互方式运行。交互方式的shell,请参见 交互shell章节。

-l

使得当前的shell的行为,就像直接由登录调用的。当shell是交互模式时,等价于使用‘exec -l bash’启动登录shell。当shell不是交互式的时候,则执行登录shell启动文件。 ‘exec bash -l’ 或者 ‘exec bash --login’ ,会以Bash登录shell取代当前的shell。参见 Bash启动文件 章节,关于登录shell的特殊行为的描述。

-r

使得shell成为限制shell。(见 限制shell)

-s

如果出现此选项,或者选项处理后,没有参数了,则从标准输入读取命令。当调用交互式shell时,此选项允许设置位置参数。

-D

一个列表,由 ‘$’ 引导的所有双引号包括的字符串,被打印在标准输出上。在当前的locale不是C或者POSIX(见 Locale翻译)的时候,这些字符串是相应语言的翻译。这个选项隐含了 -n 选项,即不执行命令。

[-+]O [shopt_option]

shopt_option 是一个内建命令 shopt 接受的shell选项(见 shopt内建命令)。如果出现了shopt_option,-O 设置那个选项,而 +O 取消设置。如果没有给定 shopt_option,则在标准输出上打印能被shopt接受的shell选项的名字和值。如果调用选项是 +O,则输出的格式是可以重用为输入的。

--

--符号标识了选项的结束,及取消进一步的选项处理。所有位于--之后的参数,都被视为文件名和参数。


登录shell是参数0的第一个字符是 ‘-’ ,或者使用 --login选项调用的shell。
交互式shell是启动参数中没有选项参数,除非指定了 -s 参数,没有指定 -c 选项,它的输入和输出都指向终端(由isatty(3)确定),或者带 -i 选项启动。更多信息,请参见 交互式shell 章节。

如果选项处理部分后面还有参数,并且没有 -c 或者 -s 选项,则第一个参数被当作是包含shell命令的文件名(见 shell脚本)。当Bash以此种方式调用时,$0 被设定为文件名,位置参数都设置为后续的参数。Bash从此文件中读取和执行命令,然后退出。Bash的退出状态,是脚本中最后一个被执行的命令的退出状态。如果没有命令执行,则退出状态为0。



译者序<br><br>毫无疑问,UNIX/Linux最重要的软件之一就是shell,目前最流行的shell被称为Bash(Bourne Again Shell),几乎所有的Linux和绝大部分的UNIX都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX工作平台上最亲密的朋友,因此,学好shell,是学习Linux/UNIX的的开始,并且它会始终伴随你的工作学习。<br><br>shell是如此地重要,但令人惊奇的是,介绍shell的书没有真正令人满意的。所幸的是,我看到了这本被人称为abs的书,这本书介绍了bash大量的细节和广阔的范围,我遇到的绝大部分的技术问题--无论是我忘记的或是以前没有发现的--都可以在这本书里找到答案。这本使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他语言的程序员,我能肯定你能在此书用受益。而本书除了介绍BASH的知识之外,也有许多有用的关于Linux/UNIX的知识和其他shell的介绍。<br><br>在看到本书的英文版后,我决定把它翻译出来,在Linuxsir论坛上结识了译者之一杨春敏共同翻译这本书,600多页的书是本大部头的书,我们花了6个月的业余时间才翻译完了。<br><br>关于版权的问题,英文版的作者Mendel Cooper对英文版的版权做了详细的约定,请参考:Appendix Q. Copyright。中文版版权由译者杨春敏和黄毅共同所有,在遵守英文版版权相应条款的条件下,欢迎在保留本书译者名字和版权说明以非盈利的方式自由发布此中文版,以盈利目的的所有行为必须联系英文作者和两位中文译者以获得许可。<br><br>本书得以成稿,我(黄毅)要多谢我的女朋友,本该给予她的时间我用来了翻译,多谢你的理解,你是一个很棒的女朋友!<br><br> 译者 杨春敏 黄毅<br> 2006.5.15<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值