Почему не окружают builtins, имеют надлежащие страницы справочника?

Sed...

sed -e 's/^\([0-9][0-9]*\),.*|\(.*\)/\1\2/'

если первое поле не является числовым, то оно может быть изменено на что-то как

sed -e 's/^\([^,][^,]*\),.*|\(.*\)/\1\2/'
33
09.11.2014, 20:44
3 ответа

Итак, в конце тому, что я сделал, это перейти в командную строку Grub Command и запустите команды запуска для Windows из / boot / grub / grub .cfg строка по линии. Это код пункта меню в GRUB.CFG

MENUNGRENTRY 'Windows 8 (Loader) (ON / DEV / SDA3)' - класс Windows --Class os

$menuentry_id_option 'osprober-chain-A6A4F8AFA4F882DB' {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  A6A4F8AFA4F882DB
        else
          search --no-floppy --fs-uuid --set=root A6A4F8AFA4F882DB
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
}

и строки, которые я бежал:

insmod part_msdos
insmod ntfs
set root='hd0,msdos3'
parttool ${root} hidden- # Causes the beep and the computer freeze...
# There are more commands before you can boot

Поэтому я решил пропустить эту команду. Что нужно сделать, это сделать модификации в раздел таблицу ввода (из Руководство GRUB ) или в этом конкретном случае установите раздел «скрытый» ввод в false. Я понятия не имею, почему это происходит, я не проверил его.

То, что я получил, было следующим

menuentry 'Windows 8 (loader) (on /dev/sda3)' --class windows --class os $menuentry_id_option 'osprober-chain-A6A4F8AFA4F882DB' {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  A6A4F8AFA4F882DB
        else
          search --no-floppy --fs-uuid --set=root A6A4F8AFA4F882DB
        fi
        drivemap -s (hd0) ${root}
        chainloader +1
}

, и теперь он работает великолепно!

-121--90894-

Поскольку встроенные являются частью оболочки. Любые ошибки или история, которые у них есть ошибки и история самой оболочки. Они не являются независимыми командами и не существуют за пределами оболочки, в которую они встроены.

Эквивалент, для Bash , по меньшей мере, является командами . Например:

$ help while
while: while COMMANDS; do COMMANDS; done
    Execute commands as long as a test succeeds.

    Expand and execute COMMANDS as long as the final command in the
    `while' COMMANDS has an exit status of zero.

    Exit Status:
    Returns the status of the last command executed.

Все сочинения Bash имеют страницы страниц. Даже Справка :

$ help help
help: help [-dms] [pattern ...]
    Display information about builtin commands.

    Displays brief summaries of builtin commands.  If PATTERN is
    specified, gives detailed help on all commands matching PATTERN,
    otherwise the list of help topics is printed.

    Options:
      -d    output short description for each topic
      -m    display usage in pseudo-manpage format
      -s    output only a short usage synopsis for each topic matching
        PATTERN

    Arguments:
      PATTERN   Pattern specifiying a help topic

    Exit Status:
    Returns success unless PATTERN is not found or an invalid option is given.

:

$ help help
help: help [-dms] [pattern ...]
    Display information about builtin commands.

    Displays brief summaries of builtin commands.  If PATTERN is
    specified, gives detailed help on all commands matching PATTERN,
    otherwise the list of help topics is printed.

    Options:
      -d    output short description for each topic
      -m    display usage in pseudo-manpage format
      -s    output only a short usage synopsis for each topic matching
        PATTERN

    Arguments:
      PATTERN   Pattern specifiying a help topic

    Exit Status:
    Returns success unless PATTERN is not found or an invalid option is given.

Вдохновленный скриптом @ Mikeserv SED , вот небольшая функция, которая будет распечатать соответствующую раздел страницы человека, используя Perl. Добавьте эту строку в файл инициализации вашей оболочки ( ~ / .bashrc для Bash):

manperl(){ man "$1" | perl -00ne "print if /^\s*$2\b/"; }

Затем вы запускаете его, давая ему страницу человека и имя раздела:

$ manperl bash while
       while list-1; do list-2; done
       until list-1; do list-2; done
              The while command continuously executes the list list-2 as long as the last command in the list list-1 returns an exit
              status of zero.  The until command is identical to the while command, except that the test is negated; list-2 is  exe‐
              cuted  as  long  as the last command in list-1 returns a non-zero exit status.  The exit status of the while and until
              commands is the exit status of the last command executed in list-2, or zero if none was executed.

$ manperl grep SYNOPSIS
SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

$ manperl rsync "-r"
       -r, --recursive
              This tells rsync to copy directories recursively.  See also --dirs (-d).
26
27.01.2020, 19:37

, в то время как это правда, что некоторые сочинения оболочки могут иметь скудро, показывая в полном руководстве - особенно для тех Bash - Спецификаторы, которые вы, вероятно, используете только в системе GNU («Люди GNU», как правило, не верят в Man и предпочитают свою собственную информацию Страницы) - Подавляющее большинство POSIX Утилиты - Встроенные оболочки или иным образом - очень хорошо представлены в Руководстве POSIX Programmer.

Вот отрывок из нижней части моего человек (который, вероятно, длиной 20 страниц или около того ...)

enter image description here

Все это там, а другие не упоминаются такие как Set , Прочитайте , Break ... Ну, мне не нужно их называть все. Но обратите внимание на (1p) в правом нижнем углу - он обозначает POSIX категорию 1 ручной серии - это страницы , о которых я говорю.

Может быть, вам просто нужно установить пакет? Это выглядит многообещающим для системы Debian. В то время как Помощь полезно, если вы можете найти его, вы должны определенно получить это POSIX RUDING RUD серии. Это может быть чрезвычайно полезно. И это составляющие страницы очень подробны.

, в сторону, встроенные оболочки почти всегда перечислены в определенном разделе конкретной руководства Shell. ZSH , например, имеет целый отдельный на странице для этого - (я думаю, что это итоги в 8 или 9 или около того человека ZSH страницы - В том числе Zshall , который огромен.)

Вы можете просто GREP , конечно , конечно:

man bash 2>/dev/null | 
grep '^[[:blank:]]*read [^`]*[-[]' -A14

   read [-ers] [-a aname] [-d  delim]  [-i  text]  [-n
   nchars]  [-N  nchars]  [-p prompt] [-t timeout] [-u
   fd] [name ...]
          One line is read from the standard input, or
          from  the  file descriptor fd supplied as an
          argument to the -u  option,  and  the  first
          word is assigned to the first name, the sec‐
          ond word to the second name, and so on, with
          leftover words and their intervening separa‐
          tors assigned to the last  name.   If  there
          are  fewer  words read from the input stream
          than names, the remaining names are assigned
          empty  values.   The  characters  in IFS are
          used to split the line into words using  the
          same  rules  the  shell  uses  for expansion

... который довольно близко к тому, что я использовал, когда Поиск Shell Page Man . Но помощь довольно хорошо в Bash в большинстве случаев.

Я на самом деле работал над скриптом SED , чтобы справиться с такими вещами. Это то, как я схватил раздел на картинке выше. Это все еще дольше, чем мне нравится, но это улучшается - и может быть довольно удобным. В своей нынешней итерации он довольно надежно извлеките контекстно-чувствительную секцию текста, что соответствует разделу или заголовку подразделения на основе [a] pattern [s], учитывая его на командной строке. Он окрашивает свой вывод и отпечатки на STDOUT.

Это работает, оценивая уровни отступа. Не пустые входные линии обычно игнорируются, но когда она сталкивается с пустой строкой, она начинает обращать внимание. Он собирает линии оттуда до тех пор, пока оно не проверило, что текущая последовательность определенно в дальнейшем отступила в дальнейшем, чем выполнила свою первую строку, прежде чем происходит очередная пустая строка, либо оно падает нить и ждет следующего пробела. Если тест успешно, он пытается сопоставить линию свинца против своей командной строки ARGS.

Это означает, что матч образец будет соответствовать:

heading
    match ...
    ...
    ...
        text...

.. и ..

match
   text

.. но нет ..

heading
    match
    match

    notmatch

.. или ..

         text

         match
         match
         text

         more text

Если совпадение может Быть начать печать. Он будет распределять ведущие пробелы сопоставленной линии со всех линий, которые он печатает - поэтому независимо от уровня отступа, он нашел эту линию на нем, как будто она была в верхней части. Он будет продолжать печатать, пока он не сталкивался с другой строкой на равном или меньшем уровне отступа, чем его сопоставленная линия - поэтому целые разделы схватываются только сопоставленным списком, включая любые / все подразделы, которые они могут содержать.

Итак, в основном, если вы просите его сопоставить шаблон, он будет делать это только против подходящего предмета какого-либо рода и будет распечатать все текст, который он находит в разделе, во главе с его матчем. Ничего не сохраняется, так как это делает это, кроме отступа к вашей первой линии - и поэтому он может быть очень быстрой и ручкой \ N Evline отделял вход практически любого размера.

Мне немного понять, как выяснить, как рекурсировать на подзаголовки, как следующее:

Section Heading
    Subsection Heading

Но я сортировал его в конце концов.

Я должен был переделать все это ради простоты, хотя. Пока, прежде чем у меня было несколько маленьких петель, которые делают в основном одни и те же вещи, в нескольких разных способах соответствовать их контексту, разные их средства рекурсии мне удалось сделать дублировать большинство кода. Теперь есть две петли - одна печатающая и одна проверка отступа. Оба зависят от того же теста - цикл печати начинается, когда тестовые пропускания и цикл отступа попадают, когда он не удается или начинается на пустой строке.

Весь процесс очень быстрый, потому что большую часть времени это всего лишь /./ d Электрикает любую не пустую линию и перемещается к следующему - даже результаты ZShall экран мгновенно. Это не изменилось.

В любом случае, это очень полезно до сих пор. Например, чтение вещь выше можно сделать:

mansed bash read

... и он получает весь блок. Это может принимать какие-либо узоры или что угодно,Или несколько аргументов, хотя первый всегда является страницей Man , в которой она должна искать. Вот картина некоторые его вывода после того, как я сделал:

mansed bash read printf

enter image description here

... Оба блока возвращаются целыми. Я часто использую это как:

mansed ksh '[Cc]ommand.*'

... для которого это довольно полезно. Также, получение Synops [es] делает его действительно удобным:

enter image description here

здесь, если вы хотите, чтобы убрать его - я не виню тебя, если вы не все.

mansed() {
MAN_KEEP_FORMATTING=1 man "$1" 2>/dev/null | ( shift
b='[:blank:]' s='[:space:]' bs=$(printf \\b) esc=$(printf '\033\[') n='\
' match=$(printf "\([${b}]*%s[${b}].*\)*" "$@")
sed -n "1p
    /\n/!{  /./{    \$p;d
        };x;    /.*\n/!g;s///;x
    :indent
        /.*\n\n/{s///;x
        };n;\$p;
        /^\([^${s}].*\)*$/{s/./ &/;h;   b indent
        };x;    s/.*\n[^-[]*\n.*//; /./!x;t
        s/[${s}]*$//;   s/\n[${b}]\{2,\}/${n} /;G;h
    };
    #test
    /^\([${b}]*\)\([^${b}].*\n\)\1\([${b}]\)/!b indent
        s//\1\2.\3/
    :print
    /^[${s}]*\n\./{ s///;s/\n\./${n}/
        /${bs}/{s/\n/ & /g;
            s/\(\(.\)${bs}\2\)\{1,\}/${esc}38;5;35m&${esc}0m/g
            s/\(_${bs}[^_]\)\{1,\}/${esc}38;5;75m&${esc}0m/g
            s/.${bs}//g;s/ \n /${n}/g
            s/\(\(${esc}\)0m\2[^m]*m[_ ]\{,2\}\)\{2\}/_/g
        };p;g;N;/\n$/!D
        s//./;  t print
    };
    #match
        s/\n.*/ /;  s/.${bs}//g
        s/^\(${match}\).*/${n}\1/
        /../{   s/^\([${s}]*\)\(.*\)/\1${n}/
        x;  s//${n}\1${n}. \2/; P
    };D
");}

Кратко, рабочий процесс:

  • Любая строка, которая не является пустой, и что не содержит \ N символ EWLine, удаляется с вывода.
    • \ N символы EWLINE никогда не встречаются в пространстве входных шаблонов. Они могут быть только в результате редактирования.
  • : Печать и : отступ - оба взаимозависимых замкнутыми циклами, и являются единственным способом получения \ N EWLINE.
    • : Печать цикла цикла Print начинается, если ведущие символы на линии представляют собой серию пробелов, сопровождаемых \ N символом EWLINE.
    • : Отступ Цикл начинается на пустых линиях - или на : Print Линии цикла, которые вываливаются #test - но : отступ удаляет все Ведущий пустой + \ N Последовательности EWLINE от его вывода.
    • Как только : Print Начинается продолжать выдвигать входные линии, положите ведущее пробеловое пространство до суммы, найденного на первой строке в своем цикле, перевод перевести и подчеркивание Backspace ускользнуло в цветовой терминале, а также Распечатайте результаты до #test .
    • До : отступ начинает его первые проверки H старого пространства для любого возможного продолжения отступа (например, подраздел) , а затем продолжает тянуть в вход Пока #test не удается, и любая линия, следующая за первым, продолжает совпадать [- . Когда строка после первой не соответствует этой структуре, она удаляется - и впоследствии это все следующие строки до следующей пустой строки.
  • #match и #test Бридж Мост два замкнутых петель.
    • #test проходит , когда ведущая серия пробелов короче, чем последовательность, а затем последнее \ N EWLILE в строкой последовательности.
    • #match Добавьте ведущие \ N \ N EWLINES, которые должны начаться : Печать цикл на любой из : отступ выходных последовательностей, которые ведут С матчм любой командной строки ARG. Эти последовательности, которые не отображаются пустыми - и полученная пустая строка передается в : отступ .
5
27.01.2020, 19:37

Каждая оболочка имеет свой набор встроенных. Хотя есть общие возможности, у каждого из них есть свои особенности, которые необходимо задокументировать.

О системах, таких как Linux и FreeBSD (и OSX, который наследует от FreeBSD), где каждая оболочка предоставляется в качестве отдельного пакета, нет страницы человека для встроенных; Вместо этого каждый встроен документирован на странице человека Shell. Итак, прочитайте страницу «Bash Man» для документирования «Убийство Bash» встроенного , прочитайте страницу Dash Man для документирования Dash Убить встроенного встроенного и т. Д. Также есть страница человека для Убить Автономная утилита.

См. Могу ли я получить отдельных страниц человека для встроенных команд Bash? для функции Man , которая показывает внутреннюю документацию Bash вместо страницы человека, если аргумент - это имя Встроенный.

Существуют варианты Unix, которые предоставляют страницы MAN для встроенных со встраиванию оболочки - на самом деле, самые коммерческие варианты делают. Это осуществимо, потому что система поставляется либо одной оболочкой, либо набором известных оболочек. Страница человека обсуждает различия между оболочками. Например, Page PG (1) Page (1) на странице человека на Solaris 10 имеет разделы для Sh , ksh и CSH . Page FG (1) Page (1) PAGE (1) на странице AIX 7.1 Список литературы «Korn Shell» и «SCOARD» korn ", но обсуждает их вместе (они могут поддерживать ровно одинаковых функций для FG ). Page FG (1) на странице человека на TRU64 5.0 обсуждает встроенный KSH и относится к пользователям CSH к странице CSH (1) . SCO , очевидно, поставляется с одной оболочкой. Вы можете установить другие оболочки в качестве добавления пакетов в этих операционных системах; Если вы используете пользовательскую оболочку, вы должны помнить, что страницы MAN для настроек не будут актуальны при использовании оболочки Non-по умолчанию.

1
27.01.2020, 19:37

Теги

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