Как удалить часть пути в интерактивной оболочке?

Можно использовать readlink утилита, с -f опция:

-f, --canonicalize

      canonicalize  by  following  every symlink in every component of
      the given name recursively; all  but  the  last  component  must
      exist

Некоторые дистрибутивы, например, те, которые используют GNU coreutils и FreeBSD, также идут с a realpath(1) утилита, которая в основном просто звонит realpath(3) и делает в значительной степени то же самое.

19
30.09.2011, 22:05
3 ответа

Обычно используемые команды в ударе по умолчанию emacs режим, для обычно используемых клавиатур:

Перемещение

  • Ctrl-p, или: предыдущая команда
  • Ctrl-n, или Вниз: следующая команда
  • Ctrl-b, или Левый: предыдущий символ
  • Ctrl-f или Право: следующий символ
  • Alt-b: предыдущее слово
  • Alt-f: следующее слово
  • Ctrl-a, или Домой: начните команды
  • Ctrl-e или Конец: конец команды

Редактирование

  • BkSpc: удалите предыдущий символ
  • Ctrl-d или Del: удалите текущий символ
  • Alt-BkSpc: удалите слово к левому
  • Alt-d: удалите слово для исправления
  • Ctrl-u: удалите для запуска команды
  • Ctrl-k: удалите к концу команды
  • Ctrl-y: вставьте в последний раз сокращение

Литературная смесь

  • Cltr-/: отмена
  • Cltr-r: возрастающий обратный поиск истории
25
27.01.2020, 19:44
  • 1
    Дополнение: установите ярлык с этой целью в zsh bindkey [key] vi-backward-kill-word –  Vayn 30.09.2011, 22:36
  • 2
    Спасибо. Я добавил это к своему ~/.zshrc файл, и он работает хорошо на меня, когда я нажимаю Alt+Backspace: bindkey "^ [^?" vi-backward-kill-word. Это не идеально. –  Tim Stewart 21.05.2014, 01:13
  • 3
    Alt-Bckspc и Alt-d работают хорошо с filepaths, я примерил их. (на ударе) –  demure 31.08.2015, 00:47

Ударом по умолчанию (и я предполагаю zsh) будет в emacs-режиме. Вы могли попробовать что-то вроде этого:

Esc + b поместит курсор, поддерживают одно слово. Ctrl + k удалит до конца строки.

Большинство современных оболочек (как удар) реализует усовершенствованные особенности редактирования командной строки. Те команды любой близко к emacs, редактирующему (Ctrl +A в течение начала строки, Ctrl + E для конца строки...).

Если Вы - familar с подобным редакторам vi, Вы могли бы попытаться позволить vi-режим.

set -o vi

Это дает Вашей оболочке подобные vi режимы (командный режим / режим вставки), и Вы добираетесь, доступ к стандартным командам (d для удаляют, r для замены...),

В Vi Mode вот то, как Вы сделали бы то, что Вы описали:

Esc (command mode); d; b.
6
27.01.2020, 19:44
  • 1
    , я не сказал бы "Редактирование командной строки, еще более мощен и завершен в vi-режиме", emacs режим имеет команды, чтобы сделать все, что можно сделать в vi режиме. –  enzotib 30.09.2011, 19:35
  • 2
    я признаю, что увлекся немного. Я перефразирую это. –  rahmu 30.09.2011, 19:36
  • 3
    Спасибо за напоминание мне в ударе существует vi-режим, таким образом, я могу использовать db в этом сценарии в ударе. Я также нашел vi-backward-kill-word в zsh то, что я хочу, и это более удобно, чем vi-режим набора в ударе. Но я все еще хочу найти emacs ярлык режима с этой целью в ударе. –  Vayn 30.09.2011, 20:07
  • 4
    Или "alt-b-C". Этот путь не оставляет конечный символ, который db делает в некоторых случаях. –  Wildcard 02.11.2016, 02:31

Существует также unix-filename-rubout для Readline!

# in ~/.inputrc
# press ctrl-b to delete unix filename parts
# see: man bash | less -p 'unix-filename-rubout' and
#      http://www.calmar.ws/vim/vi-bash.html
set editing-mode vi
set keymap vi
"\C-b": unix-filename-rubout
10
27.01.2020, 19:44
  • 1
    По моему скромному мнению, unix-filename-rubout корректный ответ на вопрос, который задают, поскольку он удаляет для разрезания или пробел, тогда как Alt-BkSpc остановится в символах как дефис, подчеркивание, точка, и т.д. –  Steve 16.02.2017, 18:03

Теги

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