«Курим» man'ы в удобном виде.

Возможности консоли и консольных утилит насколько велики, что даже продвинутые пользователи не смогут запомнить всех параметров их работы. И если вы хотите глубже освоить азы Терминала, то лучшим другом и учителем для вас станет команда вызова справки – man. Как она работает? – Достаточно просто! Выполняем:

man команда 

И в окне отобразится подробнейшая справка о упомянутой команде. Теперь остаётся только «курить маны»…
Вызов man в Терминале Mac OS X. Стандартный способ просмотра справки.
И всё бы хорошо, но в таком виде, как эта справка представляется, изучать её ну совсем уж неудобно. И тут к нам на помощь приходит всё тот же Терминал и парочка хитрых трюков…

 

Вариант 1.

Выполняем вот такую команду:

man -t команда | open -f -a /Applications/Preview.app 

И смотрим что происходит…
Вызов man в Терминале Mac OS X. Просмотр стравки в PDF.
А происходит следующее: вся справка конвертируется в PDF и открывается через приложение Просмотр. Теперь этот документ можно распечатать или сохранить в электронном виде. Изучать форматированный текст намного удобнее. Но на этом мы не остановимся. Запоминать такую длинную команду лишь для того, чтоб вывести форматированный текст тоже не очень удобно. Поэтому мы создадим функцию, вызов которой, взамен привычного man, будет сразу выводить форматированный текст. Приступим. Запускаем Терминал и получаем права root’a (для этого потребуется ввод пароля администратора системы):

sudo -s

Создадим пустой файл с именем, например, manlook – этой командой, вместо man, мы будем вызывать справку:

touch /usr/bin/manlook

Открываем созданный пустой файл manlook при помощи консольного текстового редактора:

nano /usr/bin/manlook

И вставляем в него следующий скрипт, можно «копи-пастом» Cmd ⌘ + CCmd ⌘ + 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-страницу»:
Контекстое меню в Терминале Mac OS X.
Откроется новое окно с читабельной инструкцией:
Альтернативный способ вызова man-справки через контекстое меню в Терминале Mac OS X.
Если вы знаете еще способы отображения man страниц пишите нам.

Share this article
0
Share
Prev Post

Как синхронизировать события и дни рождения между Facebook и Календарём Mac OS X.

Next Post

8 Классных Mac приложений и бесплатно? -Ага :)

Comments 10
  1. Здорово! Это ж на сколько понятней становиться информация. Можно спокойно (сохранив отдельно) изучить, разобраться. Молодец. Очень полезно.

  2. Как посмотреть man для COMPGEN?

    MacBook:~ user$ man compgen
    No manual entry for compgen

    MacBook:~ user$ manlook compgen
    No manual entry for compgen

    🙁 🙁 🙁

    1. 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

  3. Пара дополнений:

    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.

    1. почему то не работает? не могли бы подсказать в чем дело?
      изначальная инструкция не сработала ввиду того, что root почему то не может скопировать файл manlook в /usr/bin, а вашим способом выдает manlook:1: = not found (переименовал функцию).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read next