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:
- ok
- sed
- sh
- 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.