У меня есть тривиальная ошибка, с которой я не могу обойти. Я пытаюсь вернуть различные номера разделов let, чтобы сказать «человек», так как он находится во всех разделах. Я использую команду -s, но у меня проблемы. Каждый раз, когда я его использую, я продолжаю получать «какую страницу руководства вы хотите». Любая помощь?Использование команды -s в сценарии bash
ответ
В случае получения номера раздела команды вы хотите что-то вроде man -k "page_name" | awk -F'-' "/^page_name \(/ {print $1}"
, заменяя любое вхождение page_name
любой командой, в которой вы нуждаетесь.
Это не будет работать для всех систем, так как формат вывода «человек» является «реализацией». Другими словами, формат FreeBSD, OS X, различные варианты Linux и т. Д., Возможно, не совпадают. Например, шахта:
page_name (1) - description
Если вы хотите только номер раздела, я уверен, что есть что-то вы можете сделать такие, как сохранение результата этой линии в переменной оболочке и использовать расширение параметров для удаления круглые скобки вокруг номера раздела:
man -k "page_name" | awk -F'-' "/^page_name \(/ {print $1}" | while IFS= read sect ; do
sect="${sect##*[(]}"
sect="${sect%[)]*}"
printf '%s\n' "$sect"
done
Чтобы получить количество секций команды появляется, добавьте | wc -l
в конце на одной и той же линии, что и done
ключевого слова. Для команды mount
, у меня есть 3:
2
2freebsd
8
Помните, что 'grep 'foo' | awk '{bar}' 'лучше написано 'awk'/foo/{bar} ''. В этом случае 'man -k | awk -F '[()]' '/^page_name \ (/ {print $ 2}' 'может быть ближе к тому, что вам нужно. – tripleee
Я не использовал это изменение только потому, что в нем могут быть пробелы или скобки. Тем не менее, вы правы в отношении '/ foo /'. Я изменил свой ответ. –
Пространства не будут иметь значения, если вы установите разделитель полей для открытия или закрытия круглых скобок. – tripleee
Правильный синтаксис требует аргумент. Обычно вы ищете либо
man -s 1 man
прочитать документацию по команде man(1) или
man -s 7 man
читать о макропакете man(7).
Если вам нужен список стандартных разделов, первый содержит это. Тем не менее, у вас могут быть дополнительные разделы, установленные локально. Например, список каталогов /usr/local/share/man
может содержать дополнительные разделы.
(кстати, -s
не «команда» в этом контексте, это вариант.)
Вы неправильно поняли природу -s
. От man man
:
-S списка, -s списка, --sections = список
Списка является разделённым двоеточием или разделенного запятыми список `заказа конкретных» ручных разделов для поиска. Этот параметр переопределяет переменную окружения $ MANSECT. (Параметр -s правописание для совместимости с System V.)
Так что, когда человек видит man -s man
он думает, что вы хотите посмотреть на странице в разделе «человек» (который, скорее всего, не существует, так как оно не является нормальным разделом), но вы не сказали, на какой странице, поэтому он спрашивает:
Какую страницу руководства вы хотите?
BTW, WRT «человек просто тест Потому что я полагаю, что ее во всех разделах» - Неа, это возможно только в одном, и AFAIK нет никакого слова со страницей в все разделы. Более 2 или 3 были бы очень необычными.
Различные стандартные секции описаны также в man man
.
Существует «интро» страницы в большинстве разделов. – tripleee
Как правило, в разделе 1 (для команды) есть «man' man», а в разделе 7 (для пакета макросов). –
- 1. Использование команды find в сценарии bash
- 2. Создание команды в сценарии bash
- 3. Использование команды find в сценарии Bash для поиска целых чисел
- 4. Использование lynx в сценарии bash
- 5. Использование экрана в сценарии bash
- 6. Выполнение команды sed в сценарии bash
- 7. Запустите две текущие команды в сценарии bash
- 8. Grepping вывод команды в сценарии bash
- 9. Использование СЭД команды в сценарии оболочки
- 10. чтения: Illegal опция -s в сценарии оболочки
- 11. Использование переменных среды в сценарии bash Jenkins
- 12. Использование команды CHMOD в сценарии оболочки
- 13. Как поместить переменную в путь выполнения команды в сценарии Bash
- 14. Вставка переменных в качестве аргументов команды в сценарии bash
- 15. Использование общедоступного ip в сценарии bash
- 16. Использование «альтернативного экрана» в сценарии bash
- 17. Использование Gawk и Printf в сценарии Bash
- 18. Использование ссылок косвенной переменной в сценарии Bash
- 19. Использование специальных символов «заменить» в сценарии bash
- 20. Использование плавающих точек в сценарии Bash
- 21. Нужна "runuser hdfs -s/bin/bash/bin/bash" в Hadoop
- 22. Избегайте команды seq в Bash?
- 23. Использование автозаполнения Bash другой команды
- 24. Как удалить дату из этой команды в сценарии bash
- 25. Использование команды в сценарии оболочки для планирования команды
- 26. Ошибка в сценарии bash
- 27. Запуск команды в сценарии оболочки
- 28. FFmpeg в сценарии bash (цитаты)
- 29. Литеральные цитаты в флагах для команды в сценарии bash
- 30. Проведите вывод команды mysql в переменную в сценарии bash
Можете ли вы опубликовать команду, которую вы пробовали, и полученный результат? –
fev @ ubuntu: ~/Desktop $ man -s man Какую страницу руководства вы хотите? это то, что я вижу – fevjitsu
Вы ищете только раздел «человек», а не все разделы 1, 2, 3 и т. Д., Но какую страницу руководства вы хотите просмотреть из раздела «человек»? –