使用带有感叹号的命令重复时如何隐藏命令?

时间:2013-02-22 11:44:13

标签: linux bash command-line

我用的时候!要执行上一个命令,它也会自动打印命令。有没有办法隐藏这个?

例:
这就是:

ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test

这就是我想要的:

ralgrad:~$ echo test
test
ralgrad:~$ !!
test

3 个答案:

答案 0 :(得分:1)

我查看了bash源,无法禁用此扩展命令的自动打印。你必须编译自己的bash版本!

如果出于某种原因对您特别重要,请查看bashhist.c功能中的pre_process_line并注释/删除以下行:

printf (stderr, "%s\n", history_value);

答案 1 :(得分:0)

您不能使用!!执行此操作,因为它会重复最后一个命令而不是最后一个输出。据我所知,没有一个命令可以实现你的要求。但是,您可以尝试一个简单的黑客攻击:

result=`echo test`
echo "$result"

答案 2 :(得分:0)

好吧,您可以使用以下批处理文件模拟您想要的内容:

if [ -z $1 ]; then
exe=`fc -lrn | awk 'NR==2 {print;}'`
else
exe=`fc -lrn | cut -f2- | awk 'NR>=2 {print;}' | grep "^ $*" | head -n1 `
fi
eval $exe 

h成为文件的名称(或者,如果您需要,甚至是!)。然后你可以这样做:

# echo Foo
Foo
# echo Bar
Bar
# h 
Bar
# h echo F
Foo