想象一下这种情况:
$ c3
I'm c3 command. Done.
$ c4
I'm c4 command. Everything is alright here.
$ c5
I'm c5 command. You have a problem, I give up the task!
$ history 5
11 c1
12 c2
13 c3
14 c4
15 c5
我们可以通过执行来重复命令c3!13,输出为:
$ !13
c3
I'm c3 command. Done.
我尝试在我的.bashrc中使用!
运算符(在函数中),但它不起作用。我还试图制作一个shell脚本来使用它而没有成功。有没有办法做到这一点?
尝试不起作用:
# inside .bashrc or .bash_functions
function histtest()
{
echo 'history #13'
ta="you're missing something..."
# uncomment **one** of these two lines at a time
ta="!13"
# ta=!13
echo $ta
}
t.sh文件:
#!/bin/bash
test=!13
#test="!13"
#test='!13' # of course not
echo "$test"
答案 0 :(得分:2)
来自bash(1)手册页:
历史扩张
shell支持历史记录扩展功能,类似于csh中的历史记录扩展。对于交互式shell,此功能默认启用,可以使用set builtin命令的+ H选项禁用此功能。默认情况下,非交互式shell不会执行历史记录扩展。
我不建议在shell脚本中启用历史记录扩展。你可以用set -H
来做,但是说真的,不要这样做。它实际上只应该以交互方式使用。