Bash内建指令集
以下的命令,大部份都没有使用例,您可能会看不出所以然,摸不着头脑。在我加入例说明前,建议您”manbash”,然後自己实际操作一次。
——————————————————————————–
:[arguments]
不做任何事,除了[arguments]一些参数展开及一些特定重导向的作业外。
永远返回零。它的用法跟true一样。
——————————————————————————–
.filename[arguments]
sourcefilename[arguments]
由filename中读取命令,并执行。
您会在/etc/rc.d/*中发现很多
./xxxx
的指令,而xxxx的permission都不是可执行的。事实上,在tcsh中,需要用
source/xxxx
来做同样的指令。
注意到”.”的後面是有空格的(比较一下”./”跟”./”,不一样)。filename是内含指令的纯文字档即可,无须chmod755filename。
例
filename:my_source
DEV=lo
IP=127.0.0.1
NETMASK=255.0.0.0
BROADCAST=127.255.255.255
ifconfig$IPnetmask$NETMASKbroadcast$BROADCASTdev$DEV
接下来
.my_source
或
sourcemy_source
便可执行该script,而不需要”chmod755my_source”
——————————————————————————–
alias[name[=value]…]
昵称命令
例如您如果来自DOS的世界,对UNIX的指令不习惯,可用alias来修改,以符合您的习惯。
例
aliasls=”ls–color”
aliasdir=”ls”
aliascd..=”cd..”
aliascopy=”cp-f”#dangerous,recommend,”cp-i”
aliasdel=”rm-f”#dangerous,recommend,”rm-i”
aliasmove=”mv-f”#dangerous,recommend,”mv-i”
aliasmd=”mkdir”
aliasrd=”rmdir”
——————————————————————————–
unalias[-a][name…]
unalias取消alias的设定。”unalias-a”将全部alias取消。
例
unaliascopy
——————————————————————————–
bg[jobspec]
将指定任务放到背景中,如果jobspec未指定,内定为目前的。
——————————————————————————–
fg[jobspec]
将指定任务放到前景中,如果jobsepc没有指定,那麽内定为目前的。
——————————————————————————–
jobs[-lnp][jobspec…]
第一种形式列出目前正在工作的任务。
-l:除了列出一般资讯外,还列出ProcessIDs。
-p:仅列出该工作群”首脑”(Processgroupleader)的ProcessID.
-n:则仅列出有改变的jobs的状态。
如果给定jobspec,输出资讯则只有该jobspec。
返回值为零,除非有非法的选项发生。
jobs-xcommand[args…]
如果使用第二种形式(-x),jobs取代指定的command及args,并执行返回其ExitStatus。
——————————————————————————–
kill[-ssigspec|-sigspec][pid|jobspec]…
将sigspec的信号送到pid或jobspec。
sigspec可以是SIGKILL/KILL这种形式或是信号号码。如果sigspec是signalname,则大小写无关,而且可以没有SIG。
kill-l[signum]
列出信号名称。
[foxman@foxmanbash]#kill-l
1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL
5)SIGTRAP6)SIGIOT7)SIGBUS8)SIGFPE
9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR2
13)SIGPIPE14)SIGALRM15)SIGTERM17)SIGCHLD
18)SIGCONT19)SIGSTOP20)SIGTSTP21)SIGTTIN
22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ
26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO
30)SIGPWR
——————————————————————————–
wait[n]
等待指定的行程,并返回其结束状态。n可以是个jobspec或ProcessID。如果n未指定,则等待所有的子行程,及返回值为零。若n为不存在的job或process,则返回127。否则,返回值为最後一个job/process的ExitStatus。
——————————————————————————–
bind[-mkeymap][-lvd][-qname]
bind[-mkeymap]-ffilename
bind[-mkeymap]keyseq:function-name
显示出目前readline的按键及链结函数设定或是巨集。
-mkeymap:设定keymapbinding。
-l:显示出所有readlinefunction的名称。
-v:显示出目前的functionname及bindings。
-d:显示出functionname及bindings。
-ffilename:从filename读取keybindings。
-qfunction:询问那个按键触发function。
——————————————————————————–
break[n]
跳出控制回圈for/while/until中使用。如果有指定n,则跳出n层。n必须是大於等於1。若n大於巢状圈数,则所有的圈都会跳离。返回值回零。
——————————————————————————–
continue[n]
还原控制回圈for/while/until中使用。如果有指定n,则返回n层。n必须是大於等於1。若n大於巢状圈数,则还原到最上层。返回值回零。
——————————————————————————–
exit[n]
离开程式。n是ExitStatus。
——————————————————————————–
return[n]
在function中使用。n为返回值,其作用与ExitStatus一样。
——————————————————————————–
builtinshell-builtin[arguments]
执行内建函数。当您定义了与内建函数相同的指令时,可用此命令来执行内建函数。
——————————————————————————–
cd[dir]
更换目录到dir。如果没有指定,内定为HOME所指定的目录。
——————————————————————————–
command[-pVv]command[arg…]
用command指定可取消正常的shellfunction寻找。只有内建命令及在PATH中找得到的才会被执行。”-p”选项,搜寻命令的方式是用PATH来找。”-V”或”-v”选项,会显示出该命令的一些简约描述。
——————————————————————————–
declare[-frxi][name[=value]]
typeset[-frxi][name[=value]]
宣告参数并给它们设定属性。如果没有给定名称,将会显示各参数值。
-f:仅使用函数名称。
-r:将name设为readonly。
-x:将name输出给後续环境使用。
-i:该参数被设为integer来使用,可用於算术表述。
用” “时,关闭该属性。
——————————————————————————–
dirs[-l][ /-n]
显示目前记忆的目录。目录可透过pushd/popd来操作。
n:显示开始的记录n个。
-n:显示结尾的记录n个。
-l:显示较多的资讯。
——————————————————————————–
echo[-neE][arg…]
输出显示args,由空白分隔。返回值永为零。
-n:不跳行。
-e:启动”\”符号的解译。
-E:将ESC解译功能取消。
“\a”:alert(bell),发出声响。
“\b”:backspace,倒退。
“\c”:suppresstrailingnewline,不跳行。
“\f”:formfeed,跳行跳格。
“\n”:newline,新行。
“\r”:carriagereturn,回到行起点。
“\t”:horizontaltab,水平跳位。
“\v”:verticaltab,垂直跳位。
“\\”:输出”\”。
“\nnn”:输出ASCIICode号码nnn(八进位)。
——————————————————————————–
enable[-n][-all][name…]
启动或关闭内建函数命令。使用”-n”将所有指定命令皆关闭,否则都是启动的。如果只有”-n”参数,它将会显示所有关闭的函数。如果只有”-all”,它将会显示所有内建命令。
——————————————————————————–
eval[arg…]
读取args,并将args合为一个命令,然後执行。其返回值成为eval的返回值。如果没有参数,eval返回True。
——————————————————————————–
exec[[-]command[arguments]]
当命令执行时,该命令取代shell,没有新的process产生。如果第一个参数是”-“,shell会将”-“放入第零个参数,传给command。
——————————————————————————–
export[-nf][name[=word]]…
export-p
将name输出给环境,给往後的命令使用。”-f”选项表示name是函数。”-p”显示出所有export的名称。”-n”移除name。
——————————————————————————–
set[–abefhkmnptuvxldCHP][-ooption][arg…]
-a:自动将变数标记为可让後面环境所使用。
-b:立即报告被终结的背景程式状态。
-e:当命令(simple-command,见後面)返回非零值时,立即跳出。
-f:取消pathnameexpansion。
-h:找出所记忆的函数命令位置。
-k:所有keyword参数都放到环境中。
-m:监督模式。
-n:读取命令,但不要执行。可用於语法检查。
-p:打开privileged模式。
-t:当读取一个命令并执行後,立即离开。
-u:当参数展开时,把unset参数当成是错误。
-v:列出shellinputlines。
-x:在展开每个simple-command後,bash显示展开值在PS4上。
-l:储存并还原namebinding在for语法中。
-d:关闭hasingcommand搜寻。
-C:跟`noclobber=`一样。请见内定参数一节。
-H:启动!stylehistorysubstitution。
-P:在使用像cd这种指令时,不要跟随symboliclinks。
–:”–“之後,没有参数跟在後面。
-:指定将所有後面的参数当成是位置参数。
-ooption-name:option-name可以是以下之一
allexport:与”-a”相同。
braceexpand:启动BraceExpansion。这是内定设定。
emacs:使用emacs-style命令列编辑界面。
errexit:与”-e”相同。
histexpand:与”-H”相同。
ignoreeof:效果跟`IGNOREEOF=10`一样。
interactive-commands:允许#做为解。
monitor:与”-m”相同。
noclobber:与”-C”相同。
noexec:与”-n”相同。
noglob:与”-f”相同。
nohash:与”-d”相同。
notify:与”-b”相同。
nounset:与”-u”相同。
physical:与”-P”相同。
posix:Bash行为修改为Posix1003.2标准。
privileged:与”-p”相同。
verbose:与”-v”相同。
vi:使用vi-style命令列编辑程式。
xtrace:与”-x”相同。
——————————————————————————–
unset[-fv][name…]
移除对映於name的参数。要注意PATH、IFS、PPID、PS1、PS2、UID、EUID不能unset。若RANDOM、SECONDS、LINENO、HISTCMD被unset,它们会丧失原有意义,既始它们後来被重设也一样。返回值为True,除非name是不能被unset的。
——————————————————————————–
fc[-eename][-nlr][first][last]
fc-s[pat=rep][cmd]
修正命令。
——————————————————————————–
getoptsoptstringname[args]
解析位置参数。
——————————————————————————–
hash[-r][name]
对每个name命令的完整路径记录下来。”-r”选项强迫忘记所有命令位置。如果没有给参数,则将会印出所有的资讯。返回值为True。
——————————————————————————–
help[pattern]
显示协助资讯。
——————————————————————————–
history[n]
history-rwan[filename]
没有参数时,会显示所下命令的历史记录。带有参数”n”则显示最後n个。
其它参数如下:
-a:新增”新历史”到历史档中。
-n:读取尚未读到历史中的记录。
-r:读取filename做为历史档,并用它为目前历史记录。
-w:将现有历史记录写到filename中。
——————————————————————————–
letarg[arg…]
算术表述。请参考算术表述一节。
——————————————————————————–
local[name[=value]…]
产生一个局部参数。如果用於function,则其作用围在function内及其子函数。
——————————————————————————–
logout
离开loginshell。
——————————————————————————–
popd[ /-n]
移除目录堆叠。” n”移除上面n个,”-n”移除下面n个。
——————————————————————————–
pushd[dir]
pushd /-n
将目录新增到目录堆叠的最上面。” n”旋转该堆叠,使第n个目录变成最上面。”-n”旋转该堆叠,使倒数第n个目录变成最上面。
——————————————————————————–
pwd
列出目前工作目录的绝对路径。
——————————————————————————–
read[-r][name…]
读进一行,然後第一个字设到第一个name,第二个设到第二个name,依此类推。如果没有name在参数中,则read会将值设到REPLY。返回值为零,除非遇到End-Of-File。若有”-r”选项,则”\n”被考虑为该行的一部份。
——————————————————————————–
readonly[-f][name…]
readonly-p
将给定的name标记为readonly。如果是”-f”选项,则函数也一样被标记为readonly。”-p”会列出所有readonly的name。”–“取消检查剩馀的参数。
——————————————————————————–
shift[n]
PositionalParameters从n 1…开始,会被改为$1…。n若为零,则没有改变。n若未给定,则内定为1。n必须是非负数,并且小於或等於$#。若n大於$#,则没有改变。返回值为零,除非n大於$#或小於零。
——————————————————————————–
suspend[-f]
暂停这个shell的执行,直到它收到SIGCONT信号。”-f”选项则是叫loginshell不要抱怨,不过还是一样暂停。返回状态零,除非该shell是个loginshell,而且没有”-f”选项。
——————————————————————————–
testexpr
[expr]
我们在ExitStatus的部份已经说过了,不再重。
——————————————————————————–
times
列出该shell的累积的使用者及系统时间及从shell执行的process时间,返回值为零。
——————————————————————————–
trap[-l][arg][sigspec]
当收到sigspec信号时,执行arg命令。”-l”显示出信号名称及号码。
——————————————————————————–
type[-all][-type|-path]name[name…]
没有参数的状况下,它会显示出shell如何解译name做为命令。如果有”-type”,它将会显示alias、keyword、function、builtin或file。如果有”-path”的参数,它将会显示该命令的路径,找不到的话,不显示任何东西。如果有”-all”的参数,它将会显示所有可执行name的可能路径。type接受”-a”、”-t”、”-p”做为缩写。
——————————————————————————–
ulimit[-SHacdfmstpnuv[limit]]
ulimit提供了对shell的可获取资源控制的功能。
-a:报告目前所有限制。
-c:设定最大可产生的core档案。
-d:行程资料段(processsdatasegment)最大值。
-f:可被这个shell产生的最大档案。
-m:residentsetsize最大值。
-s:堆叠最大值。
-t:CPUTIME最大值(以秒计算)。
-p:pipesizein512-byteblocks的最大值。
-n:可开启的filedescriptors最大值。
-u:单一使用者可使用的最大process数。
-v:该shell最大虚拟记忆体可用值。
所有项目是以1024做为单位。
——————————————————————————–
umask[-S][mode]
将使用者的file-creationmask设为mode。”-S”选项将mask印成符号形式。