ZT - 对话 UNIX: UNIX 高手的重大秘密(4)

使用历史记录重写 如果您经常在 shell 提示符中花费大量时间,保存 shell 历史记录可以节约时间和输入。但是如果历史记录不能被修改,就会导致一些麻烦:记录重复的命令,且多个 shell 实例可能会干扰各自的历史记录。这两个问题很容易解决,只需在您的 .bashrc 中添加两行: export HISTCONTROL=ignoreboth shopt -s histappend 第一行将移除您的 shell 历史记录中连续的重复命令。如果您想移除所有零散的副本,可将 ignoreboth 更改为 erasedups。第二行在 shell 退出时将 shell 的历史记录附加到您的记录文件。默认情况下,Bash 记录文件命名为 ~/~/.bash_history (不错,这是一个点文件)。可以通过设置 HISTFILE(不错,这是一个环境变量)来更改它的位置。如果您想将一个 shell 的最近 10,000 命令保存在一个包含 100,000 条目的记录文件中,将 export HISTSIZE=10000 HISTFILESIZE=100000 添加到您的 shell 启动文件中。要查看一个 shell 的历史记录,在任意提示处键入 history 即可。 如果不能调用,那么保存的命令历史记录就用处不大。而这正是 shell !(或 bang)操作符的作用所在: !! ("bang bang") 完整地重复最后一条命令。 !:0 是前一条命令的名称。 !^ 是前一条命令的第一个参数。!:2、!:3 ... !$ 等命令是前一条命令的第二、第三......以及最后一个参数。 !* 是最后一条命令的所有参数,命令名除外。 !n 重复历史中编号为 n 的命令。 !handle 重复以 handle 中的字符开始的最后一条命令。例如,!ca 将重复以字符 ca 开始的最后一条命令,如 cat README。 !?handle 重复包含 handle 中的字符组成的字符串的最后一条命令。例如,!?READ 还会匹配 cat README。 ^original^substitution 使用 substitution 替换 original 的第一个 实例。例如,如果前一条命令是 cat README,,命令 ^README^license.txt 将生成一条新命令 cat license.txt。 !:gs/original/substitution 将使用 substitution 替换 original 的所有 实例(!:gs 表示 “全局替换[global substitution]”)。 !-2 是倒数第二条命令,!-3 是倒数第三条命令,以此类推。 您甚至可以合并历史表达式来生成 !-2:0 -R !^ !-3:2 这样的 “魔汤”,该命令将扩展为倒数第二条命令的名称,加上 -R,再加上前一条命令的第一个参数,以及倒数第三条命令的第二个参数。要使这样的神秘命令更具可读性,可以在键入时扩展历史参考。在任意提示符键入命令 bind Space:magic-space ,或者将其添加到一个启动文件,从而将空格键绑定到函数 magic-space,该函数将扩展内联历史替换。[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16896827/viewspace-1036455/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16896827/viewspace-1036455/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值