Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5200262
  • 博文数量: 553
  • 博客积分: 13864
  • 博客等级: 上将
  • 技术积分: 11041
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-28 21:25
个人简介

个人Blog: hhktony.com

文章分类

全部博文(553)

文章存档

2015年(1)

2014年(2)

2013年(12)

2012年(384)

2011年(154)

分类: LINUX

2012-02-07 11:02:23

Bash内建指令集
以下的命令,大部份都没有使用例,您可能会看不出所以然,摸不着头脑。在我加入例说明前,建议您"man bash",然後自己实际操作一次。
--------------------------------------------------------------------------------

: [arguments]
不做任何事,除了[arguments]一些参数展开及一些特定重导向的作业外。
永远返回零。它的用法跟true一样。
--------------------------------------------------------------------------------

.  filename [arguments]
source filename [arguments]
由filename中读取命令,并执行。
您会在/etc/rc.d/*中发现很多
. /xxxx
的指令,而xxxx的permission都不是可执行的。事实上,在tcsh中,需要用
source /xxxx
来做同样的指令。
注意到"."的後面是有空格的(比较一下". /"跟"./",不一样)。filename是内含指令的纯文字档即可,无须chmod 755 filename。

filename : my_source
DEV=lo
IP=127.0.0.1
NETMASK=255.0.0.0
BROADCAST=127.255.255.255
ifconfig $IP netmask $NETMASK broadcast $BROADCAST dev $DEV
接下来
. my_source

source my_source
便可执行该script,而不需要"chmod 755 my_source"
-------------------------------------------------------------------------------

alias [name[=value] ...]
昵称命令
例如您如果来自DOS的世界,对UNIX的指令不习惯,可用alias来修改,以符合您的习惯。

alias ls="ls --color"
alias dir="ls"
alias cd..="cd .."
alias copy="cp -f" # dangerous, recommend, "cp -i"
alias del="rm -f" # dangerous, recommend, "rm -i"
alias move="mv -f" # dangerous, recommend, "mv -i"
alias md="mkdir"
alias rd="rmdir"
--------------------------------------------------------------------------------

unalias [-a] [name ...]
unalias取消alias的设定。"unalias -a"将全部alias取消。

unalias copy
--------------------------------------------------------------------------------

bg [jobspec]
将指定任务放到背景中,如果jobspec未指定,内定为目前的。
--------------------------------------------------------------------------------

fg [jobspec]
将指定任务放到前景中,如果jobsepc没有指定,那麽内定为目前的。
--------------------------------------------------------------------------------

jobs [-lnp] [ jobspec ... ]
第一种形式列出目前正在工作的任务。
-l : 除了列出一般资讯外,还列出Process IDs。
-p : 仅列出该工作群"首脑"(Process group leader)的Process ID.
-n : 则仅列出有改变的jobs的状态。
如果给定jobspec,输出资讯则只有该jobspec。
返回值为零,除非有非法的选项发生。
jobs -x command [ args ... ]
如果使用第二种形式(-x),jobs取代指定的command及args,并执行返回其Exit Status。
--------------------------------------------------------------------------------

kill [-s sigspec | -sigspec] [pid | jobspec] ...
将sigspec的信号送到pid或jobspec。
sigspec可以是SIGKILL/KILL这种形式或是信号号码。如果sigspec是signal name,则大小写无关,而且可以没有SIG。
kill -l [signum]
列出信号名称。
[foxman@foxman bash]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGIOT       7) SIGBUS       8) SIGFPE
 Array) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
18) SIGCONT     1Array) SIGSTOP     20) SIGTSTP     21) SIGTTIN
22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    2Array) SIGIO
30) SIGPWR
--------------------------------------------------------------------------------

wait [n]
等待指定的行程,并返回其结束状态。n可以是个jobspec或Process ID。如果n未指定,则等待所有的子行程,及返回值为零。若n为不存在的job或process,则返回127。否则,返回值为最後一个job/process的Exit Status。
--------------------------------------------------------------------------------

bind [-m keymap] [-lvd] [-q name]
bind [-m keymap] -f filename
bind [-m keymap] keyseq:function-name
显示出目前readline的按键及链结函数设定或是巨集。
-m keymap : 设定keymap binding。
-l : 显示出所有readline function的名称。
-v : 显示出目前的function name及bindings。
-d : 显示出function name及bindings。
-f filename : 从filename读取key bindings。
-q function : 询问那个按键触发function。
--------------------------------------------------------------------------------

break [n]
跳出控制回圈for/while/until中使用。如果有指定n,则跳出n层。n必须是大於等於1。若n大於巢状圈数,则所有的圈都会跳离。返回值回零。
--------------------------------------------------------------------------------

continue [n]
还原控制回圈for/while/until中使用。如果有指定n,则返回n层。n必须是大於等於1。若n大於巢状圈数,则还原到最上层。返回值回零。
--------------------------------------------------------------------------------

exit [n]
离开程式。n是Exit Status。
--------------------------------------------------------------------------------

return [n]
在function中使用。n为返回值,其作用与Exit Status一样。
--------------------------------------------------------------------------------

builtin shell-builtin [arguments]
执行内建函数。当您定义了与内建函数相同的指令时,可用此命令来执行内建函数。
--------------------------------------------------------------------------------

cd [dir]
更换目录到dir。如果没有指定,内定为HOME所指定的目录。
--------------------------------------------------------------------------------

command [-pVv] command [arg ...]
用command指定可取消正常的shell function寻找。只有内建命令及在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" : suppress trailing newline,不跳行。
"\f" : form feed,跳行跳格。
"\n" : new line,新行。
"\r" : carriage return,回到行起点。
"\t" : horizontal tab,水平跳位。
"\v" : vertical tab,垂直跳位。
"\\" : 输出"\"。
"\nnn" : 输出ASCII Code号码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] [-o option] [arg ...]
-a : 自动将变数标记为可让後面环境所使用。
-b : 立即报告被终结的背景程式状态。
-e : 当命令(simple-command,见後面)返回非零值时,立即跳出。
-f : 取消pathname expansion。
-h : 找出所记忆的函数命令位置。
-k : 所有keyword参数都放到环境中。
-m : 监督模式。
-n : 读取命令,但不要执行。可用於语法检查。
-p : 打开privileged模式。
-t : 当读取一个命令并执行後,立即离开。
-u : 当参数展开时,把unset参数当成是错误。
-v : 列出shell input lines。
-x : 在展开每个simple-command後,bash显示展开值在PS4上。
-l : 储存并还原name binding在for语法中。
-d : 关闭hasing command搜寻。
-C : 跟`noclobber=`一样。请见内定参数一节。
-H : 启动! style history substitution。
-P : 在使用像cd这种指令时,不要跟随symbolic links。
-- : "--"之後,没有参数跟在後面。
- : 指定将所有後面的参数当成是位置参数。
-o option-name : option-name可以是以下之一
allexport : 与"-a"相同。
braceexpand : 启动Brace Expansion。这是内定设定。
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行为修改为Posix 1003.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 [-e ename] [-nlr] [first] [last]
fc -s [pat=rep] [cmd]
修正命令。
--------------------------------------------------------------------------------

getopts optstring name [args]
解析位置参数。
--------------------------------------------------------------------------------

hash [-r] [name]
对每个name命令的完整路径记录下来。"-r"选项强迫忘记所有命令位置。如果没有给参数,则将会印出所有的资讯。返回值为True。
--------------------------------------------------------------------------------

help [pattern]
显示协助资讯。
--------------------------------------------------------------------------------

history [n]
history -rwan [filename]
没有参数时,会显示所下命令的历史记录。带有参数"n"则显示最後n个。
其它参数如下:
-a : 新增"新历史"到历史档中。
-n : 读取尚未读到历史中的记录。
-r : 读取filename做为历史档,并用它为目前历史记录。
-w : 将现有历史记录写到filename中。
--------------------------------------------------------------------------------

let arg [arg ...]
算术表述。请参考算术表述一节。
--------------------------------------------------------------------------------

local [name[=value] ...]
产生一个局部参数。如果用於function,则其作用围在function内及其子函数。
--------------------------------------------------------------------------------

logout
离开login shell。
--------------------------------------------------------------------------------

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]
Positional Parameters从n+1...开始,会被改为$1...。n若为零,则没有改变。n若未给定,则内定为1。n必须是非负数,并且小於或等於$#。若n大於$#,则没有改变。返回值为零,除非n大於$#或小於零。
--------------------------------------------------------------------------------

suspend [-f]
暂停这个shell的执行,直到它收到SIGCONT信号。"-f"选项则是叫login shell不要抱怨,不过还是一样暂停。返回状态零,除非该shell是个login shell,而且没有"-f"选项。
--------------------------------------------------------------------------------

test expr
[ expr ]
我们在Exit Status的部份已经说过了,不再重。
--------------------------------------------------------------------------------

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 : 行程资料段(process’s data segment)最大值。
-f : 可被这个shell产生的最大档案。
-m : resident set size最大值。
-s : 堆叠最大值。
-t : CPU TIME最大值(以秒计算)。
-p : pipe size in 512-byte blocks的最大值。
-n : 可开启的file descriptors最大值。
-u : 单一使用者可使用的最大process数。
-v : 该shell最大虚拟记忆体可用值。

所有项目是以1024做为单位。
--------------------------------------------------------------------------------

umask [-S] [mode]
将使用者的file-creation mask设为mode。"-S"选项将mask印成符号形式。  
--------------------------------------------------------------------------------
阅读(2275) | 评论(0) | 转发(1) |
0

上一篇:几种常见shell简介

下一篇:常用shell脚本

给主人留下些什么吧!~~