0

当我使用!要执行先前的命令,它也会自动打印该命令。有没有办法隐藏这个?

示例:
会发生以下情况:

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

这就是我想要的:

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

3 回答 3

1

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

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

printf (stderr, "%s\n", history_value);
于 2013-02-22T12:55:12.917 回答
0

你不能这样做!!,因为它重复最后一个命令而不是最后一个输出。据我所知,没有一个命令可以实现您的要求。但是,您可以尝试一个简单的 hack:

result=`echo test`
echo "$result"
于 2013-02-22T12:09:17.740 回答
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
于 2013-02-22T15:57:00.170 回答