Оболочка zsh имеет мощный пакет, переименовывают названную команду zmv
.
Сначала необходимо включить zmv
управляйте следующим образом (это может войти в Ваш ~/.zshrc
).
autoload zmv
Базовый синтаксис zmv PATTERN REPLACEMENT
. Шаблон является выражением шарика оболочки. Части шаблона могут быть окружены круглыми скобками. Текст замены может содержать $1
, $2
, и т.д. относиться к Энной заключенной в скобки группе в шаблоне. Например:
zmv 'image(*.png)' '$1'
Можно также попросить, чтобы zsh автоматически определил $1
, $2
, и т.д. соответствовать подстановочным символам в шаблоне:
zmv -w 'image*.png' '$1.png'
!
функция, которая первоначально появилась в оболочке C, назад в дни, прежде чем Вы могли рассчитывать на терминалы, чтобы иметь клавиши со стрелками. Особенно полезно, если Вы добавляете текущее число команды к подсказке (PS1="\!$ "
) таким образом, можно быстро посмотреть экран для получения чисел для прошлых команд.
Теперь, когда можно использовать клавиши со стрелками и вещи как Ctrl-R для поиска истории команд, я не вижу много использования для функции.
Один вариант его, который Вы могли бы все еще найти полезным, !!
, который повторно выполняет предыдущую команду. Самостоятельно, я не нахожу!! Войдите немного быстрее, чем просто ↑, Входят, но может быть полезно при объединении в большую команду.
Пример: общая ошибка пилота на sudo
основанные системы должны забыть sudo
префикс на команде, которая требует дополнительных полномочий. Новичок перепечатывает целую команду. Прилежный студент редактирует команду из истории команд оболочки. Просвещенные типы sudo !!
.
Bash позволяет Вам отключить !
обработка в оболочке с set +o histexpand
или set +H
. Можно отключить его в Zsh с set -K
.
Если нет более длинного ответа здесь существует, конечно, один на Суперпользователе, так как я недавно считал тот. В странице справочника удара можно найти, что огромный раздел назвал РАСШИРЕНИЕ ИСТОРИИ по вопросу.
Можно сделать большое количество больше, чем просто выполненный последняя команда или команда номер X. Можно сделать вещи как !cat
выполнять последнюю команду, которая запустилась с cat
. Или !?bash?:s/bash/csh/
выполняет последнюю команду, содержащую bash
но замены это с csh
.
!!:s/bash/csh/
на самом деле выполняет последнюю команду, затем заменяет удар csh, если существующий. Не последняя команда, которая включала удар. Это было бы !?bash?:s/bash/csh/
или возможно !?bash?:s/%/csh/
– cde
24.01.2016, 16:31
Мой друг послал мне по электронной почте это:
Это - часть библиотеки истории GNU. В ударе это используется, чтобы повторно выполнить команды в Вашей истории. Если Вы хотите быть хардкором, grep для history_expansion_char в bash-4.1/lib/readline/histexpand.c для деталей реализации.
Намного больше может быть, покончили !
такой как:
!-3
!ls
и многое другое. См. 15 Примеров Расширения Истории Bash Linux, которые Необходимо Знать
Конечно, вы можете !!
повторно использовать последнюю команду в оболочке bash. И затем есть !$
для повторного использования последней части вашей последней команды.
напр. просмотреть какой-нибудь файл
less path/to/your/file.txt
Если теперь вы хотите отредактировать тот же файл, вы можете использовать !$
, чтобы получить только путь к файлу из последней команды
vim !$
РЕДАКТИРОВАТЬ:
Вы можете использовать все аргументы предыдущей команды с!*
напр. :Это создаст несколько файлов и удалит их все
$ touch a.txt b.txt c.txt d.txt
$ rm !*
Опять же, вы можете использовать определенный аргумент предыдущей команды
напр. Это создаст 4 файла и удалит 3-й файл (c.txt )
.$ touch a.txt b.txt c.txt d.txt
$ rm !:3
Аналогично,вы можете использовать ряд аргументов из последней команды следующим образом
$ touch a.txt b.txt c.txt d.txt
$ rm !:2-4
Это приведет к повторному использованию аргументов со 2 по 4, которые оценивают выражение какrm b.txt c.txt d.txt
sudo
, или что-то), затем можно сделатьsudo !!
, например. Это могло бы быть немного быстрее, чем "Up/Ctrl-A (или Домой, если Вам повезло),/sudo/space/enter". YMMV. :) – 14.01.2011, 22:57echo 'Hi!'
илиecho "Hi!"
илиecho Hi\!
. Все делают то же самое. – Warren Young 18.07.2013, 19:14