如何知道最后执行的命令的名称?

如何知道最后执行的命令的名称?

假设我们在 Linux 上运行此脚本:

/tmp/start.sh

运行后,有什么方法可以检索最后执行的命令的名称吗?

预期产出

start.sh

答案1

在交互式bashshell 中使用历史扩展:

$ /some/path/script.sh
$ printf 'Basename of last command line: %s\n' "$(basename "!!")"
printf 'Basename of last command line: %s\n' "$(basename "/some/path/script.sh")"
Basename of last command line: script.sh

!!是一个历史扩展事件指示符,它将被最后一个命令替换。请参阅手册中的“历史扩展”部分bash

请注意,它将!!扩展到完整的命令行。


在 shell 脚本中,您始终知道前一个脚本的名称,因为您只是输入了它。

/some/path/script.sh

echo 'script.sh just finished'

相关内容