Исследуя другую проблему, я наткнулся на команду :
locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"
о котором я хотел узнать больше. Итак, я побежал man xargs
и получил следующий вывод:
XARGS(1) General Commands Manual XARGS(1)
NAME
xargs - build and execute command lines from standard input
SYNOPSIS
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
[-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-
str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s max-
chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs]
[--interactive] [--verbose] [--exit] [--no-run-if-empty]
[--arg-file=file] [--show-limits] [--version] [--help] [command
[initial-arguments]]
DESCRIPTION
This manual page documents the GNU version of xargs...
Я пытаюсь научиться лучше использовать документацию для изучения программ для Linux, но этот раздел «Синопсис» пугает новых пользователей. Это буквально выглядит как бред по сравнению с man locate
или man free
.
До сих пор я понимаю, что квадратные скобки означают необязательные, а вложенные скобки означают опции в необязательных. Но как я должен вызывать действительную команду с этим?
Я не прошу помощи с xargs здесь. Я ищу помощь в интерпретации справочной страницы, чтобы понять сложные команды. Я хочу прекратить превращать проиндексированные Google веб-блоги и личную помощь других в мой первый подход к изучению команд Linux.
man man
man man
прочтенияman intro
.Ответы:
Ну, это мой очень личный способ читать страницы справочника:
Manpager
При открытии справочной страницы , используя
man
команду, выход будет отображаться / оказанныйless
илиmore
командами, или любой другой командой , которая будет установлена в качестве пейджера (manpager).Если вы используете Linux, вам, вероятно, предоставлена инфраструктура man, уже настроенная для использования
/usr/bin/less -is
(если вы не установили какой-либо минимальный дистрибутив), какman(1)
описано в разделе «Опции»:Во FreeBSD и OpenBSD это всего лишь вопрос редактирования
MANPAGER
переменной среды, поскольку они в основном будут использоватьсяmore
, а некоторые функции, такие как поиск и выделение текста, могут отсутствовать.Существует хороший ответ на вопрос о том, какие различия
more
,less
иmost
не здесь (не используетсяmost
). Возможность прокрутки назад и прокрутки вперед по странице с помощью Spaceили обоими способами по строке ↓или или ↑(также с использованиемvi
привязок jи k) имеет важное значение при просмотре man-страниц. Нажмите hво время использования,less
чтобы увидеть список доступных команд.И именно поэтому я предлагаю вам использовать в
less
качестве вашего мужского пейджер.less
есть некоторые важные функции, которые будут использоваться во время этого ответа.Как команда отформатирована?
Соглашения по коммунальным предприятиям : Открытые базовые спецификации групп, выпуск 7 - IEEE Std 1003.1, выпуск 2013 г. Вы должны посетить эту ссылку, прежде чем пытаться понять man-страницу. В этой онлайн-справке описывается синтаксис аргументов стандартных утилит и вводится терминология, используемая в POSIX.1-2017 для описания аргументов, обрабатываемых утилитами. Это также косвенно информирует вас о реальном значении слов, таких как параметры, аргументы, опция аргумента ...
Заголовок любой man-страницы будет выглядеть для вас менее загадочно после понимания обозначений утилит:
Имейте в виду, что вы хотите сделать.
Когда вы занимались своими исследованиями,
xargs
вы делали это для мошенничества, верно? У вас была особая потребность в чтении стандартного вывода и выполнении команд на основе этого вывода.Но когда я не знаю, какую команду я хочу?
Используйте
man -k
илиapropos
(они эквивалентны). Если я не знаю , как найти файл:man -k file | grep search
. Прочитайте описания и найдите тот, который будет лучше соответствовать вашим потребностям. Пример:По умолчанию Apropos работает с регулярными выражениями ((
man apropos
прочитайте описание и узнайте, что-r
делает), и в этом примере я ищу каждую страницу руководства, где описание начинается с «report».Чтобы найти информацию, связанную с чтением стандартной обработки ввода / вывода и достижением
xargs
в качестве возможного варианта:Всегда читайте
DESCRIPTION
перед началомНайдите время и прочитайте описание. Просто прочитав описание
xargs
команды, мы узнаем, что:xargs
читает из STDIN и выполняет необходимую команду. Это также означает, что вам нужно будет иметь некоторые знания о том, как работает стандартный ввод, и о том, как манипулировать им через каналы для цепочки команд./bin/echo
. Это дает вам небольшой совет, что если вам нужно связать несколько цепочекxargs
, вам не нужно использовать echo для печати.-0
является способом предотвращения взрыва вещей, используя нулевые символьные разделители. Описание предупреждает вас, что команда, используемая в качестве ввода, должна также поддерживать эту функцию, и что GNUfind
поддерживает ее. Отлично. Мы используем много найти сxargs
.xargs
остановится, если будет достигнут статус выхода 255.Некоторые описания очень короткие, и это в основном потому, что программное обеспечение работает очень просто. Даже не думайте пропустить эту часть справочной страницы ;)
На другие вещи стоит обратить внимание ...
Вы знаете, что вы можете искать файлы с помощью
find
. Есть множество вариантов, и если вы только посмотрите на нихSYNOPSIS
, вы будете поражены ими. Это только верхушка айсберга. ИсключаяNAME
,SYNOPSIS
иDESCRIPTION
, у вас будут следующие разделы:AUTHORS
: люди, которые создали или помогли в создании команды.BUGS
: перечисляет все известные дефекты. Могут быть только ограничения реализации.ENVIRONMENT
: Аспекты вашей оболочки, на которые может повлиять команда, или переменные, которые будут использоваться.EXAMPLES
илиNOTES
: не требующий пояснений.REPORTING BUGS
С кем вам придется связаться, если вы обнаружите ошибки в этом инструменте или в его документации.COPYRIGHT
: Человек, который создал и отказ от ответственности о программном обеспечении. Все связано с лицензией самого программного обеспечения.SEE ALSO
Другие команды, инструменты или рабочие аспекты, которые относятся к этой команде и не могут поместиться ни в одном из других разделов.Скорее всего, вы найдете интересную информацию об аспектах инструмента в разделе примеров / заметок.
пример
На следующих шагах я возьму
find
в качестве примера, поскольку его концепции «более просты», чемxargs
объяснения (одна команда находит файлы, а другая имеет дело с stdin и конвейерным выполнением других командных выходных данных). Давайте просто притворимся, что ничего не знаем (или очень мало) об этой команде.У меня есть конкретная проблема: мне нужно искать каждый файл с
.jpg
расширением и размером 500 КБ (KiB = 1024 байт, обычно называемый кибибайт) или более в папке ftp-сервера.Сначала откройте руководство
man find
. ЭтоSYNOPSIS
тонкий. Давайте поищем что-то внутри руководства: введите /плюс нужное вам слово (size
). Он будет индексировать много записей,-size
которые будут рассчитывать конкретные размеры. Застрял. Не знаю, как искать с «больше» или «меньше» заданного размера, и мужчина не показывает это мне.Давайте попробуем и поищем следующую найденную запись, нажав n. ХОРОШО. Нашел что то интересное
find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Может быть, этот пример показывает нам, что с-size +100M
его помощью найдутся файлы размером 100 МБ или более. Как я могу подтвердить? Переход к заголовку страницы и поиск других слов.Опять давайте попробуем слово
greater
. Нажатие gприведет нас к руководству страницы. /greater
и первая запись:Звучит здорово. Кажется, этот блок руководства подтвердил то, что мы подозревали. Однако это относится не только к размерам файлов. Он будет применяться ко всем,
n
что можно найти на этой странице руководства (как сказано в фразе: «Числовые аргументы могут быть указаны как»).Хороший. Найдем способ фильтрации по имени: g /
insensitive
. Почему? Нечувствительность? WTF? У нас есть гипотетический FTP - сервер, где «что другие ОС» люди могли бы дать имя файла с расширениями , как.jpg
,.JPG
,.JpG
. Это приведет нас к:Однако после поиска
lname
вы увидите, что это будет искать только символические ссылки. Мы хотим настоящие файлы. Следующая запись:Отлично. Мне даже не нужно читать,
-name
чтобы увидеть, что-iname
это аргумент без учета регистра. Давайте соберем команду:Команда:
find /ftp/dir/ -size +500k -iname "*.jpg"
Что подразумевается здесь: знание, что подстановочный знак
?
представляет «любой символ в одной позиции» и*
представляет «ноль или более любого символа».-name
Параметр даст вам краткое изложение этого знания.Советы, которые применяются ко всем командам
Некоторые опции, мнемоника и «стиль синтаксиса» проходят через все команды, заставляя вас тратить время на то, чтобы вообще не открывать man-страницу. Те, которые изучаются на практике, и наиболее распространенными являются:
-v
значит многословно.-vvv
это вариант "очень очень многословный" в некоторых программах.tar -xzvf
,cp -Rv
.-R
и / или-r
означает рекурсивный.--help
опцией.--version
показывает версию программного обеспечения.-p
, на копирование или перемещение утилиты означает «сохранить права».-y
означает ДА или «продолжить без подтверждения» в большинстве случаев.Обратите внимание, что вышеупомянутое не всегда верно, хотя. Например,
-r
переключатель может означать очень разные вещи для разных программ. Всегда полезно проверить и убедиться, что команда может быть опасной, но это стандартные значения по умолчанию.Значения команд по умолчанию.
В пейджерной части этого ответа мы увидели, что
less -is
это пейджерman
. Поведение команд по умолчанию не всегда отображается в отдельном разделе на страницах man, или в разделе, который находится выше всех.Вам нужно будет прочитать варианты, чтобы узнать значения по умолчанию, или, если вам повезет, ввод /
pager
приведет вас к этой информации. Это также требует, чтобы вы знали концепцию пейджера (программное обеспечение, которое прокручивает man-страницу), и это то, что вы приобретете только после прочтения большого количества man-страниц.Почему это важно? Это откроет ваше восприятие, если вы обнаружите различия в поведении прокрутки и цвета при чтении, например,
man(1)
в Linux (less -is
пейджер) или FreeBSDman(1)
.А как насчет
SYNOPSIS
синтаксиса?После получения всей информации, необходимой для выполнения команды, вы можете комбинировать опции, аргументы-опции и встроенные операнды, чтобы выполнить свою работу. Обзор концепций:
-t
при монтировании, которая указывает тип файловой системы (-t iso9660
,-t ext2
). « Делай это с закрытыми глазами » или « корми животных, но только львов ». Также называется аргументами.cat file.txt
, операнд - это файл в вашем текущем каталоге, и его содержимое будет показано наSTDOUT
.ls
это команда, в которой операнд является необязательным Три точки после операнда неявно говорят вам, чтоcat
могут воздействовать на несколько операндов (файлов) одновременно. Вы можете заметить, что некоторые команды установили тип операнда, который он будет использовать. Пример:cat [OPTION] [FILE]...
Связанные синопсис вещи:
Когда этот метод не будет работать?
and
,to
,for
в страницах руководстваlftp
(и его man-страницы), вы не можете знать, что это подходящий вариант в качестве более сложного ftp-клиента, запустивman -k ftp
В некоторых случаях примеры будут довольно простыми, и вам придется выполнить некоторые команды для тестирования или, в худшем случае, Google его.
Другое: Языки программирования и его модули:
Если вы программируете или просто создаете сценарии, имейте в виду, что некоторые языки имеют свои собственные системы manpages, такие как
perl
(perldocs
), python (pydocs
) и т. Д., Содержащие конкретную информацию о методах / функциях, переменных, поведении и другую важную информацию о модуле. Вы пытаетесь использовать и учиться. Это было полезно для меня, когда я создавал скрипт для загрузки непрочитанных электронных писем IMAP с помощьюperl Mail::IMAPClient
модуля.Вы должны будете выяснить эти конкретные страницы с помощью
man -k
или поиска в Интернете. Примеры:... тонны других вещей здесь, с разделами, как обычная man-страница ...
С питоном:
Или,
help()
функция внутри оболочки Python, если вы хотите прочитать более подробную информацию о каком-либо объекте:Бонус:
wtf
команда может помочь вам с аббревиатурами и она работает , какwhatis
если бы не аббревиатуры на нем нет базы данных найдена, но то , что вы ищете является частью базы данных человека. В Debian эта команда является частьюbsdgames
пакета. Примеры:источник
man find | grep ...
. Мне нравитсяman command | sed -n '/^[[:space:]]*-/,/^$/p'
man
?" Спасибо и молодцы.man
страницы, конечно.Это довольно хорошо объяснено в
man man
:Что касается того, как вы должны написать правильную команду, ну, это не так. Краткое изложение полезно, когда вы знаете, как работает команда. Это может помочь вам освежить вашу память. Чтобы понять, как работает команда, вы должны прочитать страницу руководства. Особенно описания вариантов и раздел примеров.
Иногда резюме достаточно. Например, в
man ls
:В других случаях это бесполезно, если вы уже не знаете, как использовать данную команду. Например,
man dd
:Итак, в заключение, не беспокойтесь, если вы не получите краткий обзор. Это нормально. Прочитайте страницу руководства.
источник
Некоторые основы для понимания синопсиса
[foo]
представляет необязательный аргумент или параметр.[foo [ bar ] ]
используется синтаксис, вы можете использовать foo, и вы можете добавить bar.[ -S size ]
, который говорит, что аргумент -S ожидает обязательного размера.Например :
foo [-S size ] filename ...
означает
foo
-S
может быть использован, вы должны сказатьsize
(имя дать вам подсказку)filename
(это также даст вам подсказку, см.man mkdir
)...
скажет вам, что вы можете использовать несколько файлов.Вы все еще должны углубиться в man-страницу, чтобы понять вариант (в моем примере выше,
-S size
о чем)источник
man
страницы обычно отображаются вless
настоящее время. Это позволяет искать через них. Я не стал бы беспокоиться о синопсисе, особенно потому, что у вас есть конкретная командная строка, которую вы хотите понять.Нажмите /и начните печатать,
-I
а затем Enter. Первый удар будет в кратком обзоре, второй (используйте nдля следующего) даст вам подробное объяснение-I
.источник
Одна ключевая вещь, которую нужно помнить, это то, что вы не можете просмотреть руководство только для одной команды в случае команд, которые выполняют другие команды.
Для вашего примера команды
Вам нужна информация не только,
xargs
но такжеbash
и[
(это может быть наtest
странице руководства ). Вам также может понадобиться информация о вашей оболочке (возможно, также bash) для правил цитирования, поскольку ваша команда содержит сложную строку в кавычках. Я уже могу сказать вам, что аргумент в кавычках неверен (и неверен в том случае, если он обнаружится только при обнаружении файла с пробелами в имени); внутреннее,"{}"
вероятно, должно быть'{}'
.Итак, сначала вы должны обратиться к странице справочника xargs и посмотреть,
[-I replace-str]
что это-I {}
значит, и[command [initial-arguments]]
чтоbash
и все после этого. Тогда вы бы обратились кbash
man-странице для того-c
, что делает и т.д.источник
Добавим к уже полученным великим ответам:
1) Если вам интересна утилита gnu, особенно такая, как,
sed
иgrep
иногда использованиеinfo
команды вызовет значительно расширенную версию информации о команде.sed
например, есть подробный раздел о том, как писать регулярные выражения, и другой раздел с некоторыми очень сложными примерами использования.2) Это "руководство". Руководство в первую очередь разработано, чтобы помочь вам вспомнить детали того, что вы уже поняли. Он спроектирован таким образом, чтобы вы могли быстро получить нужные детали и выйти из него. (И слишком многие не имеют примеров использования или только тривиальные.)
Когда мне нужно узнать что - то новое, даже небольшая особенность команды, которая мне не ясно, я иду в сети и поиск , используя лучшие ключевые слова я могу думать (например
Linux
xargs
) и добавить словоhowto
,examples
илиtutorial
. Это очень часто довольно продуктивно.Я обычно использую duckduckgo, потому что он поддерживает мою конфиденциальность, но если мне нужен больший контроль над своими поисками, я использую Google, потому что могу сказать, что он просто ищет на одном веб-сайте или возвращает результаты только за последний год. (У этого есть много других опций расширенного поиска. Вы можете Google их.;))
Еще один совет:
Для команд, на которые я часто ссылаюсь, я сохраняю справочную страницу в текстовом файле.
и загрузить этот файл в другое окно в моем текстовом редакторе, чтобы я мог перелистывать туда-сюда, копировать и вставлять и т. д. Я обычно делаю файл только для чтения, поэтому я не в конечном итоге искажаю его случайно, но так как это мой личная копия, я мог редактировать ее любым способом, добавляя теги, чтобы мне было легче находить раздел, или даже добавляя свои собственные заметки или примеры.
Единственный недостаток - это то, что оригинальная справочная страница может быть обновлена, а моя копия статическая.
источник
Чтобы быстро получить справку по вашей конкретной команде, вы можете использовать Explain Shell . Например, ваша команда . Получив первое общее представление о том, как это работает, вы должны приступить к работе с man-страницами, как рекомендуют другие ответы.
источник
Есть два полезных инструмента, чтобы узнать больше о командах Linux:
cheat
отобразит часто используемую опцию для командной строки. Также вы можете добавить свой собственныйcommand + option
для отображенияcheat
для конкретной команды.bropages
Инструмент предоставляет некоторый пример для командной строки, можно добавить свой собственный пример или повысить / понизить данный пример после получения кода подтвержденияbro thanks
. Команда must Voted появится в верхней частиbro
страницы.источник
Я предлагаю
tldr
для всестороннего подобного человеку инструмента. Упрощенные и управляемые сообществом справочные страницы. В Ubuntu вы можете установить его через Snap, но у него есть версии и для других дистрибутивов. Он также предоставляет вам несколько распространенных примеров использования. 100% рекомендуется.источник
> Я ищу помощь в интерпретации справочной страницы для понимания сложных команд.
Я думаю, что это недоразумение здесь. Что делает Linux / UNIX настолько мощным, так это то, что вы можете создавать очень длинные и эффективные команды, например, перенаправляя стандартный вывод одной команды (здесь
locate
) в стандартный поток другой (здесьxargs
) через pipe (|
). Следовательно, как правильно сказал Random832, вы не найдете ни одной man-страницы, объясняющей, что делает ваша команда-пример.Я рекомендую вам прочитать руководство по написанию сценариев для оболочки Linux; Advanced Bash-Scripting Guide является отличным документом. Пожалуйста, не пугайтесь этого; Освоение Linux требует многих лет и является бесконечным процессом, но вы можете изучить основы в разумные сроки.
Затем обратитесь к man-страницам, когда вам нужно узнать подробности конкретной команды.
Как только вы поймете суть, вам также стоит прочитать Commandlinefu и Bash One-Liners , чтобы получить хорошие примеры.
источник
Чтобы найти что-то конкретное в командах на странице руководства, вы можете использовать:
Но для поиска переключателей (например
-n
) вы должны использовать его следующим образом:источник