Sed...
sed -e 's/^\([0-9][0-9]*\),.*|\(.*\)/\1\2/'
если первое поле не является числовым, то оно может быть изменено на что-то как
sed -e 's/^\([^,][^,]*\),.*|\(.*\)/\1\2/'
Итак, в конце тому, что я сделал, это перейти в командную строку 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).
, в то время как это правда, что некоторые сочинения оболочки могут иметь скудро, показывая в полном руководстве - особенно для тех Bash
- Спецификаторы, которые вы, вероятно, используете только в системе GNU («Люди GNU», как правило, не верят в Man
и предпочитают свою собственную информацию
Страницы) - Подавляющее большинство POSIX Утилиты - Встроенные оболочки или иным образом - очень хорошо представлены в Руководстве POSIX Programmer.
Вот отрывок из нижней части моего человек
(который, вероятно, длиной 20 страниц или около того ...)
Все это там, а другие не упоминаются такие как 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
... Оба блока возвращаются целыми. Я часто использую это как:
mansed ksh '[Cc]ommand.*'
... для которого это довольно полезно. Также, получение Synops [es]
делает его действительно удобным:
здесь, если вы хотите, чтобы убрать его - я не виню тебя, если вы не все.
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. Эти последовательности, которые не отображаются пустыми - и полученная пустая строка передается в : отступ
. Каждая оболочка имеет свой набор встроенных. Хотя есть общие возможности, у каждого из них есть свои особенности, которые необходимо задокументировать.
О системах, таких как 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-по умолчанию.