网普技术论坛 网普科技  
» 游客:   网普主页 | 注册 | 登录 | 帮助
 

作者:
标题: Linux程式设计-11.Shell Script(bash)--(13)Bash内建指令集 上一主题 | 下一主题
网普科技
网普管理员

网普科技人民公仆


积分 3080
发贴 2863
注册 2004-6-26
来自 网普科技
状态 离线
#1  Linux程式设计-11.Shell Script(bash)--(13)Bash内建指令集

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
    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]
    解析位置参数。

    --------------------------------------------------------------------------------

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


    原作者: 不详
    来 源: 不详



天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。



网普科技,优质美国主机服务!
美国Linux主机,美国虚拟主机
支持PHP+MYSQL+cPanel+EMAIL
为用户负责,拒绝反动、赌博及色情内容! QQ:126818

发送QQ消息
2005-6-16 02:33 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部
茱莉娅
THE BODY SHOP美容顾问

茱莉娅美体小铺


积分 3080
发贴 2863
注册 2009-5-21
来自 茱莉娅美体小铺
状态 离线
#1  赞助商信息The body shop

茱莉娅美体小铺
茱莉娅美体小铺淘宝店
茱莉娅美体小铺


茱莉娅美体小铺淘宝店
2005-6-16 02:33 PM
查看资料  访问主页  发短消息  QQ   编辑帖子  引用回复 顶部


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转:  




Powered by Discuz! 2.5 © 2001-2005 Comsenz Technology Ltd.
Processed in 0.009981 second(s), 8 queries, Gzip enabled
------------------------------------------------------------------------------
本论坛属网普科技交流与技术支持论坛!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
美国主机, 美国虚拟主机, cPanel+PHP+Mysql+Ftp+Email+Zend+GD2+国际域名支持
技术支持 QQ: 126818 EMail & MSN: support[AT]netpu.net
[ 联系我们 ] - [ 网普科技 ]