Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2072480
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-08-25 10:55:20

8.8  控制bash的特性和选项

本节解释了如何使用命令行选项和内置命令set和shopt控制bash的功能和选项。

8.8.1  命令行选项

有两种类型的命令行选项:短选项和长选项。短选项由一个连字符后面跟着一个字母构成,而长选项由两个连字符后面跟着多个字母构成。在bash中,同一个命令行上的长选项必须放在短选项之前。表8-12列出了一些常用的命令行选项。

表8-12  命令行选项

选    项

解    释

语    法

help

显示用法信息

--help

no edit

阻止用户在交互式shell中使用Readline库编辑命令行

--noediting

no profile

阻止读取初始化文件/etc/profile、~/.bash_profile、~/.bash_login和~/.profile

--noprofile

no rc

阻止读取~/.bashrc初始化文件;如果shell以sh调用的话,这个选项默认是打开的

--norc

POSIX

在POSIX模式下运行bash

--posix

version

显示bash版本信息并退出

--version

login

使bash像登录shell一样运行

-l(小写l)

shopt

带上shopt选项opt运行shell;-O(大写O)设置该选项,+O删除该设置

[+-]O [opt]

end of options

在命令行中发信号表示选项结束;后面的字将作为参数,即使它们以连字符(-)开头

--

8.8.2  shell特性

可以通过打开或者关闭Bourne Again Shell的功能的方式来控制它的行为。不同的功能使用不同的方法开启和关闭。内置命令set控制着一组功能,而内置命令shopt控制另外一组命令。还可以调用bash在命令行中控制很多功能。

 

特性、选项还是变量? 

提示

为了避免术语上的歧义,本书将用户可控制的shell的不同行为称为特性。bash info页面称之为“选项”和“控制可选shell行为的变量的值”。

1. set ±o:开启和关闭shell特性

通过使用-o或者+o选项,内置命令set(tcsh中有一个内置命令set,但是它的工作方式不同)可开启、关闭并列出某些bash特性。举例来说,下面的命令将开启noclobber特性:

$ set -o noclobber

使用下面的命令可以关闭这项特性(默认):

$ set +o noclobber

如果命令set -o不带任何选项,那么它将列出所有由set控制的每一项特性及其状态(开启还是关闭)。不带选项的命令set +o以一种特殊的形式列出了这些特性,用户可以依据它所给出的形式输入到shell中。表8-13列出了bash特性。

表8-13  bash特性

特    性

描    述

语    法

备 用 语 法

allexport

在执行这条命令之后自动输出用户创建的所有变量和函数

set -o allexport

set -a

braceexpand

使bash执行花括号扩展(默认)

set -o

braceexpand

set -B

cdspell

纠正传递给cd的参数中目录名中小的拼写错误

shopt -s cdspell


cmdhist

保存一个多行命令中的所有文本行,如果需要将添加分号

shopt -s cmdhist


dotglob

使模糊文件引用中的shell特殊字符(通配符)来匹配以句号(.)开头的文件名;默认情况下,这些特殊字符并不匹配开头的句号;必须总要显式地指定文件名.和..,因为没有模式曾匹配它们

shopt -s dotglob


emacs

为命令行编辑指定emacs模式(默认)

set -o emacs


errexit

使bash在遇到简单的命令失败(而不是控制结构)时退出

set -o errexit

set -e

execfail

使shell脚本在找不到exec参数所指的文件时继续运行;默认情况下,当exec找不到其参数指定的文件时,脚本将终止

shopt -s execfail


                                                                                                                                                         (续表)   

特    性

描    述

语    法

备 用 语 法

expand_aliases

使别名扩展(默认情况下,对于交互式shell是开启的,而对于非交互式shell是关闭的)

shopt -s

expand_alias


hashall

使bash记住它使用PATH找到的命令的位置

set -o hashall

set -h

histappend

在shell退出时,使bash把历史列表追加到HISTFILE命令的文件后面;默认情况下,bash会覆盖掉这个文件

shopt -s

histappend


histexpend

使历史机制(使用感叹号)工作(默认);关闭这个特性将关闭历史扩展

set -o histexpand

set -H

history

开启命令历史特性(默认情况下是开启的)

set -o history


ignoreeof

指定bash接收到10次EOF字符之后才能退出;在信号不好的链路上很有用

set -o ignoreeof


monitor

启用作业控制(默认启用)

set -o monitor

set -m

nocaseglob

使模糊文件引用匹配文件名而不区分大小写(默认关闭)

shopt -s

nocastglob


noclobber

帮助阻止文件覆盖(默认关闭)

set -o noclobber

set -C

noglob

关闭路径名扩展(默认关闭)

set -o noglob

set -f

notify

如果启用了作业控制,将立即报告后台作业的终结状态;默认行为是在显示下一个提示符之前显示该状态

set -o notify

set -b

nounset

当在交互式shell中使用未设置变量时,将显示一条错误消息并退出shell脚本

set -o unset

set –u

nullglob

使bask扩展模糊文件引用,这些模糊文件引用不能将文件名与一个空字符相匹配。默认情况下,bash无需扩展这些文件引用就可以传递它们

shopt-s nullglob


posix

以POSIX模式返回bash

set-o posix


verbose

当bask读取命令行时显示这些命令行

set-o verbose

set-v

vi

为命令行的编辑指定vi编辑模式

set-o vi


xpg_echo

使内置命令cd在无需-e选项的情况下扩展反斜线转义序列

shopt –s xpg_echo


xtrace

启用shell调试功能

set-o xtrace

set-x

2. shopt:开启和关闭shell特性

内置命令shopt(shell option)开启、关闭和列出那些控制着shell行为的某些bash特性。举例来说,下面的命令将使bash在扩展模糊文件引用时,包含那些以句号(.)开头的文件名,-s表示设置:

$ shopt -s dotglob

通过下面的命令可将这项特性关闭(默认),-u表示取消设置:

$ shopt -u dotglob

如果只将特性的名称作为shopt唯一的参数,shell显示该特性是如何设置的:

$ shopt dotglob

dotglob          off

命令shopt不带任何选项或者参数时,将列出由shopt控制的那些特性及其状态。命令shopt -s不带参数时,将列出那些由shopt控制并设置为开启的特性。命令shopt –u将列出那些被取消或者关闭的bash特性。表8-13列出了bash特性。

 

使用shopt设置set ±o特性 

提示

可以使用shopt设置或者取消那些由set ±o控制的特性。使用常规的shopt –s或者-u语法,并包含-o选项。举例来说,下面的命令将开启noclobber特性:

$ shopt –o –s noclobber

      
发表于 2008-7-9 23:12:50
很棒的书,内容很全。强力推荐!!
发表于 2008-3-26 17:05:45
这本书在amzon上,24个书评中几乎全部是4星,还有几个是5星。怪不得,清华敢要这种价格,这价格够高的...
发表于 2008-3-26 17:04:49
确实不便宜啊,忍了忍还是过段时间再说,先看看电子书吧
发表于 2008-3-26 17:04:20
这书今天总算到了,整体感觉不错,里面内容由浅入深,强烈推荐给大家!
发表于 2008-3-26 17:03:55
听朋友说这本书很不错,而且又有微软的送书券,所以就订购了一本。
发表评论
图书导读

当前章节:

·
·
·
·
·
·
 
同类图书推荐
  • 阅读(3079) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~