Considérez quelques systèmes * nix courants (par exemple Debian, CentOS, Arch et Kali).

Jai toujours utilisé find; Je ne me souviens pas avoir utilisé GNU find, mais à partir de un exemple , jai « vu que je supposais que la syntaxe de GNU find pourrait être plus simple (bien que pourrait autoriser moins dopérations).

Jai deux questions:

  1. Est-ce que find lutilitaire par défaut « rechercher ou utiliser » dans les systèmes courants ou les systèmes seront-ils livrés avec les deux find et GNU find?

  2. Était GNU find destiné à être plus simple à find ?

Commentaires

  • vous avez toujours utilisé GNU find sur Linux, sauf si vous ' est un gros utilisateur de find sur busybox ou android 😉 Sur les systèmes non Linux, GNU find est généralement nommé gfind.
  • Essayez find --version😉
  • Les systèmes auxquels vous ' font référence sont des systèmes GNU, GNU / Linux pour la plupart, bien que Debian soit disponible pour quelques autres noyaux comme bien. Il nest donc ' pas étonnant que limplémentation de find sur ces systèmes soit GNU find.

Réponse

Les utilitaires GNU implémentent souvent le standard POSIX, puis létendent également avec des fonctionnalités supplémentaires pour plus de commodité (et, en contrepartie, la portabilité diminuée entre les Unices). Laspect de portabilité est la raison pour laquelle vous verrez parfois des réponses ou des commentaires sur ce site qui sont très prudents pour indiquer quand un utilitaire GNU ou une autre implémentation spécifique dun utilitaire est supposé.

Si vous êtes sous Linux système, vous utiliseriez très probablement l’implémentation GNU de find, et vous n’auriez probablement pas d’autre find installé. Sur les systèmes non Linux, vous auriez un find natif et la possibilité dinstaller également GNU find (qui serait le plus souvent installé sous le name gfind ou, moins souvent, gnufind).

Comme avec la plupart des utilitaires GNU, GNU find implémente et étend la find spécification standard. Ce n’est donc pas « plus simple » mais plutôt plus complexe pour être plus pratique, et il serait un peu plus facile d’effectuer certaines tâches complexes avec lui qu’avec un find strictement conforme aux normes .

Les implémentations étendues de find implémentent souvent, par exemple, les -maxdepth et -mindepth prédicats que le standard ne mentionne pas, et GNU find en particulier a également -printf pour imprimer les chemins trouvés en utilisant une variété de possibilités de formatage (le standard find na pas de -printf), et des prédicats pour faire des correspondances dexpressions régulières de différents types sur les chemins ainsi quun certain nombre dautres prédicats non standard, dont certains se trouvent également dans dautres implémentations de find (éventuellement avec une sémantique très légèrement différente, comme -execdir whi ch fonctionne légèrement différemment selon ce que find est utilisé 1 ).

Le -delete, utilisé dans la réponse à laquelle vous créez un lien, nest pas standard, mais implémenté par GNU find ainsi que dans find sur certains autres systèmes non Linux. GNU find « s -delete se plaindra si vous lutilisez pour supprimer un répertoire non vide, mais loption correspondante avec par exemple OpenBSD » s find ne le fera pas (ni ne supprimera le répertoire non vide).

La plupart des systèmes Linux, quelle que soit la distribution, utilisent le même ensemble doutils coreutils et findutils (variantes comme busybox existe, évidemment). Pour utiliser un ensemble dimplémentations doutils complètement différent, vous devez passer à lun des systèmes BSD open source ou à macOS, Solaris, AIX ou un autre Unix commercial.


1 GNU find ajoute ./ aux noms de chemin lorsque vous utilisez -execdir pendant certaines autres implémentations ne « t.

Commentaires

  • Et -print0, et -direxec, et -delete, et … ;-). Les options de séparateur nul disponibles dans les outils GNU sont particulièrement pratiques.
  • @StephenKitt Mais rarement nécessaire 🙂
  • à droite, sauf lors de lécriture de réponses non POSIX ici ;-). (Ou des scripts qui doivent fonctionner nimporte où .)
  • Le principal problème avec la documentation GNU est quelle essaie de laisser les gens utiliser des alias non standard pour les méthodes POSIX et ainsi provoquer le scripts associés pour créer un verrouillage du fournisseur.
  • @StephenKitt -print0 est également disponible sur * bsd et solaris; mais sur solaris xargs -0 ne ' t fonctionne, donc gxargs -0 (de /usr/bin/sfw) doit être utilisé à la place.

Réponse

À quoi les gens se réfèrent souvent car Linux est mieux appelé GNU / Linux: Linux plus GNU. Par conséquent, les outils que vous utilisez sont probablement GNU.

  • Linux: un noyau, il est utilisé dans GNU / Linux, Android et de nombreux autres systèmes.
  • GNU: an système dexploitation, souvent utilisé avec le noyau Linux, mais peut également être utilisé avec BSD, Hurd, Cygwin (une DLL pour Microsoft Windows, elle fait semblant dêtre un noyau), WSL (Windows Subsystem for Linux: GNU without Linux, on Microsoft Windows), HPUX, Solaris, Dec Athena et bien dautres.

Par conséquent, vous utilisez probablement GNU find.

GNU est un projet à écrire, une version gratuite (gratuite comme dans la liberté, pas comme dans le prix) de, tout Unix, y compris des outils tels que find, le projet GNU ne se soucie pas de la conformité POSIX: il se conformera là où cela a du sens, mais apportera également des améliorations.

De plus, vous supposez quil ny a quun seul autre find est faux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *