заставить zsh запускать команду, когда команда не введена

Так много способов, вот несколько:

$ string="a,b,c,d,e"

$ echo "${string//,/$'\n'}"  ## Shell parameter expansion
a
b
c
d
e

$ tr ',' '\n' <<<"$string"  ## With "tr"
a
b
c
d
e

$ sed 's/,/\n/g' <<<"$string"  ## With "sed"
a
b
c
d
e

$ xargs -d, -n1 <<<"$string"  ## With "xargs"
a
b
c
d
e
1
25.04.2019, 02:54
1 ответ

Можно попробовать использовать хуки preexecи precmd:

preexec(){ cmd=$1; }
precmd(){ if [ "$cmd" ]; then lcmd=$cmd; cmd=; else; echo "<no command> last was <$lcmd>"; fi; }

zsh$ :
zsh$
<no command> last was <:>
zsh$ pwd
/home2/ahq

Вы должны полностью прочитать подраздел Hook Functionsна справочной странице zshmisc(1), особенно часть об аргументах, которые передаются в preexec.

Кроме того, вместо прямого определения функций ловушек вы можете использоватьadd-zsh-hook:

autoload -Uz add-zsh-hook
add-zsh-hook -Uz precmd my_precmd
1
28.01.2020, 00:13

Теги

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