history

history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2

历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。

语法

history(选项)(参数)

选项

-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中。

参数

n:打印最近的n条历史命令。

实例

使用history命令显示最近使用的10条历史命令,输入如下命令:

[root@localhost ~]# history 10
   92  ls
   93  cd ..
   94  ls
   95  exit
   96  ls -a
   97  cd .ssh/
   98  ls
   99  cat known_hosts
  100  exit
  101  history 10

help

help命令用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。

语法

help(选项)(参数)

选项

-s:输出短格式的帮助信息。仅包括命令格式。

参数

内部命令:指定需要显示帮助信息的shell内部命令。

实例

使用help命令显示shell内部shopt命令的帮助信息,输入如下命令:

help shopt                #获取shopt命令的帮助信息
shopt: shopt [-pqsu] [-o long-option] optname [optname...]
    Toggle the values of variables controlling optional behavior.
    The -s flag means to enable (set) each OPTNAME; the -u flag
    unsets each OPTNAME.  The -q flag suppresses output; the exit
    status indicates whether each OPTNAME is set or unset.  The -o
    option restricts the OPTNAMEs to those defined for use with
    `set -o'.  With no options, or with the -p option, a list of all
    settable options is displayed, with an indication of whether or
    not each is set.

jobs

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。

在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

语法

jobs(选项)(参数)

选项

-l:显示进程号;
-p:仅任务对应的显示进程号;
-n:显示任务状态的变化;
-r:仅输出运行状态(running)的任务;
-s:仅输出停止状态(stoped)的任务。

参数

任务标识号:指定要显示的任务识别号。

实例

使用jobs命令显示当前系统的任务列表,输入如下命令:

jobs -l               #显示当前系统的任务列表

上面的命令执行后,将显示出当前系统下的任务列表信息,具体如下所示:

[1] + 1903 运行中          find / -name password &

注意:要得到以上输出信息,必须在执行jobs命令之前执行命令find / -name password &。否则,执行jobs命令不会显示任何信息。

其中,输出信息的第一列表示任务编号,第二列表示任务所对应的进程号,第三列表示任务的运行状态,第四列表示启动任务的命令。

exit

exit命令同于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。

语法

exit(参数)

参数

返回值:指定shell返回值。

实例

退出当前shell:

[root@localhost ~]# exit
logout

在脚本中,进入脚本所在目录,否则退出:

cd $(dirname $0) || exit 1

在脚本中,判断参数数量,不匹配就打印使用方式,退出:

if [ "$#" -ne "2" ]; then
    echo "usage: $0 <area> <hours>"
    exit 2
fi

在脚本中,退出时删除临时文件:

trap "rm -f tmpfile; echo Bye." EXIT

检查上一命令的退出码:

./mycommand.sh
EXCODE=$?
if [ "$EXCODE" == "0" ]; then
    echo "O.K"
fi

shopt

shopt命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。

语法

shopt(选项)(参数)

选项

-s:激活指定的shell行为选项;
-u:关闭指定的shell行为选项。

参数

shell选项:指定要操作的shell选项。

实例

使用shopt命令显示当前所有可以设置的shell操作选项,输入如下命令:

shopt           #输出所有可以设置的shell操作选项
cdable_vars     off
cdspell         off
checkhash       off
checkwinsize    on
cmdhist         on
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
...

如图上所示,选项"cdspell"的状态为"off",即关闭cd拼写检查选项。现在,可以使用shopt命令将其开启,输入如下命令:

shopt -s cdspell          #开启cd拼写检查

执行上面的命令后,该选项的状态将变为"on",即开启状态。可以再次通过该命令显示一下shell操作选项即可,输出信息如下:

cdspell on                #开启cdspell选项

用户可以通过实际执行cd命令检查该选项是否被成功开启。

builtin

builtin命令用于执行指定的shell内部命令,并返回内部命令的返回值。builtin命令在使用时,将不能够再使用Linux中的外部命令。当系统中定义了与shell内部命令相同的函数时,使用builtin显式地执行shell内部命令,从而忽略定义的shell函数。

语法

builtin(参数)

参数

shell内部命令:指定需要执行的shell内部命令。

实例

使用builtin命令执行shell内部命alias显示命令别名,输入如下命令:

builtin alias                 #执行shell内部指令
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

上面的命令执行后,将输出当前系统下的命令别名。

wait

wait命令用来等待指令的指令,直到其执行完毕后返回终端。该指令常用于shell脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务。该指令等待作业时,在作业标识号前必须添加备份号"%"。

语法

wait(参数)

参数

进程或作业标示:指定进程号或者作业号。

实例

使用命令wait等待作业号为1的作业完成后再返回,输入如下命令:

wait %1       #等待作业号为3的作业完成 

执行上面的指令后,将输出指定作业号的指令,如下所示:

find / -name password

declare

declare命令用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。

语法

declare(选项)(参数)

选项

+/-:"-"可用来指定变量的属性,"+"则是取消变量所设的属性;
-f:仅显示函数;
r:将变量设置为只读;
x:指定的变量会成为环境变量,可供shell以外的程序来使用;
i:[设置值]可以是数值,字符串或运算式。

参数

shell变量:声明shell变量,格式为“变量名=值”。

实例

首先使用declare命令定义shell变量"test",并且将其值设置为"man.linux.9iphp.com",输入如下命令:

declare test='man.linux.9iphp.com'    #定义并初始化shell变量

上面的命令执行后,再使用echo命令将该shell变量值输出,输入如下命令:

echo $test                        #输出shell变量的值

上面的指令执行后,其输出的结果如下:

man.linux.9iphp.com

enable

enable命令用于临时关闭或者激活指定的shell内部命令。若要执行的文件名称与shell内建命令相同,可用enable -n来关闭shell内建命令。若不加-n选项,enable可重新启动关闭的命令。

linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令。因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable命令我们就能做到了。

语法

enable(选项)(参数)

选项

-n:关闭指定的内部命令;
-a:显示所有激活的内部命令;
-f:从指定文件中读取内部命令。

参数

内部命令:指定要关闭或激活的内部命令。

实例

使用enable命令显示所有激活的内部命令:

[root@localhost ~]# enable -a
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait