Доступ к последней команде (не аргументы) из PROMPT_COMMAND - PullRequest
0 голосов
/ 23 января 2019

У меня есть PROMPT_COMMAND= в моем .bash_profile.Каждый раз, когда пользователь вводит команду, она запускается.Я хочу получить первое слово последней команды пользователем.

Например, если пользователь запускает: $ printf "Hey!", я хочу получить доступ к printf из моего PROMPT_COMMAND.

$0 дает мне -bash и $1, $2, ... дает мне аргументы, как сказано на сайте ниже.https://wiki.bash -hackers.org / scripting / posparams # the_first_argument

Но как мне получить доступ к первому слову, например printf в приведенном выше примере?

Предпочтительно,Я хочу использовать встроенные команды как можно более чисто и аккуратно.

1 Ответ

0 голосов
/ 23 января 2019

Вы можете использовать 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

GNU: Встроенные средства Bash History

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...