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

posted on 2019-09-02 16:12  青苹末末  阅读(144)  评论(0编辑  收藏  举报

导航