Confronto di shell Unix

Tra i principali shell di Unix (bash, ksh, tcsh, zsh, altri?), Ci sono ragioni convincenti per usare uno sopra l'altro?

  • Quale è l'amichevole più interattivo / comandante?
  • Quale è il più favorevole / intuitivo per la scrittura di script?
  • Ci sono delle principali caratteristiche incorporate che una shell offre che altri non lo fanno?
  • Qualcuno di questi conchiglie è veramente buono per un tipo di function, ma non un altro? O sono tutti abbastanza ben arrotondati / flessibili?
  • È solo una questione di preferenza personale?

Posso fare questa comunità wiki se qualcuno preferisce.

  • Ordine Unix per i set di dati parzialmente ordinati
  • fare rumore su redhat quando il command è terminato
  • Le migliori pratiche di recupero da un aggiornamento del pacchetto UNIX fallito?
  • come esportre VAR da una sottostruttura a una shell padre?
  • In UNIX, come posso gatto un file situato in un altro server?
  • Distribuzione automatica e configuration per i server Windows
  • sh per rimuovere i file appena txt usando find e exec rm mi avvisa dell'argomento mancante per eseguire
  • (* nix) Soluzioni cloud / cluster per servizi web scalabili
  • 8 Solutions collect form web for “Confronto di shell Unix”

    Attuale:

    • bash – Bourne nuovamente shell, shell predefinito nella maggior parte delle distribuzioni Linux. Caratteristiche decenti;
    • zsh – il più ricco, ma raramente usato;
    • ksh – shell predefinito in Solaris, AIX e altre poche altre unioni;
    • tcsh – shell predefinito in vari * ungi saputo BSD;

    Storico:

    • sh – guscio originale di Bourne (rilasciato nel 1977). Obsoleto da bash;
    • csh – originale C shell (rilasciato 1978). Obsoleto da tcsh e ksh;

    Nota che bash, ksh e zsh derivano dalla syntax sh, mentre tcsh deriva dalla syntax csh. Si tratta di due syntax piuttosto diverse.

    La tabella delle caratteristiche (wiki).

    il pesce è un nuovo guscio che forse è più interessante degli altri, non perché necessariamente ha più caratteristiche, ma perché semplicemente lavorano per impostazione predefinita e perché i pesci si sforzano per l'usabilità.

    Alcuni schermate ( 1 , 2 , 3 , 4 ) sono sufficienti per dare l'idea generale.

    il pesce è ora la shell predefinita sul mio Mac al lavoro. Vai a capire.

    Se vuoi imparare una shell diversa da sh / bash , puoi anche andare con zsh . Non credo che qualcuno possa contestare seriamente che è il più potente e caratteristico dei gusci alternativi; se è solo il gonfio è, naturalmente, ancora in discussione.

    Ho sentito buone cose sul fish , ma non sono mai riuscito a far fronte a loro.

    Gli amministratori che conosco considerano csh e tcsh per essere abominazioni che dovrebbero essere evitati a tutti i costi e sono d'accordo con loro, nonostante sia mai stato costretto a mettermi attraverso una shell.

    Raccomero di sapere che bash è uno dei più comuni (generalmente Linux). Personalmente, amo zsh come la mia shell intertriggers. Ha grandi funzionalità di completamento. Ad esempio, è ansible impostare un elenco di host e quando si esegue qualcosa di simile a ssh Ser [tab] saprà cercare di eseguire la scheda automatica completa di uno di questi host. Ha anche un globo ricorsivo, quindi se vuoi trovare tutti i file jpeg nella sottodirectory attuale e in grado di utilizzare ls -ld **/*.jpg . Ci sono un sacco di funzioni divertenti con zsh (cercare i file .zshrc di persone) e puoi impostarlo su 'bash compatible', quindi è facile passare tra i due. Se si combinano questo con la schermata GNU si potrebbe trovare la row di command diventa piuttosto un piacere lavorare.

    Non dimenticare la tua altra domanda Il più comune shell di Unix / Linux – la shell più popolare è probabilmente più popolare per un motivo 😉

    Per quello che vale la pena, la maggior parte delle persone non si spegne spesso tra le conchiglie, quindi sarà difficile get un confronto ben diverso delle varie opzioni; avrai più probabilità di vedere persone diverse che espongono le virtù delle loro conchiglie preferite. Da quanto poco ho sentito parlare di conchiglie diverse, offrono tutte le stesse caratteristiche di base (come il reindirizzamento I / O, la storia dei comandi, ecc.), Quindi la preferenza personale è probabilmente una grande componente.

    Un motivo obbligatorio per utilizzare ZSH che non è stato menzionato è la modalità vi e la modalità emacs .

    Per coloro che amano usare la memory muscolare vi nella shell, questa è una caratteristica assassina.

    E per coloro che preferiscono emacs, è ansible utilizzare anche questi tasti, ma i veri credenti di emacs probabilmente direbbero che emacs è il loro guscio preferito.

    😉

    La preferenza per l'uso quotidiano è veramente una mather di gusto personale, tuttavia, quando scrivo script, cerco di essere conforms alla posix per il bene della portbilità.

    Proprio come Heads Up: Ubuntu predefinisce "sh" a "dash" che portno ad alcuni problemi in passato con la compability POSIX. A quanto pare, i comandi di eco differiscono leggermente.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.