我用的时候!要执行上一个命令,它也会自动打印命令。有没有办法隐藏这个?
例:
这就是:
ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test
这就是我想要的:
ralgrad:~$ echo test
test
ralgrad:~$ !!
test
答案 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