GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est le plus portable de Sed, Awk, Perl et Sh ?

Quelqu'un peut-il mettre ces outils dans l'ordre de portabilité? Lequel de ces éléments est certain se trouve même sur les systèmes *nix les plus minimaux ? Est-ce que l'un d'entre eux est sûr à 100 % d'être présent ? Je suppose que la commande est la suivante :

  1. mal à l'aise
  2. sed
  3. sh
  4. perle

Bien que j'imagine qu'il existe des systèmes qui n'utilisent pas par défaut un shell bourne, certains shell sera présent par défaut, sera-t-il toujours à /bin/sh ? Probablement pas s'il ne s'agit pas d'un obus de type bourne. Les deux awk et sed ont des pages les expliquant sur la spécification POSIX, donc ils seront probablement toujours présents. Est-ce vrai ?
Puis-je être sûr que les deux seront installés sur n'importe quel *nix ? Y compris les systèmes embarqués ?

Réponse acceptée :

Quel est le plus portable de sed, awk, perl et sh ?

sed , sh et awk sont portables étant spécifiés par POSIX, perl n'est pas comme n'étant pas soutenu par une norme.

Quelqu'un peut-il classer ces outils par ordre de portabilité ?

Si vous vous en tenez à un code conforme, il ne devrait y avoir aucun ordre de portabilité pour les trois commandes POSIX.

Lequel de ceux-ci est certain d'être trouvé même sur les systèmes *nix les plus minimaux ?

Les trois POSIX ainsi que de nombreux autres utilitaires sont obligatoires pour qu'un système d'exploitation soit POSIX. Il existe cependant des systèmes d'exploitation dépourvus de certains d'entre eux en raison de la minimisation ou fournissant des implémentations incomplètes / non conformes.

En fait, la plupart (sinon la totalité) des systèmes d'exploitation gratuits et open source de type Unix ne passeraient probablement pas le processus de conformité s'ils essayaient, et ils n'essaient jamais de toute façon.

Est-ce que l'un d'entre eux est sûr à 100 % d'être présent ?

Je serais surpris de trouver un système d'exploitation *nix comme dépourvu d'un shell basé sur la syntaxe Bourne, mais tout est possible, en particulier avec les systèmes embarqués.

Je suppose que l'ordre est le suivant :
Un shell sera présent par défaut, sera-t-il toujours à /bin/sh ?

/bin/sh est susceptible d'être un shell de la famille de syntaxe Bourne, mais il n'est pas garanti qu'il soit conforme à POSIX, même sur les systèmes conformes à POSIX. Par exemple, c'est /usr/xpg4/bin/sh sur Solaris 10 et versions antérieures tandis que /bin/sh est l'ancien shell Bourne d'origine qui n'est pas POSIX.

En relation :Comment utiliser sed ou ex pour remplacer un bloc (code multiligne) par un nouveau bloc de texte (code) ?
Linux
  1. Quelle commande de terminal Linux utilisez-vous le plus ?

  2. La commande Linux Sed :utilisation et exemples

  3. Quelles sont les différences entre grep, awk et sed ?

  4. Le concept de 'Hold space' et 'Pattern space' dans sed

  5. Quel est le moyen le plus sûr et le plus portable d'invoquer le binaire echo ?

Comment utiliser et tirer le meilleur parti de la commande fuser sous Linux

La différence entre plus, moins et la plupart des commandes

Comment utiliser OpenSSL et Internet PKI sur les systèmes Linux

Comment supprimer des lignes vides dans des fichiers à l'aide de Grep, Sed et Awk

Les commandes FFmpeg les plus utiles pour la conversion audio et vidéo

Les 15 meilleurs chargeurs de démarrage Linux pour les systèmes domestiques et embarqués