Возможности консоли и консольных утилит насколько велики, что даже продвинутые пользователи не смогут запомнить всех параметров их работы. И если вы хотите глубже освоить азы Терминала, то лучшим другом и учителем для вас станет команда вызова справки – man. Как она работает? – Достаточно просто! Выполняем:
man команда
И в окне отобразится подробнейшая справка о упомянутой команде. Теперь остаётся только «курить маны»…
И всё бы хорошо, но в таком виде, как эта справка представляется, изучать её ну совсем уж неудобно. И тут к нам на помощь приходит всё тот же Терминал и парочка хитрых трюков…
Вариант 1.
Выполняем вот такую команду:
man -t команда | open -f -a /Applications/Preview.app
И смотрим что происходит…
А происходит следующее: вся справка конвертируется в PDF и открывается через приложение Просмотр. Теперь этот документ можно распечатать или сохранить в электронном виде. Изучать форматированный текст намного удобнее. Но на этом мы не остановимся. Запоминать такую длинную команду лишь для того, чтоб вывести форматированный текст тоже не очень удобно. Поэтому мы создадим функцию, вызов которой, взамен привычного man, будет сразу выводить форматированный текст. Приступим. Запускаем Терминал и получаем права root’a (для этого потребуется ввод пароля администратора системы):
sudo -s
Создадим пустой файл с именем, например, manlook – этой командой, вместо man, мы будем вызывать справку:
touch /usr/bin/manlook
Открываем созданный пустой файл manlook при помощи консольного текстового редактора:
nano /usr/bin/manlook
И вставляем в него следующий скрипт, можно «копи-пастом» Cmd ⌘ + C, Cmd ⌘ + V:
#!/bin/bash current_user=$(whoami) if [ $current_user = root ]; then echo "This function work only from a regular user." else man -t $@ | open -f -a /Applications/Preview.app fi
Нажимаем Ctrl + O, а потом Enter – это для сохранения изменений; потом Ctrl + X – для выхода из консольного текстового редактора nano. Новая команда создана, осталось поправить права доступа и атрибуты:
chown root:wheel /usr/bin/manlook; chmod 555 /usr/bin/manlook; exit
Вот теперь всё готово! Проверим работу, выполнив в терминале команду:
manlook man
И о чудо! Всё работает. Теперь для вызова более читабильной справки можно использовать не man, а manlook. Единственное, что стоит заметить, команда manlook не будет работать из-под root’а, и легкого решения этому я пока не нашёл.
Вариант 2.
Второй вариант не требует создания каких-либо скриптов потому как весь функционал находится в контекстном меню. Запустите Терминал и в окне напишите любую команду, инструкцию на которую вы хотите прочесть и изучить. Теперь сделайте правый клик мышкой на этой команде и в появившемся меню выберите пункт «Открыть man-страницу»:
Откроется новое окно с читабельной инструкцией:
Если вы знаете еще способы отображения man страниц пишите нам.
Здорово! Это ж на сколько понятней становиться информация. Можно спокойно (сохранив отдельно) изучить, разобраться. Молодец. Очень полезно.
Благодарю 😉
Круто – очень удобно и читабельно.
Ага 🙂
Как посмотреть man для COMPGEN?
MacBook:~ user$ man compgen
No manual entry for compgen
MacBook:~ user$ manlook compgen
No manual entry for compgen
🙁 🙁 🙁
Для этой команды просто-напросто нет справки.
compgen [option] [word]
For options [abcdefgjksuv]:
-a means Names of alias
-b means Names of shell builtins
-c means Names of all commands
-d means Names of directory
-e means Names of exported shell variables
-f means Names of file and functions
-g means Names of groups
-j means Names of job
-k means Names of Shell reserved words
-s means Names of service
-u means Names od userAlias names
-v means Names of shell variables
Пара дополнений:
1. Вместо сохранения скрипта в виде отдельного файла можно соответствующий кусок кода поместить в .bash_profile – например, так:
manpdf() {
if [ “$1” == “” ]; then
echo “Missing operand (command name)”
else
man -t $1 | open -f -a /Applications/Preview.app
fi
}
2. Если для просмотра PDF использовать такой удобный и легкий вьюер как Skim, то вся операция проходит в несколько раз быстрее, чем при использовании Preview.
Крутое дополнение! Благодарю!
почему то не работает? не могли бы подсказать в чем дело?
изначальная инструкция не сработала ввиду того, что root почему то не может скопировать файл manlook в /usr/bin, а вашим способом выдает manlook:1: = not found (переименовал функцию).