псевдоним для выполнения той же команды с учетными данными sudo [дубликат]

Делать это в preexec было бы слишком поздно. К тому моменту код уже был разобран. Если вы измените его, его нужно будет снова проанализировать (и, возможно, zsh потребуется запросить дополнительные строки для завершения кода).

Возможно, здесь вы можете сделать это в виджете accept-line, то есть непосредственно перед тем, как редактор строки передаст строку парсеру оболочки:

accept-line() {
  emulate -L zsh       # default zsh behaviour locally
  set -o extendedglob  # with extendedglob for ## (= ERE +) below

  BUFFER=${BUFFER##[[:blank:]]##} # remove leading blanks

  # remove blanks after newlines in case a multiline buffer is accepted
  # for instance after a safe-paste or a newline entered with <Alt+Ret>
  BUFFER=${BUFFER//$'\n'[[:blank:]]##/$'\n'}

  # call original accept-line
  zle .$WIDGET
}
zle -N accept-line
1
23.02.2017, 12:37
1 ответ

псевдонимы не могут иметь аргументов, используйте функцию:

function SU { sudo $*; }
-1
28.01.2020, 02:12

Теги

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