Разница между find и GNU find

Надеюсь, это ваша среда.

Host 1 - 1 Bridged NIC Network 

Host 2 - 1 Bridged NIC Network 

Host 3 - Local NIC Network

Host 4 - Local NIC Network

Если вы добавите еще 1 сетевую карту к Host 1 и Host 2 соответственно, а затем назначите им локальный IP, как в Host 3 и Host 4. Все ваши 4 хоста смогут общаться друг с другом.

Результирующая среда будет выглядеть так

Host 1 - 1 Bridged NIC Network, 1 Local NIC Network

Host 2 - 1 Bridged NIC Network, 1 Local NIC Network

Host 3 - 1 Local NIC Network

Host 4 - 1 Local NIC Network
0
13.06.2019, 11:30
2 ответа

Утилиты GNU часто реализуют стандарт POSIX, а затем также расширяют его дополнительными функциями для дополнительного удобства (и, как оборотная сторона этого, снижают переносимость между Unices ). Аспект переносимости - вот почему вы когда-нибудь увидите ответы или комментарии на этом сайте, которые очень тщательно указывают, когда предполагается использование утилиты GNU или какой-либо другой конкретной реализации утилиты.

Если вы работаете в системе Linux, вы, очень вероятно, используете реализацию GNU find, и у вас, вероятно, не будет findустановлена ​​другая. В системах, отличных от -Linux, у вас будет собственный findи возможность также установить GNU find(, который чаще всего будет устанавливаться под именем gfindили, реже,gnufind).

Как и большинство утилит GNU, GNU findреализует и расширяетстандартную findспецификацию . Следовательно, он не «простее», а, возможно, более сложен, чтобы быть более удобным, и с ним было бы несколько проще выполнять определенные сложные задачи, чем со строго стандартным find.

Расширенные реализации findчасто, например, реализуют предикаты -maxdepthи -mindepth, которые не упоминаются в стандарте, и GNU find, в частности, также имеет -printfдля вывода найденных путей с использованием разнообразные возможности форматирования (, которых нет в стандарте find-printf), и предикаты для сопоставления регулярных выражений различных типов с путями, а также ряд других нестандартных -предикатов,некоторые из них также встречаются в других реализациях find(, возможно, с немного отличающейся семантикой, например -execdir, которая работает немного по-разному в зависимости от того, что findиспользуется 1).

Предикат -delete, используемый в ответе, на который вы ссылаетесь, не является стандартом -, но реализован GNU find, а также в findв некоторых других системах, отличных от -Linux. GNU find-deleteбудет жаловаться, если вы используете его для удаления не -пустого каталога, но соответствующая опция, например,. OpenBSD findне будет (и не удалит не -пустой каталог ).

Большинство систем Linux, независимо от дистрибутива, используют одни и те же варианты набора инструментов coreutils и findutils (, как и busybox, очевидно ). Чтобы использовать совершенно другой набор реализаций инструментов, вам пришлось бы перейти на одну из систем BSD с открытым исходным кодом или на macOS, Solaris, AIX или какой-либо другой коммерческий Unix.


1GNU findдобавляет ./к именам путей при использовании -execdir, в то время как некоторые другие реализации этого не делают.

11
28.01.2020, 02:13

То, что люди часто называют Linux, лучше называть GNU/Linux :Linux плюс GNU. Поэтому инструменты, которые вы используете, вероятно, принадлежат GNU.

  • Linux :ядро, используется в GNU/Linux, Android и многих других системах.
  • GNU :операционная система, часто используемая с ядром Linux, но также может использоваться с BSD, Hurd, Cygwin (DLL для Microsoft Windows, она притворяется ядром ), WSL (Подсистема Windows для Linux :GNU без Linux, на Microsoft Windows ), HPUX, Solaris, Dec Athena и многие другие.

Следовательно, вы, вероятно, используете GNU find.

GNU — это проект по -написанию, бесплатной (свободной как по свободе, а не по цене )версии всей Unix, включая такие инструменты, как find, проект GNU не беспокоится о соответствии POSIX :Он будет соответствовать там, где это имеет смысл, но также внесет улучшения.

Также ваше предположение, что существует только один другой find, неверно.

2
28.01.2020, 02:13

Теги

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