Русский
Русский
English
Статистика
Реклама

Перевод Кунг-фу стиля Linux удобный доступ к справке при работе с bash

В наши дни редакторы кода часто предлагают программистам помощь или справочные сведения, относящиеся к тому, что вводится с клавиатуры. Это может быть всё что угодно от списка коротких вариантов автозавершения ввода до шаблонов для ввода больших фрагментов кода. Если вы уже написали миллион программных строк на некоем языке, то такая вот помощь может вам мешать. Но если вы пишете программы лишь от случая к случаю, вам это может очень пригодиться. Я пользуюсь Linux уже много лет, но понимаю, что есть люди, которые не работают в этой ОС ежедневно. А учитывая растущую популярность Raspberry Pi, учитывая распространённость Linux-серверов, и то, что в Windows 10 появилась возможность работать с bash, оказывается, что всё больше и больше людей пользуются командной оболочкой Linux лишь время от времени. Можно ли как-то облегчить жизнь таким людям? Полагаю, что можно. Специально для этого я написал небольшой скрипт, который называется bashelp.



На самом деле, в сфере справочной информации по Linux-командам есть кое-что хорошее и кое-что плохое. Хорошо здесь то, что в Linux уже давно имеется встроенная команда, позволяющая получать справочные сведения. Это man (сокращение для manual руководство). Если говорить о плохом, то можно отметить, что для получения справки нужно оставить текущее дело и выполнить команду man.

Существуют графические интерфейсы для man, вроде yelp, показанного на следующем рисунке.


Графический интерфейс для man

Для просмотра man-страниц можно даже пользоваться веб-браузером. Но ни один из этих способов получения справочной информации не связан с тем, что пользователь вводит при работе с командной строкой. Для получения справки нужно открывать новое окно, искать там материалы, а потом возвращаться к тому, что делалось до этого. Такое положение дел заставило меня задуматься о том, как создать нечто вроде встроенной системы контекстной помощи для bash.

При создании подобной справочной системы нужно, как и в случае с настройкой автозавершения ввода по нажатию клавиши Tab, учитывать две вещи: во-первых нужна функция, выводящая справочные сведения, во-вторых нужно некое средство, заставляющее readline в нужный момент вызвать эту функцию. Моя система представлена скриптом bashelp.sh, который решает обе вышеописанные задачи. Но он работает только тогда, когда задано значение переменной $DISPLAY, что указывает на то, что в настоящий момент используется графический терминал. В Mac, кстати, работа с графическим интерфейсом устроена не так. Поэтому если вы хотите пользоваться этим скриптом на Mac-компьютере, вам понадобится внести в скрипт некоторые изменения. Если вы сделаете это, и то, что у вас получится, заработает, я с удовольствием взгляну на ваш PR в репозиторий проекта или на форк проекта.

Скрипт позволяет задать клавиатурную команду, вызывающую справку. Я выбрал сочетание клавиш CTRL+Y. Команда bind, используемая в скрипте, полагает, что это сочетание клавиш выглядит как \C-Y. Найти эту команду можно в верхней части кода скрипта. Вы можете выбрать другое сочетание клавиш. Там есть и ещё некоторые настройки. Например, man-справку можно открыть в отдельном окне терминала, или можно запустить графический вариант man. Подробности о настройке скрипта ищите в файле readme.

Сама функция вывода справки устроена очень просто. Если у вас нет графической системы X она работать не будет (опять же обратите внимание на $DISPLAY). Она ожидает, что данные от readline будут в $READLINE_LINE и $READLINE_POINT. Если данных нет скрипт завершает работу. После этого функция берёт первое слово из строки до пробела, а после этого обрабатывает все опции, что позволяет ей открыть справку в том виде, в котором нужно пользователю.

Конечно, это лишь один из примеров того, что можно сделать, вмешиваясь в работу readline. Это полезный приём, который пригодится тем, кто пользуется bash-скриптами или пишет их.

Если вы нуждаетесь в дополнительных настройках bash вы, например, всегда можете поменять приглашение командной строки. А если вам, например, нужно, чтобы справочный скрипт возвращал бы фокус исходному окну, или закрывал бы открытое им окно в определённых обстоятельствах взгляните на этот материал.

Применяете ли вы какие-нибудь особые приёмы при работе со справочными материалами по командам Linux?



Источник: habr.com
К списку статей
Опубликовано: 26.11.2020 16:14:32
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании ruvds.com

Настройка linux

Системное администрирование

Linux

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru