как прервать bash скрипт
Команда exit в Bash и коды выхода
Часто при написании сценариев Bash вам необходимо завершить сценарий при выполнении определенного условия или выполнить действие на основе кода выхода команды.
В этой статье мы рассмотрим встроенную команду exit Bash и статусы выхода выполненных команд.
Статус выхода
Каждая команда оболочки возвращает код выхода, когда она завершается успешно или безуспешно.
По соглашению нулевой код выхода указывает, что команда завершилась успешно, а ненулевое значение означает, что произошла ошибка.
Команда date завершена успешно, код выхода равен нулю:
Если вы попытаетесь запустить ls в несуществующем каталоге, код выхода будет отличным от нуля:
Код состояния можно использовать для выяснения причины сбоя команды. На странице руководства каждой команды содержится информация о кодах выхода.
При выполнении многокомандного конвейера статус выхода конвейера соответствует состоянию последней команды:
Команда exit
Команда exit закрывает оболочку со статусом N Он имеет следующий синтаксис:
Если N не задано, код состояния выхода — это код последней выполненной команды.
При использовании в сценариях оболочки значение, указанное в качестве аргумента команды exit возвращается оболочке как код выхода.
Примеры
При запуске списка команд, разделенных && (И) или || (ИЛИ), статус выхода команды определяет, будет ли выполнена следующая команда в списке. Здесь команда mkdir будет выполнена, только если cd вернет ноль:
Если сценарий завершается exit без указания параметра, код выхода из сценария — это код последней команды, выполненной в сценарии.
Вот пример, показывающий, как завершить сценарий, если он запущен пользователем без полномочий root:
Выводы
Каждая команда оболочки возвращает код выхода при завершении. Команда exit используется для выхода из оболочки с заданным статусом.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как использовать коды завершения в Bash-скриптах
Инструменты автоматизации и мониторинга удобны тем, что разработчик может взять готовые скрипты, при необходимости адаптировать и использовать в своём проекте. Можно заметить, что в некоторых скриптах используются коды завершения (exit codes), а в других нет. О коде завершения легко забыть, но это очень полезный инструмент. Особенно важно использовать его в скриптах командной строки.
Что такое коды завершения
В Linux и других Unix-подобных операционных системах программы во время завершения могут передавать значение родительскому процессу. Это значение называется кодом завершения или состоянием завершения. В POSIX по соглашению действует стандарт: программа передаёт 0 при успешном исполнении и 1 или большее число при неудачном исполнении.
Почему это важно? Если смотреть на коды завершения в контексте скриптов для командной строки, ответ очевиден. Любой полезный Bash-скрипт неизбежно будет использоваться в других скриптах или его обернут в однострочник Bash. Это особенно актуально при использовании инструментов автоматизации типа SaltStack или инструментов мониторинга типа Nagios. Эти программы исполняют скрипт и проверяют статус завершения, чтобы определить, было ли исполнение успешным.
Кроме того, даже если вы не определяете коды завершения, они всё равно есть в ваших скриптах. Но без корректного определения кодов выхода можно столкнуться с проблемами: ложными сообщениями об успешном исполнении, которые могут повлиять на работу скрипта.
Что происходит, когда коды завершения не определены
В Linux любой код, запущенный в командной строке, имеет код завершения. Если код завершения не определён, Bash-скрипты используют код выхода последней запущенной команды. Чтобы лучше понять суть, обратите внимание на пример.
Как использовать коды завершения в Bash-скриптах
Проверяем коды завершения
После рефакторинга скрипта получаем такое поведение:
Создаём собственный код завершения
Как использовать коды завершения в командной строке
Скрипт уже умеет сообщать пользователям и программам об успешном или неуспешном выполнении. Теперь его можно использовать с другими инструментами администрирования или однострочниками командной строки.
Скрипт использует коды завершения, чтобы понять, была ли команда успешно выполнена. Если коды завершения используются некорректно, пользователь скрипта может получить неожиданные результаты при неудачном выполнении команды.
Дополнительные коды завершения
Адаптированный перевод статьи Understanding Exit Codes and how to use them in bash scripts by Benjamin Cane. Мнение администрации Хекслета может не совпадать с мнением автора оригинальной публикации.
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
В прошлый раз мы говорили о работе с потоками ввода, вывода и ошибок в bash-скриптах, о дескрипторах файлов и о перенаправлении потоков. Сейчас вы знаете уже достаточно много для того, чтобы писать что-то своё. На данном этапе освоения bash у вас вполне могут возникнуть вопросы о том, как управлять работающими скриптами, как автоматизировать их запуск.
До сих пор мы вводили имена скриптов в командную строку и нажимали Enter, что приводило к немедленному запуску программ, но это — не единственный способ вызова сценариев. Сегодня мы поговорим о том как скрипт может работать с сигналами Linux, о различных подходах к запуску скриптов и к управлению ими во время работы.
Сигналы Linux
В Linux существует более трёх десятков сигналов, которые генерирует система или приложения. Вот список наиболее часто используемых, которые наверняка пригодятся при разработке сценариев командной строки.
Код сигнала | Название | Описание |
1 | SIGHUP | Закрытие терминала |
2 | SIGINT | Сигнал остановки процесса пользователем с терминала (CTRL + C) |
3 | SIGQUIT | Сигнал остановки процесса пользователем с терминала (CTRL + \) с дампом памяти |
9 | SIGKILL | Безусловное завершение процесса |
15 | SIGTERM | Сигнал запроса завершения процесса |
17 | SIGSTOP | Принудительная приостановка выполнения процесса, но не завершение его работы |
18 | SIGTSTP | Приостановка процесса с терминала (CTRL + Z), но не завершение работы |
19 | SIGCONT | Продолжение выполнения ранее остановленного процесса |
Если оболочка bash получает сигнал SIGHUP когда вы закрываете терминал, она завершает работу. Перед выходом она отправляет сигнал SIGHUP всем запущенным в ней процессам, включая выполняющиеся скрипты.
Bash-скрипты не контролируют эти сигналы, но они могут распознавать их и выполнять некие команды для подготовки скрипта к последствиям, вызываемым сигналами.
Отправка сигналов скриптам
Оболочка bash позволяет вам отправлять скриптам сигналы, пользуясь комбинациями клавиш на клавиатуре. Это оказывается очень кстати если нужно временно остановить выполняющийся скрипт или завершить его работу.
Завершение работы процесса
Комбинация клавиш CTRL + C генерирует сигнал SIGINT и отправляет его всем процессам, выполняющимся в оболочке, что приводит к завершению их работы.
Выполним в оболочке такую команду:
Завершение работы процесса с клавиатуры
Временная остановка процесса
Число в квадратных скобках — это номер задания, который оболочка назначает процессу. Оболочка рассматривает процессы, выполняющиеся в ней, как задания с уникальными номерами. Первому процессу назначается номер 1, второму — 2, и так далее.
Если вы приостановите задание, привязанное к оболочке, и попытаетесь выйти из неё, bash выдаст предупреждение.
Просмотреть приостановленные задания можно такой командой:
Выглядит её вызов так:
Перехват сигналов
Команда trap позволяет скрипту реагировать на сигналы, в противном случае их обработка выполняется оболочкой без его участия.
Рассмотрим пример, в котором показано, как при вызове команды trap задаётся код, который надо выполнить, и список сигналов, разделённых пробелами, которые мы хотим перехватить. В данном случае это всего один сигнал:
Перехват сигнала выхода из скрипта
Перехватить сигнал выхода из скрипта можно, использовав при вызове команды trap имя сигнала EXIT :
Перехват сигнала выхода из скрипта
Модификация перехваченных сигналов и отмена перехвата
Для модификации перехваченных скриптом сигналов можно выполнить команду trap с новыми параметрами:
Модификация перехвата сигналов
После модификации сигналы будут обрабатываться по-новому.
И нажмём CTRL + C на клавиатуре.
Сигнал, перехваченный до отмены перехвата
Выполнение сценариев командной строки в фоновом режиме
Иногда bash-скриптам требуется немало времени для выполнения некоей задачи. При этом вам может понадобиться возможность нормально работать в командной строке, не дожидаясь завершения скрипта. Реализовать это не так уж и сложно.
Запустим его, указав после имени символ амперсанда ( & ):
Это приведёт к тому, что он будет запущен как фоновый процесс.
Запуск скрипта в фоновом режиме
Скрипт будет запущен в фоновом процессе, в терминал выведется его идентификатор, а когда его выполнение завершится, вы увидите сообщение об этом.
При таком подходе, если выйти из терминала, скрипт, выполняющийся в фоне, так же завершит работу.
Что если нужно, чтобы скрипт продолжал работать и после закрытия терминала?
Выполнение скриптов, не завершающих работу при закрытии терминала
Применим эту методику при запуске нашего скрипта:
Вот что будет выведено в терминал.
Просмотр заданий
Команда jobs позволяет просматривать текущие задания, которые выполняются в оболочке. Напишем такой скрипт:
Запуск и приостановка скрипта
Запустим тот же скрипт в фоновом режиме, при этом перенаправим вывод скрипта в файл так, чтобы он ничего не выводил на экране:
Получение сведений о скриптах
Перезапуск приостановленных заданий
Теперь скрипт выполняется в фоновом режиме.
Если у вас имеется несколько приостановленных заданий, для перезапуска конкретного задания команде bg можно передать его номер.
Для перезапуска задания в обычном режиме воспользуйтесь командой fg :
Планирование запуска скриптов
Вызов команды at выглядит так:
Эта команда распознаёт множество форматов указания времени.
Планирование заданий с использованием команды at
Для того чтобы посмотреть список заданий, ожидающих выполнения, можно воспользоваться командой atq :
Список заданий, ожидающих выполнения
Удаление заданий, ожидающих выполнения
Запуск скриптов по расписанию
Планирование однократного запуска скриптов с использованием команды at способно облегчить жизнь во многих ситуациях. Но как быть, если нужно, чтобы скрипт выполнялся в одно и то же время ежедневно, или раз в неделю, или раз в месяц?
Crontab выполняется в фоне и, основываясь на данных в так называемых cron-таблицах, запускает задания по расписанию.
При планировании запуска скрипта по расписанию crontab принимает данные о том, когда нужно выполнить задание, в таком формате:
Например, если надо, чтобы некий скрипт с именем command выполнялся ежедневно в 10:30, этому будет соответствовать такая запись в таблице заданий:
Здесь универсальный символ « * », использованный для полей, задающих день месяца, месяц и день недели, указывает на то, что cron должен выполнять команду каждый день каждого месяца в 10:30.
Если, например, надо, чтобы скрипт запускался в 4:30PM каждый понедельник, понадобится создать в таблице заданий такую запись:
Нумерация дней недели начинается с 0, 0 означает воскресенье, 6 — субботу. Вот ещё один пример. Здесь команда будет выполняться в 12 часов дня в первый день каждого месяца.
Затем можно вводить команды формирования расписания:
Благодаря этой команде скрипт будет вызываться ежедневно в 10:30. Если вы столкнётесь с ошибкой «Resource temporarily unavailable», выполните нижеприведённую команду с правами root-пользователя:
Организовать периодический запуск скриптов с использованием cron можно ещё проще, воспользовавшись несколькими специальными директориями:
Если поместить файл скрипта в одну из них, это приведёт, соответственно, к его ежечасному, ежедневному, еженедельному или ежемесячному запуску.
Запуск скриптов при входе в систему и при запуске оболочки
Автоматизировать запуск скриптов можно, опираясь на различные события, такие, как вход пользователя в систему или запуск оболочки. Тут можно почитать о файлах, которые обрабатываются в подобных ситуациях. Например, это следующие файлы:
Итоги
Сегодня мы разобрали вопросы, касающиеся управления жизненным циклом сценариев, поговорили о том, как запускать скрипты в фоне, как планировать их выполнение по расписанию. В следующий раз читайте о функциях в bash-скриптах и о разработке библиотек.
Уважаемые читатели! А вы пользуетесь средствами планирования запуска сценариев командной строки по расписанию? Если да — расскажите пожалуйста о них.
Использование быстрых клавиш в командной строке Linux (BASH)
Эта статья посвящена наиболее часто используемым комбинациям клавиш при работе в командной строке Linux (в основном в командном интерпретаторе bash).
Она точно будет полезна начинающим своё знакомство с Linux и, уверен, пригодится тем, кто уже имеет опыт (не всегда годы практики учат работать быстрее).
Никогда не развивал навыка быстрой печати, но знание не одного десятка hotkey’ев, перечисленных в этом материале, позволяет набирать команды со скоростью мысли.
Я попытался продемонстрировать многие примеры при помощи анимированных gif’ок – иногда несколько кадров больше скажут, чем несколько абзацев текста.
Материал был обкатан на вебинаре, и оттуда взяты все примеры (под каждым примером указано время, когда об этом рассказывалось в видео). Видео больше часа и без монтажных склеек, в статье же вынесены все главные моменты и попытка дать более точные определения.
Общие слова и замечания
Большинство продемонстрированных клавиш стандартны для «командной строки Linux», но часть из этих комбинаций специфичны для bash (поэтому и пометил это в заголовке). На текущий момент BASH – наиболее распространенный командный интерпретатор, используемый по умолчанию в большинстве Linux-дистрибутивов. В других командных интерпретаторах или, проще говоря, shell’ах (рекомендую попробовать zsh и fish) могут быть небольшие отличия в работе. Также часть комбинаций прописана в «настройках по умолчанию» (например, в файле /etc/inputrc или в /etc/bashrc), которые тоже могут различаться в разных дистрибутивах. И бывает, что некоторые клавиши могут быть настроены и перехватываться графической оболочкой, в которой запущен командный интерпретатор.
Часть демонстрируемых клавиш относятся к «настройкам терминала». А часть – клавиши из командного интерпретатора BASH, и их можно посмотреть, почитав мануал по bash’у (огромный текст – пользуйтесь поиском):
[00:10:40]
^^^ На приведенном фрагменте из мануала: Запись «(C-r)» означает Ctrl-r , а «M->» означает Alt-> .
Замечание: Если у кого-то настроено переключение раскладки по комбинации Alt-Shift , то учитывайте, что в комбинациях, перечисленных далее и содержащих Alt-Shift , вам надо будет использовать скорее клавишу Esc-Shift (или поменять комбинацию для переключения раскладки клавиатуры, у меня, например, раскладка переключается по CapsLock ).
[00:11:18]
^^^ Здесь показано на примере использования комбинаций для перемещения по «словам» командной строки: Alt-b (или, что то же самое, Esc-b ) и Alt-f (или, что то же самое, Esc-f )
Для демонстраций нажатых клавиш использую утилиту «screenkey».
/.bashrc) bash в vi-режим редактирования и пользоваться привычными комбинациями из vi.
Терминал
А перенастроить, например, так:
♯ stty intr НоваяКлавиша
Ctrl-c – сигнал SIGINT
[00:14:24]
Ctrl-z – сигнал SIGTSTP
А комбинация Ctrl-z используется, чтобы попросить (команде посылается сигнал SIGTSTP) приложение остановить свою работу (не завершая) – «поставить на паузу». Ну, а «разбудить» его можно командой «fg» (или «bg»).
[00:14:36]
Ctrl-d – EOF(окончание ввода данных)
[00:15:51]
^^^ Здесь видно, что любой набираемый текст перенаправляется в файл /tmp/File.txt, и нет никакой фразы (типа «Горшочек, не вари»), которую бы команда cat восприняла как «окончание ввода» – точнее, для этого как раз и надо нажать Ctrl-d .
Также пользуюсь комбинаций Ctrl-d для того, чтобы выйти из консоли (например, после того как переключился командой su под другого пользователя или зайдя по ssh на другую машину) – вместо набора команды «exit» или «logout»:
[00:17:44]
^^^ В правом терминале отображаю историю команд.
. (а внимательный зритель догадается, какой «супер-секретный» пароль у root’а на стенде)
Ctrl-v – ввод следующего символа
[00:19:19]
[00:20:38]
^^^ А в этом примере у меня есть файл «New Text Document.txt», созданный в ОС Windows при помощи программы Notepad в директории, которую я затем открыл на доступ по сети и примонтировал в Linux в директорию /mnt. Программа Notepad (в отличии от Notepad++) создает файл в DOS-формате – в конце каждой строки использует дополнительный символ «Возврат каретки». Терминалы часто по умолчанию этот символ не отображают, но он есть, и поэтому, например, команда ‘ grep «m$» /mnt/New\ Text\ Document.txt ‘ не выведет строку, заканчивающуюся на букву «m». Команда cat с опцией «-v» отображает этот символ. А для того, чтобы при выводе заменить или удалить это символ, воспользовался командой tr (хотя можно было бы использовать специальную для этого утилиту unix2dos).
Ctrl-l – очищает экран
Комбинация Ctrl-l – «очищает» экран.
[00:10:51]
История команд
«Работа с историей команд» – классическая тема обычно из любого начального курса по Linux (по крайней мере, среди тех курсов, которые читаются у нас в «Сетевой Академии ЛАНИТ»). И многие, кто имеет хотя бы небольшой опыт работы с командной строкой, историей команд пользуются – как минимум знают, что она есть, и используют стрелки «вверх» (отобразить предыдущую команду) и «вниз» (отобразить следующую после отображаемой команду в истории команд), чтобы выбрать, какую из ранее введенных команд либо снова выполнить, либо подредактировать и запустить отредактированную. Но помимо стрелок еще есть ряд полезных комбинаций клавиш, которые позволяют работать с историей команд, – быстрее находить нужные команды.
Ctrl-r – Поиск по истории
Комбинация Ctrl-r позволяет искать в истории команд команды, содержащие указанный далее текст.
[00:25:21]
PgUp/PgDown – Поиск по истории
PgUp – отображает предыдущую команду начинающуюся с уже введенного текста, PgDown – следующую.
[00:27:35]
^^^ В этом примере перемещаюсь между командами, начинающимися с «cat». (Часто также ищу команды, начинающиеся с «sudo». Или если мне нужно снова отредактировать какой-то файл, который недавно редактировал: набираю «vi», жму несколько раз PgUp , а затем Enter .)
Alt-_/Alt-./Alt— – вставка аргументов
[00:28:32]
^^^ В данном примере видно, как повторные нажатия Alt-_ вставляют аргументы от пред-пред-…-идущих команд.
[00:30:13]
^^^ В данном примере вставляю в командную строку различные аргументы из предыдущей команды.
Alt-# – текущую команду преобразовать в комментарий
[00:32:03]
Ctrl-o – повтор команд из истории
Комбинация Ctrl-o позволяет повторять серию команд из истории. То есть нужно из истории команд стрелками выбрать первую команду из серии и нажать Ctrl-o – это выполнит текущую команду и выведет из истории следующую. Дальше можно продолжать нажимать Ctrl-o с тем же эффектом.
[00:33:58]
^^^ В примере я написал три команды: одна увеличивает на 1 переменную, которой соответствует год; вторая выводит переменную-год; третья показывает, сколько дней в феврале в указанном году. Дальше, нажимая Ctrl-o , повторяю эту серию из трех команд много раз (один кадр соответствует трем нажатиям).
Автодополнение
Tab – автодополнение (в контексте)
[00:39:20]
^^^ Здесь, например, смотрю (нажав дважды Tab ), что есть несколько команд, начинающихся с «if», добавив «c» и нажав Tab , получаю набранной команду «ifconfig».
[00:39:31]
Дополнения имен пользователей, переменных
[00:40:36]
[00:41:44]
^^^ Здесь дописываю имена пользователей (фактически пишу адрес домашней директории).
Также bash может дополнять не потому, что набранный текст начинается с определенного символа, а по определенным комбинациям клавиш.
Список того, что может дополнять bash, можно посмотреть командой:
Так, например, видно, что:
– покажет список имен пользователей, начинающихся с набранных символов, а дополнить комбинацией Esc-
Ctrl-x @ – список имен машин (согласно /etc/hosts), начинающихся с набранных символов, а дополнить – Esc-@ ;
Alt-* – вставить дополнения, Ctrl-x * – развернуть шаблон
В примерах ниже разворачиваю список файлов:
[00:44:55]
Ctrl-x * – развернет уже написанный в командной строке шаблон, как в примере ниже:
[00:48:39]
Редактирование
Ctrl-w/u/k – вырезать слово/начало/конец строки
Ctrl-w – вырезать слово (от текущего положения курсора до ближайшего ранее в строке пробела/табуляции). Вырезанное можно затем вставить комбинацией Ctrl-y.
[00:52:52]
Ctrl-y – вставить вырезанное
Ctrl-y – вставить вырезанный фрагмент командной строки. (В bash используется свой буфер для хранения вырезанных фрагментов – называется «kill ring»).
Важно: Удобно использовать с Alt-y (позволяет «прокручивать» варианты вставки из буфера).
Также эту возможность часто использую, когда набранную команду, разросшуюся до нескольких строк, хочу сохранить в виде отдельного скрипта – тогда переключаю редактирование команды в редактор и в нём сохраняю набранный текст в файл, как в примере ниже:
[00:53:40]
Ctrl-_ – undo
Перемещение
Ctrl-a/e – в начало/конец строки
[00:52:05]
Alt-b/f и Ctrl-←/→ – предыдущее/следующие слово
Alt-b (и тот же эффект у Ctrl-Left ) – переход в начало предыдущего слова.
Alt-f (и тот же эффект у Ctrl-Right ) – переход в конец следующего слова.
[00:50:10]
Настройки
Подробнее значения действия редактирования командной строки bash можно посмотреть в мануал по bash’у. Действия, упомянутые в этой статье (в порядке упоминания):
clear-screen (C-l) Clear the screen, then redraw the current line, leaving the current line at the top of the screen.
reverse-search-history (C-r) Search backward starting at the current line and moving `up’ through the history as necessary. This is an incremental search.
reverse-search-history (C-r) Search backward starting at the current line and moving `up’ through the history as necessary. This is an incremental search.
history-search-backward Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search.
history-search-forward Search forward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search.
yank-last-arg (M-., M-_) Insert the last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly like yank-nth-arg. Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last word, as if the «!$» history expansion had been specified.
operate-and-get-next (C-o) Accept the current line for execution and fetch the next line relative to the current line from the history for editing. A numeric argument, if supplied, specifies the history entry to use instead of the current line.
), hostname (if the text begins with @), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted.
complete-username (M-
) Attempt completion on the text before point, treating it as a username.
possible-username-completions (C-x
) List the possible completions of the text before point, treating it as a username.
complete-hostname (M-@) Attempt completion on the text before point, treating it as a hostname.
possible-hostname-completions (C-x @) List the possible completions of the text before point, treating it as a hostname.
complete-variable (M-$) Attempt completion on the text before point, treating it as a shell variable.
complete-command (M-!) Attempt completion on the text before point, treating it as a command name. Command completion attempts to match the text against aliases, reserved words, shell functions, shell builtins, and finally executable filenames, in that order.
complete-filename (M-/) Attempt filename completion on the text before point.
possible-filename-completions (C-x /) List the possible completions of the text before point, treating it as a filename.
insert-completions (M-*) Insert all completions of the text before point that would have been generated by possible-completions.
glob-expand-word (C-x *) The word before point is treated as a pattern for pathname expansion, and the list of matching filenames is inserted, replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion.
unix-word-rubout (C-w) Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring.
unix-line-discard (C-u) Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring.
kill-line (C-k) Kill the text from point to the end of the line.
yank (C-y) Yank the top of the kill ring into the buffer at point.
yank-pop (M-y) Rotate the kill ring, and yank the new top. Only works following yank or yank-pop.
undo (C-_, C-x C-u) Incremental undo, separately remembered for each line.
backward-word (M-b) Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits).
forward-word (M-f) Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits).
Есть и много других интересных комбинаций – для примера можно глянуть:
[00:58:35]
Также можно настроить свои привязки – например, чтобы по комбинации «Ctrl-f» выводился результат команды «date»:
[01:00:50]
/etc/inputrc (настройки библиотеки readline)
Так как bash и многие shell’ы используют библиотеку readline для взаимодействия с командной строкой, то можно перенастроить соответствия комбинаций клавиш и действий в /etc/inputrc.
Например, такие строки меняют поведение по умолчанию клавиш «Вверх» и «Вниз»
. вместо предыдущей/последующей команды они будут включать поиск по истории команд – очень удобно, часто этим пользуюсь:
Полезных клавиш, делающих более удобной и быстрой работу в командной сроке, достаточно много, и в этой статье я перечислил только малую часть этих комбинаций клавиш. Зато наиболее часто используемые комбинации.
На этом всё. Надеюсь, было полезно. Если есть какие-то вопросы и уточнения, пишите, я буду рад ответить. Также буду рад упоминаниям в комментариях, что для вас оказалось полезным/новым в этой статье. Так я пойму, что стоило упоминать, а что можно было и пропустить.
Ну, и приходите к нам учиться в «Сетевую Академию ЛАНИТ»!
А в завершение конкурс «для внимательных зрителей».
Кто первым правильно напишет в комментариях ответ на три вопроса, получит 25% скидку на курс по написанию Bash-скриптов:
Дата, когда проходил вебинар «Сетевой Академии ЛАНИТ» по теме этой статьи.
Какой пароль у пользователя root на системе, используемой на вебинаре?