В этой статье мы рассмотрим ещё несколько "фишек" Bash: пользовательский ввод для тех случаев, когда вы хотите чтобы пользователь "нажал Enter для продолжения"; чтение строки ввода и сохранение ее в переменной для последующей обработки. Мы также рассмотрим, как найти страницы руководства для встроенных команд, которые в противном случае могут показаться недоступными.
В этом цикле статей вы узнаете:
- Полезные советы, приемы и методы работы с командной строкой Bash
- Как взаимодействовать с командной строкой Bash продвинутым образом
- Как отточить свои навыки работы с Bash в целом и стать более опытным пользователем Bash
Содержание:
- Требования к программному обеспечению и условные обозначения
- Просим пользователя нажать Enter для продолжения
- Считываем ввод из скрипта
- Где эта manpage?!
Требования к программному обеспечению и условные обозначения
Категория | Требования или используемая версия программного обеспечения |
---|---|
Система | Свободные дистрибутивы GNU/Linux |
Программное обеспечение | Командная строка Bash, система на базе Linux |
Другое | Различные утилиты, которые либо включены в оболочку Bash по умолчанию, либо могут быть установлены с помощью sudo apt-get install tool-name (где tool-name представляет собой инструмент, который вы хотите установить) |
Условные обозначения | # - требует, чтобы заданные linux-команды выполнялись с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo .$ - требует, чтобы заданные linux-команды выполнялись от имени обычного непривилегированного пользователя |
Пример 1: Просим пользователя нажать Enter для продолжения
Приходилось ли вам писать сценарий, в котором вы хотели попросить пользователя "нажать любую клавишу, чтобы продолжить"? Просить пользователя нажать любую клавишу явное не лучшая идея - некоторые пользователи могут нажать клавишу power 🙂 - а вот попросить пользователя нажать клавишу Enter не так уж сложно в рамках скрипта:
$ cat test.sh
#!/bin/bash
read -p 'Нажмите Enter, чтобы продолжить...'
echo 'Спасибо. Enter нажат... Приходите снова...'
Флаг -p
(prompt) для read
создает текстовую подсказку.
Давайте проверим!
Я вот нажал Enter и... скрипт сработал правильно.
Пример 2: Считываем ввод из скрипта
Давайте рассмотрим Пример 1 подробнее и запишем введённые данные в переменную:
Всё работает. Вы можете использовать read --help
для получения дополнительной информации. Обратите внимание, что man read
не работает, так как это приведет вас к руководству программиста Linux по выполнению чтения файла!
Настоятельно рекомендуется прочитать руководство по read
, так как по умолчанию read будет делать некоторые интересные разделения слов. В нашем примере это было скрыто из-за того, что мы указали только одну переменную хранения в команде read, но можно узнать гораздо больше, особенно если вы знаете, как работать с переменной IFS
, которая указывает - нескольким инструментам Bash - каким должен быть разделитель, в сочетании с указанием нескольких переменных хранения.
Кстати, статью о скриптинге в Bash можно найти в нашем блоге тут.
Пример 3: Где эта manpage?!
Как мы видели в Примере 2, иногда кажется, что страница man отсутствует или приводит к неверному результату, как в нашем примере с man read
. Однако это не так. Причина того, что некоторые man-страницы кажутся недоступными, заключается в том, что они предназначены для встроенных команд.
Вместо этого вы можете использовать команду man builtins
, чтобы получить доступ к руководству для всех встроенных команд.
Таким образом, если вы хотите получить доступ к полному руководству, например, для команды read
, вы можете воспользоваться командой man builtins
и найти там команду read.
Если вы хотите узнать больше о Bash в целом, не забудьте прочесть и остальные статьи из цикла:
- Полезные советы и фишки оболочки Bash, Часть 1
- Полезные советы и фишки оболочки Bash, Часть 2
- Полезные советы и фишки оболочки Bash, Часть 3
- Полезные советы и фишки оболочки Bash, Часть 4
- Полезные советы и фишки оболочки Bash, Часть 5
Заключение
В этой статье мы рассмотрели ввод в командной строке и оперированием им в скрипте. Мы рассмотрели, как попросить пользователя нажать клавишу Enter, чтобы продолжить, а также как прочитать строку ввода и сохранить ее в переменной. Мы также намекнули на дальнейшее изучение read
и IFS
, и, наконец, рассмотрели, как найти manpages для встроенных команд. Наслаждайтесь!
Оригинал статьи можно найти здесь.

Sample bio text.