1.1 bash版本 $echo $BASH_VERSION 或 $bash –v 1.2 用内置的set和shopt命令设置bash选项 内置set格式: set –o option # turn on the option set +o option # turn off the option set – [a-z] # abbreviation for an option ; the minus turns it on . set + [a-z] # abbreviation for an option ; the minus turns it on . 例: $ set –o # 列出所有当前设置的和复位的选项 $ set –o noclobber # 设置noclobber选项,禁止你在重定向时重写文件。没有设置noclobber,>号后面的文件若存在,会被覆盖,不存在则会被创建。 内置shopt(2.x以上版) Shopt(shell options)内置命令是set命令的一个替代,但它为配置shell增加了更多的选项。 $shopt –p # 打印所有可获得的选项设置 $shopt –s # 显示所有已设置的选项 $shopt –u # 显示所有复位(未设置)的选项 $shopt –s cdspell # 设置cdspell选项 $shopt –u cdspell # 将cdspell选项复位 1.3 提示符 用专用转义序列设置提示符: 反斜杠序列 含义 "u 当前的用户名 "h 主机名 "w 当前的工作目录 "W 当前工作目录的基名 "t 当前时间是HH:MM:SS格式 "d 日期是“星期 月 日”的格式(如Tue May 26) "s shell的名字 "# 命令编号 "! 命令的历史编号 "$ 如果有效的UID是0,是一个#号,否则是$ "" 反斜杠 "v bash的版本号,如2.03 "V bash的发行号和路径级,如2.03.0 例: $ PS1=”["u@"h "w ]"$” $ PS1=”"W:"d> ” 或 $PS1=” $(uname -n) > ” 1.4 命令行
处理命令的顺序: 别名—关键词(如if,function,while,until)---函数---内置命令----可执行文件和脚本 内置命令属于shell的一部分(内置在系统中)。如果用一个简单文件名作为命令,shell将首先检查它是否是某条内置命令的名字。如果是内置命令名称,那么shell将其作为调用进程的一部分执行,也就是说shell并不会创建新的进程执行内置命令。shell并不需要在文件结构中搜索内置命令程序,这是因为shell可以立即访问它们。 如果用户输入的简单文件名不是内置命令,shell将使用PATH变量作为指南,搜索目录结构,以查找用户想要的程序。如果shell找到这个程序,那么它将创建一个新的进程以执行这个程序。
内置Type命令判断命令类型; $ type pwd pwd is a shell builtin $ type clear clear is /usr/bin/clear $ type if if is a shell keyword 内置help命令列出所有内置命令或一个特定内置命令的描述; $ help $ help help $ help pwd 改变命令行的处理顺序 bash提供了3个内置命令可忽视命令行处理顺序: command,builtin,enable。 command内置命令将别名和函数从处理顺序中去掉,只处理搜索路径中的内置命令和可执行程序; builtin 命令只查找内置命令,忽略在路径中找到的函数和可执行程序; enable可以打开和关闭内置命令,默认时,内置命令是打开的,使用-n开关可以关闭内置命令。不带任何参数,enable命令将列出所有的内置命令。 $ enable –n test # 关闭内置命令test $ function cd { builtin cd ; echo $PWD; } # 防止引起无穷的递归循环 退出状态: 退出状态为0,表示命令执行成功;非0,表示命令执行失败。 如果shell没有找到命令,返回的状态是127,如果是一个致命的信号引起命令终止,退出状态是128加上引起它死亡的信号的编号。 $ grip ellie /etc/passwd bash : grip : command not found $ echo $? 127 $ find / -name core ^C $ echo $? 130 命令的有条件执行:&&和||
1.5 作业控制 缺省时,已经设置作业控制(一些老版本的UNIX不支持这个特性),如果没有设置,可以用如下命令重置: set –m # set job control in the .bashrc file set –o monitor # set job control in the .bashrc file 例: -bash-3.00$ vi # 按下^Z(control -Z)将vi回话暂停 [1]+ Stopped vi -bash-3.00$ sleep 25& [2] 4354 # 标记[2]表示这是第2个在后台运行的作业,它的PID是4354 -bash-3.00$ jobs #列出所有正在运行的作业 [1]+ Stopped vi [2]- Running sleep 25 & -bash-3.00$ jobs –l #列出所有正在运行的作业及其作业号,进程号 [1]+ 4353 Stopped (user) vi [2]- 4354 Running sleep 25 & -bash-3.00$ jobs %% #显示最近一个放入作业表中的作业 [1]+ Stopped vi 作业控制命令 命令 含义 jobs 列出所有作业 ^Z 终止(暂停)作业 bg 启动被终止的后台作业 fg 将后台作业调入前台 stop 暂停一个后台作业 sty tostop 当后台作业向终端发送输出时就暂停它 kill 向指定作业发送kill信号 wait [n] 等待一个指定的作业并返回它的退出状态,这里n是一个PID或作业号 jobs命令的参数 含义 %n 作业号n %string 以string开头的作业名 %?string 作业名包含string %% 当前作业 %+ 当前作业 -r 列出所有运行的作业 -s 列出所有暂停的作业 |
|
来自: pengx > 《Unix/Linux》