unix & Linux 教程学习_8
13.17 历史列表: 设置大小
对于Bourne shell家族,需要设置HISTSIZE环境变量。例如,要指定历史列表存放50条命令:
export HISTSIZE=50
set history = 50 \(~~~~~~\)//C-shell家族
13.18 历史列表示例:避免删错文件
假设您希望一组名为temp、temp_backup、extral和extra2的文件。您考虑输入下述命令:
rm temp* extra?
但是,您忘了还有一个重要的文件temp.important. 如果输入上述命令的话,那这个文件也将被删除了。
避免误删的方式是,先用ls命令:
ls temp* extra?
如果发现有被遗忘的文件temp.important,可以不再像之前那样用rm命令。 如果文件列表符合预期。则可以将ls替换成rm并重新执行该命令删除所有的文件:
fc -s ls=rm
^ls^rm\(~~~~~~\)//C-Shell家族
13.19在shell提示中显示事件编号&工作目录
参见P273
13.20 自动补全
shell | 补全单词 | 显示所有可能 |
---|---|---|
Bash | <Tab> | <Tab><Tab> |
Korn Shell | <Esc><Esc> | <Esc>= |
C-Shell | <Esc> | ^D |
Tcsh | <Tab> | ^D |
13.21 自动补全: 高级应用
参见P277
13.22 为好玩和赌注使用自动补全
参见P279
13.23 命令行编辑:bindkey
参见P280
13.24 别名:alias、 unalias
别名就是赋予一条命令或者一列命令的名称。可以将别名作为缩写,或者使用别名创建已有命令的自定义变体。
假设您发现自己经常输入下述命令:
ls -l temp*
如果给这条命令赋一个别名lt, 那么就可以通过键入下述命令来简化上一条命令:
lt
创建别名需要用alias命令。 对于Bourne shell家族来说,语法为:
alias [name=commands]
alias [name commands] \(~~~~~~\)//C-Shell家族
确定等号的两边不要有空格(创建变量时也有这样的要求)。
name是希望创建的别名名称,而commands是一个包含一条或多条命令的列表。例:
alias lt='ls -l temp*'
alias lt 'ls -l temp*'\(~~~~~~\)//C-Shell家族
例:为alias本身创建一个缩写:
alias a=alias
一旦定义了这个别名,就可以输入:
a info='date; who'
要显示别名info的含义,可以使用:
alias info
要同时显示所有的别名,可以输入没有参数的alias命令:
alias
使用unalias命令可以移除别名。该命令的语法为:
unalias name
其中name是别名的名称。例如,要移除刚才定义的别名,可以使用:
unalias info
如果希望同时移除所有的别名:
unalias -a\(~~~~\)//Bourne shell家族
unalias *\(~~~~~\)//C-Shell家族
使用type命令可以查看某条特定是不是别名。例如,查看之前的info:
type info
info is aliased to 'date; who'
您可以将所有自己喜爱的别名定义放置在一个初始化文件中。 每当启动新shell时, 这些别名命令就会自动执行。
13.25 临时挂起别名
假设您发现, 在使用ls命令时, 几乎总是用-l选项。 那么, 为了节省每次键入选项的时间, 可以定义下述别名:
alias ls="ls -l"
现在, 只需要简单地输入命令本身,就可以显示“长”列表,不再需要键入选项:
ls
这将生成一个长列表, 就像输入下述命令一样:
ls -l
当使用这样的别名时, 您将发现, 有时我们希望运行原始的命令, 而不是别名。 例如,您希望运行没有-l选项的ls命令。 为了临时挂起一个别名,只需在命令名称的开头键入一个\(反斜线)字符:
\ls
这样就告诉shell运行实际命令本身,而不是别名。
13.26 别名示例: 避免删错文件
前面我们讨论过的例子:
rm temp* extra?
为了避免删错,我们可以先用ls, 然后再用fc -s
ls temp* extra?
fc -s ls=rm
为了使用这条命令更容易使用, 我们定义一个命为del的别名:
alias del='fc -s ls=rm'
对于C-Shell,参见P824
一旦定义了这个del别名,首先,我们输入ls命令,以及描述希望删除的文件的模式。 例:
ls temp* extra?
如果该模式显示的文件名称符合我们的期望, 接下来可以输入:
del
这样就可以将文件删除。
13.27 别名示例: 从历史列表中重用命令
P285
13.28 别名示例: 在shell提示中显示工作目录名称
P287