Bash内建指令集

来源:互联网 发布:枣庄思迅软件 编辑:程序博客网 时间:2024/04/29 19:05

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 
  9) SIGKILL   10) SIGUSR1   11) SIGSEGV   12) SIGUSR2 
  13) SIGPIPE   14) SIGALRM   15) SIGTERM   17) SIGCHLD 
  18) SIGCONT   19) SIGSTOP   20) SIGTSTP   21) SIGTTIN 
  22) SIGTTOU   23) SIGURG   24) SIGXCPU   25) SIGXFSZ 
  26) SIGVTALRM  27) SIGPROF   28) SIGWINCH  29) 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] 
  解析位置参数。 

  *************************
  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印成符号形式。