Оптимизация Процесса Работы В Консоли

Все привыкли редактировать текст в текстовых редакторах, блокнотах, веб-формах и т. д. При наборе мы используем привычные стрелки, кнопки «Конец» и «Домой»; более опытные зажимают «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», и новая команда выполняется успешно.

Навигация по файловой системе Команда «cd», как и автодобавление с помощью кнопки «TAB», никого не удивит. Но часто приходится «пробежаться» по всей файловой системе, а потом вернуться обратно.

Здесь на помощь приходит стековый механизм 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 #комбинации клавиш

Вместе с данным постом часто просматривают: