我的PROMPT_COMMAND=
中有独立的.bash_profile
。每次用户输入命令时,该命令就会运行。
我想按用户获取最后一条命令的第一个单词。
例如,如果用户运行:$ printf "Hey!"
,我想从我的printf
访问PROMPT_COMMAND
。
$0
给我-bash
,而$1
,$2
,...给我论点,如下面的网站所述。
https://wiki.bash-hackers.org/scripting/posparams#the_first_argument
但是在上面的示例中,如何访问第一个单词,例如printf
?
最好,我想尽可能多地使用内置命令。
答案 0 :(得分:1)
您可以使用 fc
:
$ printf "%s %s\n" "foo" "bar"
foo bar
$ fc -ln -1
printf "%s %s\n" "foo" "bar"
这会显示带有参数和怪异间距的整个命令,所以我想你可以做到:
$ fc -ln -1 | awk '{ print $1 }'
printf
编辑:如果您不想按 Return 作为fc
回来,则可以这样做:
$ fc -ln -1 | awk '$1 !~ /fc/ {print $1}'
要在~/.bash_profile
中创建功能:
# Show last command without args
lcm () { fc -ln -1 | awk '$1 !~ /lcm/ {print $1}' ; }
然后例如:
$ date
Wed Jan 23 16:29:14 MST 2019
$ lcm
date