Выбрать язык: English 🇺🇸
Пользователи MacOS iTerm 2 должны включить мета-ключ — https://coderwall.com/p/_lmivq
Комбинация клавиш | Значение |
---|---|
Ctrl + a, Home | Переместить курсор в начало командной строки |
Ctrl + e, End | Переместить курсор в конец командной строки |
Ctrl + f, → | Переход на один символ вперёд (вправо) от курсора |
Ctrl + b, ← | Переход на один символ назад (влево) от курсора |
Alt + b, Esc + b | Переместить курсор назад (влево) на одно слово |
Alt + f, Esc + f | Переместить курсор вперёд (вправо) на одно слово |
Ctrl + xx | Переход от курсора в начало строки и обратно |
Комбинация клавиш | Значение |
---|---|
Alt + ?, Tab + Tab | Автодополнение команды или имени файла |
Ctrl + u | Удалить все символы от курсора до начала командной строки |
Ctrl + k | Удалить все символы от курсора до конца командной строки |
Ctrl + w | Удалить символы от курсора до пробела слева |
Alt + Backspace | Удалить символы от курсора до начала слова |
Alt + d, Esc + d | Удалить от курсора до конца слова |
Ctrl + y | Вставить символ, слово или текст, удаленные приведенными выше сочетаниями клавиш |
Alt + y | Смотреть в буфере удаленные слова для вставки. Работает после нажатия Ctrl + y |
Ctrl + h | Удалить перед курсором один символ |
Ctrl + d | Удалить под курсором один символ |
Alt + \ | Удалить любое количество пробелов вокруг курсора |
Ctrl + _ | Откатить редактирование |
Alt + r, Esc + r | Отменить все изменения содержимого строки |
Alt + c | Превращает под курсором букву в заглавную и переводит курсор в конец слова |
Alt + u | Переводит все буквы от курсора и до конца слова в заглавные |
Alt + l | Переводит все буквы от курсора и до конца слова в нижний регистр |
Alt + t, Esc + t | Замена текущего слова под курсором на предыдущие слово |
Ctrl + t | Замена символа перед курсором на предыдущий символ |
Комбинация клавиш | Значение |
---|---|
Ctrl + r | Искать команду в истории (эквивалентно: vim ~/.bash_history) |
Ctrl + g | Выйти из режима поиска в истории |
Ctrl + p, ↑ | Предыдущая команда в истории |
Ctrl + n, ↓ | Следующая команда в истории |
Alt + < | Переход к первой команде в буфере истории |
Alt + ., Esc + . | Вставить последний аргумент предыдущей команды |
Ctrl + o | Выполняет введённую команду и оставляет её же в командной строке |
Комбинация клавиш | Значение |
---|---|
Ctrl + l | Очистка экрана |
Ctrl + s | Остановить вывод на экран |
Ctrl + q | Возобновить вывод на экран, если он был приостановлен комбинацией Ctrl + s |
Ctrl + c | Прервать выполнение текущей команды |
Ctrl + z | Приостановить выполнение текущей команды (для возобновления выполните fg) |
Shift + Ctrl + c | Копировать в буфер |
Shift + Ctrl + v | Вставить из буфера |
Ctrl + d | Выйти из командной оболочки Bash |
Bash имеет некоторые удобные функции, которые используют '!'
с командами bash.
Общая запись '![event][:word[:modifier[:modifier]...]]'
.
Вы можете опустить разделитель слов ':'
, если обозначение слова начинается с '^'
, '$'
, '*'
, '-'
, или '%'
.
Если обозначение слова предоставляется без спецификации события, в качестве события используется предыдущая команда.
После необязательного обозначения слова можно добавить последовательность из одного или нескольких модификаторов, каждому из которых предшествует ':'.
События | Значение | Пример |
---|---|---|
! | Начните подстановку истории, за исключением случаев, когда за ней следует пробел, вкладка, конец строки, ' = ' или ' (’ (когда опция оболочки extglob включена с помощью shopt builtin). |
|
!n | Выполнить команду n с начала истории. |
$ history 1 echo foo bar baz 2 history $ !1 #Выведет команду сохраненную в истории #+ и выполнит ее echo foo bar baz #Результат выполнения foo bar baz |
!-n | Выполнить команду n с конца истории. |
$ history 1 echo foo 2 echo bar 3 echo baz 4 history $ !-3 echo bar bar |
!! | Выполнить последнюю команду. Синоним ‘!-1’. |
$ echo foo bar baz foo bar baz $ !! echo foo bar baz foo bar baz |
!string | Выполнить последнюю команду, содержащую в себе string. |
$printf '%s\n' foo foo $ echo bar bar $ !pri printf '%s\n' foo foo |
!?string[?] | Смотрите самые последние команды, содержащие в себе string. ? в конце может быть опущен, если за string немедленно следует новая строка. |
$printf '%s\n' foo foo $ echo bar bar $ !?ntf printf '%s\n' foo foo $ !?bar echo bar bar |
^string1^tring2^ | Быстрая Замена. Повторите последнюю команду, заменив string1 на string2. Эквивалент `!!:s/string1/string2`. |
Дополнительные сведения см. `s/old/new/` в разделе Модификаторы.
$ echo foo foo $ ^echo^printf '%s\n'^ printf '%s\n' foo foo |
!# | Повторите всю командную строку перед этим событием. |
$ echo foo; echo bar; !#echo baz echo foo; echo bar; echo foo; echo bar; echo baz foo bar foo bar baz |
Слово | Значение | Пример |
!:0 (zero) | 0-е слово. Для многих приложений, это командное слово. |
$ echo foo foo $ !:0 echo |
!:n | n-е слово. |
$ echo foo bar baz foo bar baz $ echo !:2 echo bar bar |
!^ | Первый аргумент; то есть, слово 1. |
$ echo foo bar baz foo bar baz $ echo !^ echo foo foo |
!$ | Последний аргумент. |
$ echo foo bar baz foo bar baz $ echo !$ echo baz baz |
!% | Слово совпадает с последним поиском `?string?` |
$ echo foo foo $ printf '%s\n' bar bar $ !?ch echo foo foo $ !% baz echo baz baz $ !?bar printf '%s\n' bar bar $ echo !% echo bar bar |
!:x-y | Диапазон слов; `-y` сокращает `0-y`. |
$ echo foo bar baz foo bar baz $ echo !:2-3 echo bar baz bar baz $ !:-1 echo bar bar |
!* | Все слова, кроме 0-го. Это синоним `1-$`. Это не ошибка использовать `*`, если в событии есть только одно слово - в этом случае возвращается пустая строка. |
$ echo foo bar baz foo bar baz $ printf '%s\n' !* printf '%s\n' foo bar baz foo bar baz |
!:x* | Сокращает `x-$` |
$ echo foo bar baz foo bar baz $ printf '%s\n' !:2* printf '%s\n' bar baz bar baz |
!:x- | Сокращает `x -$`, как `x*`, но опускает последнее слово. |
$ echo foo bar baz foo bar baz $ printf '%s\n' !:0- printf '%s\n' echo foo bar echo foo bar |
Модификаторы | Значение | Пример |
!:p | Распечатать новую команду, но не выполнять ее. Распечатанная команда сохраняется в истории, поэтому вы можете использовать Ctrl + p для повторного ввода ее в текущем приглашении. |
$ echo foo bar baz foo bar baz $ !:p #Printed, but not executed echo foo bar baz $ !:*:p foo bar baz |
!:h | Удалите все в конце пути после последнего `/`, включая последний `/` |
$ echo foo /example/path/bar.txt baz foo /example/path/bar.txt baz $ !:p:h echo foo /example/path |
!:t | Удалите все в начале пути до последнего `/`, включая последний `/` |
$ echo foo /example/path/bar.txt baz foo /example/path/bar.txt baz $ !:p:t bar.txt baz |
!:r | Удалите все в конце после `.suffix`, включая `.suffix`, оставив только имя. |
$ echo foo /example/path/bar.txt baz foo /example/path/bar.txt baz $ !:p:r echo foo /example/path/bar |
!:e | Удалите все в начале до `.suffix`, включая `.`. |
$ echo foo /example/path/bar.txt baz foo /example/path/bar.txt baz $ !:p:e txt baz |
!:q | Процитируйте подставленные слова, избегая дальнейших подстановок. |
$ echo foo 'bar baz' foo bar baz $ !:p:q 'echo foo '\'bar baz'\''' |
!:x | Процитируйте подставленные слова как ‘!:q’, разделив пробелами, табами и новыми строками. |
$ echo foo 'bar baz' foo bar baz $ !:p:x 'echo' 'foo' ''\'bar' 'baz'\''' |
s/old/new/ | Заменить old на new в строке события. Вместо `/` может использоваться любой разделитель. Разделитель может быть экранирован в old и new обратным слэшем "\". Если `&` появляется в new, то заменяет old. Обратный слэш "\" будет экранироватьь `&`. Конечный разделитель является необязательным, если он является последним символом в строке ввода. |
$ echo foo bar foo bar $ !:p:s/foo/baz echo baz bar |
!:& | Повторите предыдущую замену. |
$ echo foo bar foo bar $ !:p:s/foo/baz echo baz bar $ printf '%s\n' foo foo $ !:p:& printf '%s\n' baz |
!:g !:a |
Вызовите изменения, которые будут применяться ко всей строке события. Используется в сочетании с `s`, как в `gs/old/new/`, или с `&`. |
$ echo foo bar foo foo bar foo $ !:p:gs/foo/baz echo baz bar baz |
G | Примените модификатор `s` один раз к каждому слову в событии. | Результат такой же, как в модификаторе `g` |