Проще:
while pkill -f 'catalina|java|wrapper-linux-x86-64'; do
sleep 10
done
По-прежнему небезопасно убивать процессы на основании их списка аргументов.
Для этого можно использоватьaliases
хеш-таблицу :
% zmodload -F zsh/parameter p:aliases
% alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
% alias wget="$aliases[wget] -c"
% alias
wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts" -c'
I'd probably also have to do some handling to fall back to the real command if the command wasn't already aliased before
Этого можно добиться, используя ${aliases[wget]:-wget}
. Затем, если $aliases[wget]
пусто, вместо него будет использоваться буквальное значение wget
.
Это можно сделать с помощью некрасивого разбора вывода alias
:
$ alias foo='foo --first'
$ alias foo=$(alias foo | cut --delimiter== --fields=2 | head --bytes=-2 | tail --bytes=+2)' --second'
$ alias foo
alias foo='foo --first --second'
Конечно, если alias
когда-нибудь напечатает псевдоним в любом другом формате (несколько строк или разные кавычки ), все ставки сняты. Он также не обрабатывает случай, когда псевдоним еще не установлен :
$ unalias foo
$ alias foo=$(alias foo | cut --delimiter== --fields=2 | head --bytes=-2 | tail --bytes=+2)' --second'
bash: alias: foo: not found
$ alias foo
alias foo=' --second'