AIX почему ps отображает имя процесса в квадратных скобках? [дубликат]

Необходимо прояснить несколько моментов:

  • cp - это отдельная утилита от bash . Некоторых могут сбить с толку встроенные команды, такие как cd и pwd , которые либо являются, либо могут быть частью оболочки POSIX.
  • POSIX относится к серии документов , которые совместно поддерживаются Open Group и IEEE, и называется IEEE Std 1003.1 ™ .
  • bash - одна из нескольких оболочек, реализующих функции, описанные в POSIX. Большинство оболочек имеют некоторые отличия от оболочки POSIX sh ; имя, под которым запускается оболочка, является функцией, описанной в POSIX.
  • в разделе 2.14. Специальные встроенные утилиты , говорится в POSIX

Термин «встроенные» подразумевает, что оболочка может выполнять утилиту напрямую и не нуждается в ее поиске. Реализация может сделать любую утилитой встроенной; однако описанные здесь специальные встроенные утилиты отличаются от обычных встроенных утилит в двух отношениях:

Таким образом, в принципе cp может быть частью bash , если его разработчики выбрали именно это.На практике этого не происходит, потому что нет смысла дополнительно усложнять bash путем добавления функций, которые могут быть выполнены хорошо отдельно от bash .

Далее, ссылка, упомянутая в вопросе, основана на POSIX, но не является документом POSIX. Вы можете увидеть отказ от ответственности в конце:

Части этого текста перепечатаны и воспроизведены ...

и

Любые типографские ошибки или ошибки форматирования, появляющиеся на этой странице, скорее всего, будут иметь {{ 1}} был введен во время преобразования исходных файлов в формат страницы руководства.

Но большая часть справочной страницы дословно скопирована из POSIX. Документы POSIX написаны в квазизаконном стиле, пытаясь избежать подробного описания вещей, когда их авторы знают, что существующие реализации различаются, а также избегают деталей, когда они считают, что внутренние детали реализации могут отличаться. Таким образом, вы получаете пошаговое описание действий, которые предпринимают программы, и (часто) опускание деталей, которые другие авторы добавляли бы, чтобы объяснить, как связаны различные шаги. В некоторых документах POSIX есть раздел для ОБОСНОВАНИЕ , но даже таких, похоже, меньшинство. Результат часто бывает расплывчатым, но вы должны сделать скидку на цель: описание общих черт существующих программ.

Это конкретная часть вопроса, которая указывает на путаницу:

Учитывая определение posix, я ожидаю, что cp -R srcDir existingDestDir приведет к содержанию srcDir для копирования в существующийDestDir . Вместо этого srcDir копируется в existingDestDir как в реализациях sh, так и в bash и csh.

Суть документации заключается в том, что каталоги в источнике также обрабатываются с использованием того же итеративного и рекурсивного описания, что и обычные файлы. Одно из правил изложено в разделе Сводка :

cp -R [-H | -L | -P] [-fip] source_file ... target

, что является третьим примером , и единственный, в котором упоминается опция -R . Об этом говорится позже, в Описание :

Третья форма синопсиса обозначается двумя или более операндами, где указана опция -R. Утилита cp должна скопировать каждый файл в файловой иерархии с корнем в каждом исходном_файле в путь назначения, названный следующим образом:

  • Если цель существует и именует существующий каталог , имя соответствующего пути назначения для каждого файла в файловой иерархии должно быть конкатенацией target , одного символа , если target не заканчивался на , а путь к файлу относился к каталогу, содержащему исходный_файл .

  • Если цель не существует и указаны два операнда, имя соответствующего пути назначения для исходный_файл должно быть target ; имя соответствующего пути назначения для всех других файлов в файловой иерархии должно быть конкатенацией target , символа и пути к файлу относительно исходный_файл .

То есть имя вашего каталога рассматривается как «файл» в первом маркированном элементе и объединяется с именем целевого каталога.

Дополнительная литература:

На странице руководства GNU coreutils отсутствуют подробности. Вы можете увидеть некоторые особенности документа POSIX на странице руководства Solaris, которая, кстати, более четко написана:

/ usr / bin / cp -r | -R [-H | -L | -P] [-fip @] source_dir ... target

и

В третьей форме синопсиса один или несколько каталогов, указанных в source_dir , копируются в каталог, указанный target. Необходимо указать -r или -R . Для каждого source_dir , cp копирует все файлы и подкаталоги.

1
06.06.2013, 16:42
0 ответов

Теги

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