заполнить из предыдущих аргументов команды

-fне меняет поведение tarпо отношению к потокам, файлам или чему-то подобному; он указывает имя используемого архива .

Я не знаю ни одного варианта tar, который может обрабатывать отсутствие аргумента для опции -f, и я не знаю ни одного надежного способа сделать это. Как говорит cas , вам нужно помнить, что -fвсегда принимает аргумент. Один из способов сделать его менее подверженным ошибкам -— всегда выделять его; легче пропустить параметр fв такой последовательности, как -xzvf, чем с отдельным -f.

Еще лучше всегда использовать -fс -, если необходимо; это позволяет избежать зависимости от поведения tarбез опции -f(, которая зависит от параметров времени компиляции -и переменной TAPE).Один из способов решить эту проблему — всегда начинать с -f -после действий и при необходимости изменять -.

2
24.09.2021, 23:20
1 ответ

Следующий код заставляет Right работать нормально, если только он не находится в конце командной строки. Если он находится в конце командной строки, он ищет предыдущую совпадающую строку истории, начинающуюся с текста в текущей строке (, это должен быть точно такой же текст, включая пробелы ). Если он находит его, он вставляет следующую часть совпадающей строки до начала следующего слова. С числовым аргументом N он извлекается из N-й соответствующей строки.

function immediate-complete-word-from-full-history {
  emulate -L zsh
  setopt extended_glob
  local line=${${history[(R)${(b)LBUFFER}*]}[${NUMERIC:-1}]}
  local blank=$' \t\n\f'
  if [[ -z $line ]]; then return; fi
  line=${line#$LBUFFER}
  LBUFFER+=${line%"${line##[^$blank]##[$blank]#}"}
}

function forward-char-or-immediate-complete-word-from-full-history {
  if [[ -n $RBUFFER ]]; then
    zle forward-char
  else
    immediate-complete-word-from-full-history
  fi
}

zle -N forward-char-or-immediate-complete-word-from-full-history
bindkey '\e[C' forward-char-or-immediate-complete-word-from-full-history
bindkey '\eOC' forward-char-or-immediate-complete-word-from-full-history

Известная ошибка :это не работает со строками истории, которые содержат разрыв строки, потому что fcвыводит разрыв строки как \n, что неотличимо от фактического наличия \nвнутри строки. Полностью правильное решение должно было бы вытягивать строки из $history.

2
25.09.2021, 08:46

Теги

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