This version of the page http://gluf.net.ua/how-to/tryuki-v-bash/ (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2011-11-20. The original page over time could change.
GNU/Linux Ubuntu Funs » Трюки в bash

Трюки в 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

Эта запись была оставлена Понедельник, февраля 23, 2009 в 2:31 и относится к категориям: Bash, How To, Tips. Вы можете отслеживать комментарии по RSS 2.0 ленте. Вы можете оставить комментарий или trackback с Вашего сайта.

Оставить комментарий

Надо-бы залогиниться, чтоб оставить комментарий.