2009-11-20 9 views
8

Ho passato qualche tempo a cercare di sceglierne uno, i confronti netti sono per zsh vs bash e fish vs bash. Ma, non ho trovato alcun confronto per zsh vs pesce. Io programma in C e C++, a parte i tipi di ciao-mondo, non ho mai fatto nessuno script importante. Ma ora sto provando le mie mani su python e script di shell. Quale shell mantiene più succo in termini di produttività prima e poi di sviluppo? Oppure, alla fine, la potenza e l'usabilità di qualsiasi shell arriva ai suoi file _rc. Quindi sono abbastanza bravo con bash?- Zsh vs FishShell. Scripting, produttività e poweruser perse

+0

'fish' per l'uso interattivo,' zsh' per lo scripting - se è solo tra i due. Personalmente, ritengo che mantenere buone abitudini sia il seguente: POSIX sh compliance è abbastanza importante da rimanere bash, o ksh se mi interessa di più delle prestazioni. –

+0

... detto questo, questa domanda è esplicitamente contro le regole qui; c'è un motivo preciso per le richieste raccomand-a-tool, * e * un'altra per le domande incentrate sull'opinione pubblica. –

+0

Buon confronto tra diverse shell - http://hyperpolyglot.org/unix-shells – valentt

risposta

10

Storicamente c'è stata una ware fiamma di sorta tra i gusci C (CSH e TCSH) e Bash. La denuncia contro le varianti CSH è che sono dannosi per lo scripting.

Negli anni sono stato un drogato CLI, non ho mai fatto alcun script locali in cui il linguaggio di scripting è stato scelto perché è quello che è stato il mio guscio.

Ho scritto una serie di script che possono sostanzialmente essere suddivisi in due categorie:

  1. quelli che aiutano la mia produttività riga di comando
  2. Quelli che non sono direttamente legate alla mia produttività della linea di comando.

Gli script nella categoria 1 sono quasi sempre scritti nel linguaggio di scripting della shell (spesso come funzioni che utilizzo ZSH e in precedenza utilizzavo BASH entrambe le funzioni di supporto).

Gli script della categoria 2 sono scritti in qualunque sia la più efficiente (sia il tempo di sviluppo sia il tempo di esecuzione presi in considerazione). Spesso mi trovo a scrivere piccoli script in Perl, C (compilato, ovviamente), BASH/ZSH/SH o qualunque altra cosa io voglia. Ho fatto un po 'di scripting Python (ma non molto), e persino ricorso a Java in alcune occasioni (compilato-ish, di nuovo).

Quindi cosa sto borbottando? Non basare la scelta della shell sulle sue capacità di scripting standalone. Scegli la tua shell per la sua utilità come shell. Script in qualsiasi altra cosa tu scelga. Probabilmente sarai abbastanza bravo con BASH come shell (anche se mi piace un po 'di più lo ZSH, **/* globbing è carino e poche altre piccole cose, ma la maggior parte degli script che ho scritto per ZSH sono identici all'inizio del loro BASH controparti).

+2

Re: '**/*' - le versioni moderne di (4.x) di bash supportano anche i globi ricorsivi; vedi 'shopt -s globstar'. La cosa che è una grande differenza nel mio punto di vista è il comportamento di divisione delle stringhe su espansioni non quotate; zsh fa il modo corretto, mentre bash fa il modo che è compatibile con POSIX. C'è sicuramente molto spazio per una differenza legittima in termini di ciò che si preferisce qui; personalmente, vado per la conformità con lo standard mal concepito ma onnipresente. –

4

se non riesci a trovare alcun confronto tra zsh vs fish, quindi provalo tu stesso. È l'unico modo in cui puoi dire quale preferisci, nessun altro può dirti questo. Inoltre, definire il significato della produttività. Per me, è l'abbondanza di moduli e le capacità interne del linguaggio. Se hai iniziato con Python, prova a farlo. Per quanto riguarda le shell, puoi apprenderne di meno (non dire completamente dimenticarle), per quanto riguarda forse la comprensione dei tuoi script rc e altri elementi di sistema ecc. Oltre a ciò, Python può fare ciò che fa la shell.