假设我们在 Linux 上运行此脚本:
/tmp/start.sh
运行后,有什么方法可以检索最后执行的命令的名称吗?
预期产出
start.sh
答案1
在交互式bash
shell 中使用历史扩展:
$ /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'