Как развернуть подстроку команды?

Согласно mail(1) страница справочника, list работает просто великолепно:

list    (l) List the valid mail commands.

То, что Вы ищете, вероятно, h или z

headers
        (h) Lists the current windowful of headers.  To view the 
        next or previous group  of headers, see the z command.

z       mail presents message headers in windowfuls as described under 
        the headers command.  You can move mail's attention forward to
        the next window with the z command.  Also, you can move to the
        previous window by using z-.
3
30.10.2012, 15:17
1 ответ

Я не думаю, что можно добраться, инициировали расширение истории и возвращают результат из zsh.

Вот подтверждение концепции для использования zpty модуль для взаимодействия с нижним процессом zsh имейте его, разворачивают строки истории и изучают результат (который мог быть должен сообщить об ошибке или выполнить команду). Поместите первоначальную историю, которую Вы хотите перед каждой попыткой расширения в названном файле prior_history.

#!/usr/bin/zsh
setopt extended_glob
zmodload zsh/zpty
zpty -b inferior_zsh 'PS1=%% PS2=\> TERM=dumb strace -eread,write -o zsh.strace zsh -f'
zpty -r inferior_zsh out $'*\r%'
zpty -w inferior_zsh 'stty -echo'
zpty -r inferior_zsh out $'*\r%'
start='mv /Volumes/hdd1/path/to/a/file.foo'
history_string='!#$:r:s/foo/bar/'
for ((i=1; i <= $#history_string; i++)) {
  zpty -w inferior_zsh "fc -R prior_history"
  zpty -r inferior_zsh out $'*\r%'
  zpty -w inferior_zsh "print -r expansion: ${(q)start} ${history_string[1,$i]}"
  zpty -r inferior_zsh out $'*\r[%>]'
  out=${${out#*$'\r\r\n'}%$'\r\n'% ##$'\r\r%'}
  print -r "$i ${(qqqq)out}"
}
1
27.01.2020, 21:32

Теги

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