Как заставить `man` работать для встроенных команд оболочки и ключевых слов?

Я использую команду man все время, когда хочу получить информацию о конкретной команде. Но это не сильно помогает мне, когда эта конкретная команда является встроенной оболочкой. Например:

man cd

возвращает:

No manual entry for cd

Мой вопрос: можно заставить man также работать для всех встроенных команд оболочки (например, cd, alias ], history и т. Д.) И ключевые слова (например, if, while, [[, { и т. Д.)?

56
задан 28 March 2014 в 20:46

4 ответа

Эти help команда, когда используется с -m опция, может отобразить информацию о встроенных командах в формате псевдостраницы справочника. Например:

help -m cd | less

отобразит информацию [приблизительно 116] команда в формате почти точно как в странице руководства.

Запуск с этой команды можно перенестись man команда в одной функции в Вашем .bashrc файл следующим образом:

man () {
    case "$(type -t -- "$1")" in
    builtin|keyword)
        help -m "$1" | sensible-pager
        ;;
    *)
        command man "$@"
        ;;
    esac
}

После того, как это man будет работать также на всю оболочку встроенные команды и ключевые слова. Например:

man :

отобразится:

NAME
    : - Null command.

SYNOPSIS
    :

DESCRIPTION
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

SEE ALSO
    bash(1)

IMPLEMENTATION
    GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
0
ответ дан 28 March 2014 в 20:46
man bash-builtins

Это содержит отрывки справки для встроенных команд, хотя в немного более сжатом формате, чем help эквивалентный.

0
ответ дан 28 March 2014 в 20:46

Можно установить страницы руководства об использовании системы POSIX для разработки как,

sudo apt-get install manpages-posix-dev

Это предоставит страницы справочника для оболочки builtins.

$ type cd
cd is a shell builtin

Теперь попробуйте,

$ man cd
CD(P)                      POSIX Programmer's Manual                      CD(P)

NAME
   cd - change the working directory

SYNOPSIS
   cd [-L | -P] [directory]


...
13
ответ дан 28 March 2014 в 20:46

Это решение работает отлично, но является чем-то вроде шутки также, потому что первая вещь, я думал, когда я считал Ваш вопрос, была, 'Кто все еще буквально использует человека из командной строки? Не все просто Google страница справочника они хотят (так, чтобы они получили необычные вещи как неограниченная прокрутка)?'. Тогда я понимал, что сайты I Google обычно, у всех есть оба типа команд итак, почему не только используют их для обеспечения универсального интерфейса страницы справочника через все команды. Следовательно, эта забава родилась.

Это требует интернет-соединения для любых записей, которые Вы уже не искали, по крайней мере, однажды. Также требуются эти два небольших приложения, которые отсутствуют в стандартной установке Ubuntu:

 sudo apt-get install tidy html2text

Они не абсолютно необходимы, но они действительно помогают заставить его выглядеть немного более хорошим. Опрятный уберет HTML, и html2text отформатирует тот HTML как форматированный текст (который обычно довольно тривиален, так как большинство этих сайтов уже в текстовом формате и просто обернутое в < pre> теги.

Теперь все, что необходимо сделать, добавляет это до конца ~/.profile:

function iman() {
    if [ ! -d "/usr/share/iman" ]; then
        sudo mkdir -m a=rwx /usr/share/iman
    fi
    if [ ! -f "/usr/share/iman/$1.html" ]; then
        curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html"; 
    fi
    if [ -f "/usr/share/iman/$1.html" ]; then
        cat "/usr/share/iman/$1.html";
    else
        echo "Entry not found."
    fi
}

После того, как Вы выйдете из системы и затем обратно в Вас, должен быть в состоянии ввести это:

iman cd

и это отобразит страницу справочника для cd.

Это использует каталог данных (/usr/share/iman) для уменьшения наших сетевых требований (таким образом, он будет работать на записи, которые Вы уже нашли прежде даже без соединения; также для уменьшения нагрузки на этот случайный сайт страниц справочника Linux я нашел с системными записями, которые мы хотим в нем также). Если Вы не будете больше использовать это, то Вы захотите удалить это для восстановления дискового пространства.

Хотелось бы надеяться, остальное является довольно прямым.

0
ответ дан 28 March 2014 в 20:46

Другие вопросы по тегам:

Похожие вопросы: