Все привыкли редактировать текст в текстовых редакторах, блокнотах, веб-формах и т. д. При наборе мы используем привычные стрелки, кнопки «Конец» и «Домой»; более опытные зажимают «Ctrl» и с помощью стрелочек перемещаются по словам (что, кстати, не всегда срабатывает).
И когда мы заходим в консоль, мы опираемся на те же правила, даже не зная, что bash предлагает очень удобные инструменты и комбинации клавиш, которые значительно упрощают работу и минимизируют количество операций для выполнения задачи.
Кроме того, в bash есть удобные инструменты для работы с историей, множество различных подстановок и другие интересные функции.
В этой статье я опишу наиболее часто используемые мной и любым опытным администратором.
Для того, чтобы все, что я описал, работало, вам не нужно ничего предварительно устанавливать, не нужно писать скрипты, конфиги и прочие дополнения: все эти инструменты совершенно одинаково работают в большинстве современных bash-интерпретаторов, работающих в любой UNIX-системе.
Мой преподавательский опыт подсказывает, что практика – лучший способ понять, полюбить и привыкнуть к новым функциям, поэтому я не стал рисовать голые таблицы, а составил повествование, и рекомендую во время чтения статьи открыть консоль и попробовать все, что ты еще не использовал, руки.
Действия относительно курсора Как обычно, кнопка «Домой» используется для перехода к началу строки, а кнопка «Конец» — для перехода в конец.
Но насколько удобно дотягиваться до этих кнопок при наборе команды? Bash предлагает следить за буквенно-цифровой клавиатурой и использовать комбинации «Ctrl+A» вместо «Home» и «Ctrl+E» вместо «End».
Иногда, набрав длинную команду, вспоминаешь, что перед ней нужно было выполнить еще одну: в этом случае оптимальным способом будет перейти с помощью «Ctrl+A» в начало строки, добавить символ «#».
(тем самым закомментировав команду, но оставив ее в истории), и нажав Enter, после чего можно выполнить нужную команду, найти в истории закомментированную команду, удалить символ комментария и выполнить ее.
Чтобы очистить текст до или после курсора, используйте следующие комбинации клавиш: «Ctrl+K» — удаляет текст от текущей позиции курсора до конца строки, и «Ctrl+U» — до начала строки.
И, наконец, с помощью «Ctrl+C» вы можете удалить всю строку сразу.
Удалить слова можно сразу: «Ctrl+W» удаляет слово слева от курсора, «Alt+D» — справа.
Но удаленные слова также помещаются в буфер; последнее удаленное слово можно вставить, начиная с текущей позиции курсора, используя комбинацию «Ctrl+Y».
Часто в спешке можно набрать 2 символа в неправильной последовательности: в этом случае удобно использовать комбинацию клавиш «Ctrl+T», которая предназначена для замены символа перед курсором и символа под курсором.
.
История Обычно знание подсистем истории bash ограничивается стрелками вверх и вниз.
В работе удобно использовать следующие возможности:
- Восклицательный знак.
Вызывает какую-то команду из истории, а сама история выводится в нумерованном виде на экран с помощью команды истории.
Например: вы можете выполнить пятую команду из истории, набрав «!5», а предыдущую — «!-2».
Предыдущая команда вызывается с помощью "!!", а первая команда в списке (в обратном порядке), начиная с "ro" - с помощью комбинации "!ro".
- Переменные и замены.
Очень часто в новую команду требуется вставить последний аргумент предыдущей.
Яркий пример: с помощью команды ls вы посмотрели содержимое удаленного каталога, и вам нужно перейти в него.
Почему бы не написать полный путь еще раз? Здесь вы можете использовать замену «!$», унаследованную от оболочки C, или собственную переменную «$_».
Оба будут заменены последним аргументом предыдущей команды.
Единственный минус – его нельзя просмотреть или отредактировать.
В этом случае целесообразно использовать клавишу «Alt+».
комбинацию, которая вставит нужный аргумент в текущую позицию курсора, и вы сможете делать с ним все, что захотите.
Также стоит отметить, что если последний аргумент предыдущей команды является подстановочным знаком, то вместо подстановки "!$" будет использоваться весь текст, соответствующий этому подстановочному знаку, а не последний элемент. Вы также можете получить первый аргумент предыдущей команды; для этого используется замена «!^», но на практике она применяется реже.
Опечатку в предыдущей строке можно исправить, не вникая в нее: операция замены «^^» позволяет заменить текст предыдущей команды на новый и выполнить новую команду.
Например: [vorb@localhost ~]$ ls -l /dev/dsa ls: невозможно получить доступ к /dev/dsa: такого файла или каталога нет. [vorb@localhost ~]$ ^dsa^sda ls -l /dev/sda brw-rw---- 1 корневой диск 8, 0 5 апреля 03:18 /dev/sda Здесь ошибочная запись «dsa» предыдущей команды заменяется правильной «sda», и новая команда выполняется успешно.
Здесь на помощь приходит стековый механизм bash, поддерживаемый командами pushd и popd: pushd перемещается в целевой каталог и помещает в стек абсолютный путь предыдущего каталога, а popd, наоборот, выбирает предыдущий путь.
из стека и перемещается в него.
Пример: [vorb@localhost ~]$ pushd /var/cache/urpmi/rpms/ /var/cache/urpmi/rpm ~ [vorb@localhost rpms]$ pushd /etc/urpmi/mediacfg.d/Cooker-2010.0-i586/ /etc/urpmi/mediacfg.d/Cooker-2010.0-i586 /var/cache/urpmi/rpms ~ [vorb@localhost Cooker-2010.0-i586]$ popd /var/cache/urpmi/rpms ~ [vorb@localhost rpms]$ popd ~ [vorb@localhost ~]$ В этом примере я сначала зашел в каталог с кешем urpmi, затем в каталог с конфигами urpmi, затем обратно в каталог с кешем и домой.
Одна из наиболее частых задач, решаемых с помощью этого механизма, — перейти в каталог с конфигами, затем в каталог с кешем, логами или чем-то еще и иметь возможность быстро вернуться обратно.
Кстати, у команды «cd» тоже есть свои хитрости: «cd» без параметров сменит каталог на домашний, «cd ~user» сменит на домашний каталог пользователя.
В принципе, это все, о чем я хотел рассказать в этой статье.
Конечно, это еще не все, и если вы хотите развивать знания в этом направлении, я рекомендую книгу «UNIX: Инструменты» Джерри Пика, Тима О’Рейли и Майка Лукидиса.
Там описан не только bash, но и оболочка C, и ksh, и сколько бы я его ни читал, всегда нахожу для себя что-то новое.
Удачи! Теги: #*nix #bash #комбинации клавиш
-
В Российской Блогосфере Нет Денег
19 Oct, 24 -
Вы Часто Покупаете Бумажные Газеты/Журналы?
19 Oct, 24 -
Компьютерное Зрение. Ответы Экспертов Intel
19 Oct, 24