Linux程式设计11Shell Scriptbash13Bash内建指令集.docx
《Linux程式设计11Shell Scriptbash13Bash内建指令集.docx》由会员分享,可在线阅读,更多相关《Linux程式设计11Shell Scriptbash13Bash内建指令集.docx(11页珍藏版)》请在冰豆网上搜索。
![Linux程式设计11Shell Scriptbash13Bash内建指令集.docx](https://file1.bdocx.com/fileroot1/2023-1/27/d1a1fb1a-5e40-4b2d-b991-621e235f096c/d1a1fb1a-5e40-4b2d-b991-621e235f096c1.gif)
Linux程式设计11ShellScriptbash13Bash内建指令集
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...]
读进一行,然後第一