Выбрать язык: 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` |
