Мне трудно читать синопсис руководства Find альтернативный текст http://files.getdropbox.com/u/175564/syntax_manual.png
Предположим, вы нашли каталоги с разрешениями 777. Pixelbeatпредложение
find -type d ! -perm -777
Моя OS / X дает следующее
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: d: No such file or directory
Вещи, в которых я не уверен, когда использую синопсис в качестве помощи
-type
: Я могу четко проверить это, но я хочу научиться лучше читать руководства, чтобы мне не приходилось просить помощи. Приведем еще один пример руководства по Grep.
альтернативный текст http://files.getdropbox.com/u/175564/grep_manual.png
В нем есть четкий синопсис, хотя я бы использовал для него всего одну строчку. Я напрямую вижу, что мы можем
grep -r "masi" .
Как вы читаете руководства, аналогичные руководству Find?
Первое, что нужно понять, это то, что не все команды поиска одинаковы. То, что вы найдете в системе Linux, отличается от того, что вы найдете в системе на основе BSD, такой как OSX. Ссылка, которую вы собираетесь использовать, относится к Linux.
Для команды find опция '-type' является выражением и должна стоять после пути. Если вы прочтете страницу руководства, там будет описано, какие опции являются выражениями.
Восклицательный знак означает отрицание. То есть возвращает все, кроме вещей с разрешениями 777.
Команда "find -type d! -пермь -777"недопустимо, потому что вы не включили путь перед выражением. Вы можете использовать путь . если хотите текущий каталог.
Вернемся к основному вопросу. Иногда недостаточно просто прочитать краткую информацию о странице руководства, и вам действительно нужно прочитать остальное. Некоторые команды настолько мощны, что вы не сможете получить хорошее представление о том, как их использовать, если не прочитаете или хотя бы пролистаете весь документ. Также полезно проверить примеры, если они есть, а если их нет, зайдите в Интернет и поищите несколько примеров.
Вы не указали каталог
find . -type d ! -perm -777
На указанной вами странице руководства указано, что путь должен прийти раньше выражение. Так что в данном случае точка "." приходит раньше "-тип d ...". Последние не являются вариантами сами по себе. -тип и -перма являются частями логического выражения, которое find пытается оценить для каждого файла.
невозможно увидеть, где поставить параметр -type
-type
не вариант, это выражение. Итак, он находится в конце списка аргументов. Если вы прокрутите страницу руководства вниз, вы найдете раздел под названием «Выражения», в котором подробно описаны все доступные варианты для этого аргумента.
не в состоянии понять, зачем нам нужны две строки для синопсиса: кажется, подчеркивается, что многие ПУТИ являются необязательными
Программа может быть вызвана с любым аргументом pathname
или -f pathname
. Как правило, любые аргументы в квадратных скобках необязательны. Но те, которых нет, являются обязательными. Вот почему ваша команда find не работает - потому что у нее есть «выражения» перед любым «именем пути». Точки указывают, что при желании можно использовать более одного аргумента имени пути.
почему Pixelbeat использует восклицательный знак в команде?
Я не вижу указанную команду в предоставленной вами ссылке. Но..
Восклицательный знак можно использовать для отмены следующего выражения. Итак, команда find . -type d
найдет каталоги и find . ! -type d
найдет все, кроме каталогов. Тем не менее, рекомендуется избегать восклицательного знака с помощью предшествующей обратной косой черты, чтобы ваша оболочка не интерпретировала его. Его также можно заменить на -not
.
В резюме элементы, включенные в квадратные скобки, являются необязательными, а альтернативные варианты разделяются вертикальной чертой (вертикальная черта). Если альтернативы являются необязательными, они будут заключены в двойные квадратные скобки, разделенные вертикальной чертой. Обязательные аргументы появляются без скобок. Аргументы, которые могут повторяться, сопровождаются многоточием (...
).
Иногда синопсис был слишком сложным, чтобы его можно было свести в одну строку. Кроме того, иногда результат одной версии значительно отличается от другой или является взаимоисключающим. Итак, в вашем примере grep:
grep [ОПЦИИ] ШАБЛОН [ФАЙЛ ...]
grep [ОПЦИИ] [-e ШАБЛОН | -f ФАЙЛ] [ФАЙЛ ...]
OPTIONS
и FILE
являются необязательными. Первая версия более распространена. Вторая версия предназначена для особых случаев, когда либо (-e
) вам необходимо защитить узор, который начинается с минуса или (-f
) шаблоны находятся в файле. Как видите, они отличаются от более простой первой версии. Синопсис мог быть таким:
grep [ОПЦИИ] [ШАБЛОН | -e ШАБЛОН | -f ФАЙЛ] [ФАЙЛ ...]
Но тогда это труднее читать, и это просто случай. Представьте себе более сложную, например mount
, например. И, конечно, есть man
страницы без резюме, потому что это было бы почти невозможно (например, bash
).
Когда я прочитал man
страницы, я ищу синопсис, который, кажется, наиболее точно соответствует тому, что я ищу. Если что-то очевидно, я просканирую (vgrep) или ищите термины или ключевые слова из синопсиса или исходя из моих знаний о том, чего я пытаюсь достичь. у меня есть less
установить как мой man
reader, поэтому я использую команду / для запуска поиска. Иногда, Я считаю, что info
документация более полная или полезная, и я использую ее аналогичным образом.
Да, справочная страница для find
на моей Mac OS X установка немного вводит в заблуждение. В синопсисе указано, что выражения идут в конце, но раздел, который логически будет озаглавлен как «ВЫРАЖЕНИЯ», вместо этого разделен на две части и озаглавлен как «ОСНОВНЫЕ» и «ОПЕРАТОРЫ». Я всегда читаю первые несколько строк «ОПИСАНИЯ», поэтому следует отметить, что они разъясняют здесь этот вопрос:
DESCRIPTION
The find utility recursively descends the directory tree for each
pathname listed, evaluating an expression (composed of the ``primaries''
and ``operands'' listed below) in terms of each file in the tree.
Это должно в конечном итоге подсказать вам, что это странно, потому что его неопциональные параметры, начинающиеся с "-", на самом деле являются выражениями, которым должен предшествовать путь.
Самый полезный совет, который у меня есть для страниц руководства, - это изучить команды пейджера. По умолчанию кажется less
и здесь вы можете использовать <
идти на старт >
идти до конца, и /
или ?
для поиска шаблона вперед или назад (например, «/ -тип»). Control-f
и space
перейти на страницу вперед и Control-b
создает резервную копию страницы. А также есть xman
где бы вы напечатали Control-s
для поиска вашей страницы руководства под названием find
. Мне также нравится apropos
команда.