Создать псевдоним из существующего псевдонима

Проще:

while pkill -f 'catalina|java|wrapper-linux-x86-64'; do 
  sleep 10
done

По-прежнему небезопасно убивать процессы на основании их списка аргументов.

1
07.01.2021, 02:25
2 ответа

Для этого можно использовать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.

2
18.03.2021, 22:38

Это можно сделать с помощью некрасивого разбора вывода 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'
-1
18.03.2021, 22:38

Теги

Похожие вопросы