Трюки в bash
Те, кто перешёл на Linux, скорее всего уже не раз использовали командную строку для установки или настройки чего либо. В начале многим, кто был воспитан на Windows, такой способ управления компьютером кажется очень сложным и неправильным. Но чем больше вы работаете с терминалом, тем больше будете понимать всё удобство работы именно таким способом.
Лично мне особенно удобно стало работать в терминале, когда я узнал о специальных командах bash.
История и bang-bang
История команд — очень удобный инструмент. С помощью стрелок вверх-вниз можно перемещаться по истории введённых команд. Кроме того, с помощью команды history можно просмотреть всю историю команд:
1 2 3 4 5 6 | 190 ps axu | grep htt 191 /www/bin/apachectl start 192 vi /usr/local/lib/php.ini 193 cat /www/logs/error_log 194 ps -auxw | grep http 195 pwd |
Ничего удивительного.
Гораздо интереснее то, что называется bang-bang, или команда !!
!! означает последнюю команду в истории. Т.е. ввод !! в данном случае аналогичен вводу pwd.
Но и это еще не все. Можно ввести !<первые буквы команды>. ! ps в данном случае вызовет ps -auxw | grep http. Но будьте внимательны и сообщайте восклицательному знаку достаточно символов команды. Например ! p в данном случае будет аналогично pwd, а не ps -auxw | grep http (поскольку pwd ниже в истории) как возможно хотелось бы.
: p не просто смайлик
Для того чтобы избежать конфузов при использовании ! можно добавлять к нему смайлик : p. Это заставит bash вывести то, что он собирался выполнить. Кроме того, : p достаточно умен для того, чтобы добавить выведенную команду в историю.
В качестве примера:
! ps: p в нашем случае вернет ps -auxw | grep http. Убедившись что это именно то что нужно, можно ввести !! и bash выполнит ps -auxw | grep http.
Другие способы использования истории
Наверное самый примитивный способ — вызвать команду history, узнав номер необходимой команды, а затем использовать ! N, где N — номер команды в истории (например, !192). Не следует пренебрегать этой возможностью. Иногда запомнить !123 для какой-то постоянно нужной команды гораздо проще чем пользоваться другими способами.
Кстати, : p работает и тут.
Еще один удобный способ — нажать ^r (<Ctrl+R>) и начать вводить первые символы нужной команды. bash будет искать в истории подходящие команды.
Работа с агрументами
!$ (bang-dollar) означает последний аргумент последней команды.
К примеру тут:
1 2 | ls /some/long/path/to/dir/ rm -rf !$ |
В результате выполниться команда rm -rf /some/long/path/to/dir/.
Кстати, : p тут тоже работает.
!* похожа на !$, но превращается во все аргументы последней команды.
Шапочки
Наверняка вы не раз вводили что-то типа
1 | vi /etc/X22/xorg.conf |
Это очень легко поправить с помощью шляпок:
^22^11 заменяет 22 на 11 в предыдущей команде. По аналогии всегда можно использовать ^ошибка^исправление.
Автодополнение
Ну и разумеется не стоит забывать про автодополнение. Один <Tab> дополняет команду насколько можно понять, второй выводит все варианты дальнейшего написания. Однако не следует этим злоупотреблять. Согласитесь, написать less быстрее, чем написать le и долбить по табу.
Алиасы
Полезно дать короткие имена часто используемым командам. Также полезно дать алиасы наиболее частым опечаткам.
Полезными алиасами могут быть:
1 2 3 4 5 6 | alias ls='ls --color=auto' alias mroe='more' alias H='kill -HUP' alias ssh-production='ssh www.myproject.com' alias ssh-qa='ssh qa.myproject.com' alias sl='ls' |
Тэги: bash, Console