Так много способов, вот несколько:
$ 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
Можно попробовать использовать хуки 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