GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è il più portatile di Sed, Awk, Perl e Sh?

Qualcuno può mettere questi strumenti in ordine di portabilità? Quale di questi è certo da trovare anche sui sistemi *nix più minimali? Qualcuno di loro è sicuro al 100% di essere presente? La mia ipotesi è che l'ordine sia il seguente:

  1. ok
  2. sed
  3. sh
  4. perl

Mentre immagino che ci siano sistemi che non utilizzano per impostazione predefinita una shell bourne, alcuni shell sarà presente come impostazione predefinita, sarà sempre in /bin/sh ? Presumibilmente no se non è un guscio di tipo bourne. Entrambi awk e sed hanno pagine che li spiegano sulla specifica POSIX, quindi presumibilmente saranno sempre presenti. È così?
Posso essere sicuro che entrambi verranno installati su qualsiasi *nix? Compresi i sistemi embedded?

Risposta accettata:

Qual è il più portatile tra sed, awk, perl e sh?

sed , sh e awk sono portabili essendo specificati da POSIX, perl non è come non essere supportato da uno standard.

Qualcuno può mettere questi strumenti in ordine di portabilità?

Se ti attieni al codice conforme, non dovrebbe esserci alcun ordine di portabilità per i tre comandi POSIX.

Quale di questi si trova sicuramente anche sui sistemi *nix più minimali?

I tre POSIX insieme a molte altre utilità sono obbligatori affinché un sistema operativo sia POSIX. Tuttavia esistono sistemi operativi privi di alcuni di essi a causa della minimizzazione o che forniscono implementazioni incomplete/non conformi.

In realtà, la maggior parte (se non tutti) i sistemi operativi gratuiti e open source simili a Unix probabilmente non supererebbero il processo di conformità se dovessero provare, e comunque non ci proverebbero mai.

Qualcuno di loro è sicuro al 100% di essere presente?

Sarei sorpreso di trovare un sistema operativo simile a *nix privo di una shell basata sulla sintassi Bourne, ma tutto è possibile, specialmente con i sistemi embedded.

La mia ipotesi è che l'ordine sia il seguente:
Alcune shell saranno presenti come predefinite, sarà sempre in /bin/sh?

/bin/sh è probabile che sia una shell della famiglia di sintassi Bourne, ma non è garantito che sia conforme a POSIX, nemmeno su sistemi conformi a POSIX. Ad esempio, è /usr/xpg4/bin/sh su Solaris 10 e precedenti mentre /bin/sh è la shell Bourne originale legacy che non è POSIX.

Correlati:come utilizzare sed o ex per sostituire un blocco (codice multilinea) con un nuovo blocco di testo (codice)?
Linux
  1. Il metodo più portatile per avviare un emulatore di terminale?

  2. Lavorare con le colonne:Awk e Sed?

  3. Rimuovere la riga contenente una determinata stringa e la riga seguente?

  4. Qual è la differenza tra stampa e stampa in Awk?

  5. Come mitigare le vulnerabilità Spectre e Meltdown sui sistemi Linux?

Come usare e sfruttare al meglio il comando fusore in Linux

La differenza tra più, meno e la maggior parte dei comandi

Come utilizzare OpenSSL e Internet PKI su sistemi Linux

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

I comandi FFmpeg più utili per la conversione di audio e video

I 15 migliori bootloader Linux per sistemi domestici e integrati