06.06.09 17:28 lwilis

Tips & tricksПолезняшки при работе в bash

Бывает, приходится открывать окно терминала и набивать строки на клавиатуре. Например, пытаешься решить проблему, народ на форуме помогает, - какие строчки нужно добавить в такие-то файлы. Что-то удается скопировать и вставить, иное нужно набрать самостоятельно.

Проходит 1 час, второй, и уже решения есть, но нет результата. А спустя время, выясняешь, что где-то букву пропустил, в другом месте пробел не поставил, а иногда целое слово напечатал верно, но не там.

На мой взгляд, такие ситуации возникают чаще всего у человека, который пытается разобраться в одном вопросе, а на него как снежный ком наваливаются пробелы в знаниях из других областей. И одна из таких областей - шелл, то есть shell (в частности bash).

Человек устает постоянной ручной и нудной работы. И пока все удобство командной строки ему недоступно (не буду о причинах) - остается только гадать как это линуксоиды могут любить такое убожество.

Дальше я приведу несколько полезных приемов, которые сам использую постоянно. Все они открытиями не являются, и узнал их либо где-то в инете, либо в документации.

Открываем окно терминала и действуем.

ESC . означает ввести последнее использованное слово. Удобно использовать, когда нужно выполнить команду (ls /foo/bar), а потом захотелось еще и посмотреть файл в каталоге /foo/bar.

^БЫЛО^НУЖНО означает заменить то, что БЫЛО в последней введенной строке на то, что НУЖНО и выполнить новую команду

А еще можно просто ставить коментарии для строки, к которой хочешь вернуться. То есть, допустим, ты набираешь длинную строку, а потом возникает необходимость эту строку запомнить, но не выполнять. Делаем так: нажимаем Ctrl+a (переходим на начало строки), нажимаем # и ENTER. Таким образом строка попала в историю и к ней можно вернуться позже.

!! последняя использованная команда. Удобно, если команду выполнил, но забыл sudo. Делаем sudo !!

Alt+- Alt+u (Зажать "Alt", за ним нажать "-", отпустить кнопки, потом Зажать "Alt", за ним "u") Сделать слово слева от курсора большими буквами. Удобно при выводе значений переменных окружения.

Alt+- Alt-c Сделать слово слева от курсора с большой буквы.

Alt+- Alt-d Удалить слово влево до слеша.

Только нужно помнить, что все эти сочетания клавиш должны добраться до шелла целыми, поэтому если их зохаваит другое приложение (менеджер окон, например) - то шеллу ничего не достанется.


Теги:

pluton 06.06.09 18:10 # +0
ещё про историю: очень удобная комбинация Ctrl+R (поиск по хистори снизу вверх), потом вводим кусок команды. ещё Ctrl+R - поиск дальше. Ctrl+C - отмена поиска.
кстати, это сочетание ^R работает в шелле psql и scilab. скорее всего, и во многих других тоже
Minoru 07.06.09 00:11 # +0
В ZSH работает.
vint 10.07.09 11:24 # +0
кстати, это сочетание ^R работает в шелле psql и scilab. скорее всего, и во многих других тоже
дык потомучто readline все юзают
Minoru 07.06.09 00:28 # +2
В принципе, неплохой рассказик. Новичку действительно довольно тяжело работать с шеллом первое время, и обучение его таким вот трюкам — первое, что должен сделать любой гуру :)
Правда, я бы посоветовал подойти как-то более обобщённо — то есть для начала упомянуть, что в шелле вообще-то есть история — можно юзать Up, Down и Ctrl+R для повторного использования уже использованных команд. Сюда же !! и ^pattern^match. И не забудьте упомянуть про автодополнение по Tab! ;)
lwilis 07.06.09 02:18 # +1
более обобщенно в оф. документации, не находите?

да про гуру позабавило.
Minoru 07.06.09 12:21 # +-1
более обобщенно в оф. документации, не находите?
Может быть, и так… Но новички же читают welinux, а не документацию :P
hello 07.06.09 01:54 # +2
!! последняя использованная команда. Удобно, если команду выполнил, но забыл sudo. Делаем sudo !!


ещё можно вот так sudo и M-.

Alt+- Alt+u (Зажать "Alt", за ним нажать "-", отпустить кнопки, потом Зажать "Alt", за ним "u") Сделать слово слева от курсора большими буквами. Удобно при выводе значений переменных окружения.


ещё можно вот так M-b (назад на одно слово) и M-u (сделать большими буквами)

Alt+- Alt-c Сделать слово слева от курсора с большой буквы.


ещё можно вот M-b M-c

Alt+- Alt-d Удалить слово влево до слеша.


ещё можно вот так M-backspace

И вот еще довольно полезные сочетания:

C-l - очистить экран
M-b - предыдущие слово
M-f - следующие слово
С-a - в начало строки
C-e - в конец строки
С-p, C-n - предыдущая/следующая команда
С-d, C-h - удалить символ
C-w - удалить слово

Для удобного набора длинных команд можно нажать С-xC-e и только что набранная команда откроется в редакторе установленном в переменной $EDITOR

// M == Meta == Alt; C == Ctrl; bash в режими емакса
lwilis 07.06.09 02:14 # +0
Про Meta я не хотел упоминать вообще хотелось дать минимум. Его запомнить проще. А за дополнения спасибо.
sqrrl 07.06.09 11:23 # +0
Спасибо, многого не знал.
aiva 07.06.09 11:28 # +0
остается только гадать как это линуксоиды могут любить такое убожество

Думаю, насчет убожества ты погорячился. Назвать шелл убожеством, а после этого думать, что ты Ъ-линуксоид, по меньшей мере странно.

Для тех же, кого восхитила мощь шелл, вот несколько ссылок
Горячие клавиши bash
Несколько реально полезных bash-уловок
Приёмы работы в коммандной строке *NIX
Фокусы с автодополнением в bash
Использование списка аргументов в bash и zsh в интерактивном режиме
Собрание лучших шпаргалок по Linux

И программирование в bash
Bash by example (eng)
Minoru 07.06.09 12:22 # +0
Думаю, насчет убожества ты погорячился. Назвать шелл убожеством, а после этого думать, что ты Ъ-линуксоид, по меньшей мере странно.
Я так понял, что это было сказано с точки зрения не автора, а новичка — то есть автор просто написал то, что думает начинающий, видя шелл.
lwilis 07.06.09 23:43 # +0
опередил.
Minoru 07.06.09 12:26 # +0
Забыл написать: спасибо за содержательный комментарий! Не смотря на то, что я полтора месяца назад ушёл с баша на zsh (поклон muhas'у), ссылки почитаю — судя по названиям, должен найти много полезного.
lwilis 07.06.09 23:45 # +0
за ссылки спс.
про убожество - ты меня поразил.
aiva 08.06.09 23:18 # +1
Тогда приношу извинения - погорячился, наверное, все-таки я :)
Посты Комментарии
Последние посты
Посты Комментарии
Последние комментарии
Посты Комментарии
Изменения
Посты Комментарии Изменения Черновики Избранное
Черновики (все)
Посты Комментарии Изменения Черновики Избранное
Избранное (всё)
Посты Комментарии Изменения Черновики Избранное
Лучшие блоги (все 127)
Элита (все 2421 из 196 городов)
welinux.ru