当我使用!要执行先前的命令,它也会自动打印该命令。有没有办法隐藏这个?
示例:
会发生以下情况:
ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test
这就是我想要的:
ralgrad:~$ echo test
test
ralgrad:~$ !!
test
当我使用!要执行先前的命令,它也会自动打印该命令。有没有办法隐藏这个?
示例:
会发生以下情况:
ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test
这就是我想要的:
ralgrad:~$ echo test
test
ralgrad:~$ !!
test
我查看了 bash 源代码,无法禁用扩展命令的自动打印。您必须编译自己的 bash 版本!
如果出于某种原因它对您特别重要,请查看bashhist.c
函数pre_process_line
并注释/删除以下行:
printf (stderr, "%s\n", history_value);
你不能这样做!!
,因为它重复最后一个命令而不是最后一个输出。据我所知,没有一个命令可以实现您的要求。但是,您可以尝试一个简单的 hack:
result=`echo test`
echo "$result"
好吧,您可以使用以下批处理文件模拟您想要的内容:
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