Quali chicche sono presenti nelle shell UNIX sans BASH?


5

Uso "bash" da quando utilizzo Unix-Linux/Solaris. Ora, sono interessato a sapere cosa offrono meglio le shell come "ksh", "zsh"? Cosa usano i "geek"?

5

Sono parziale di zsh (è come una miscela di ksh e bash). Il guide ha una bella panoramica delle sue caratteristiche. Questo page ha un buon grafico che mostra la disponibilità di diverse funzionalità in diverse shell.

  0

'zle' (http://zsh.sunsite.dk/Guide/zshguide04.html#l75) sembra interessante. 22 feb. 092009-02-22 04:21:19


0

Avevo uno montato per fornire la cronologia della shell per sessione.

La cosa unica era che ogni finestra aveva una propria cronologia shell. Abbastanza comodo

  0

È questo attraverso bash? 28 feb. 092009-02-28 02:15:36

  0

Ho fatto questo con ksh me stesso. Non lo faccio in questo modo ora, ma penso che puoi farlo con zsh, e probabilmente con bash. 28 feb. 092009-02-28 02:46:03

  0

Su alcuni sistemi l'ho ottenuto tramite il collegamento simbolico di .history (o è .sh_history) a/dev/null. Su altri ho dovuto compilare una shell personalizzata. 06 mag. 092009-05-06 20:05:06


1

Io uso ksh93 di preferenza. Ciò significa che le basi di ksh sono disponibili su praticamente tutti i sistemi su cui mi trovo, quindi la mia esperienza interattiva e il 98% del mio profilo complesso rimangono gli stessi.

  0

+1 Se si lavora comunemente su un singolo (o qualche altro piccolo numero) di sapori * nix OS, qualsiasi shell è OK. Se lavori su "alcuni" o "molti" gusti diversi, allora ksh dovrebbe saltare rapidamente in cima all'elenco delle tue shell preferite. Non ho mai trovato un * nix che non includesse ksh come shell di default. 07 lug. 092009-07-07 15:15:23


3
  • bash: Nella mia esperienza, molte persone usano bash, in parte perché è la shell standard nella maggior parte dei sistemi Linux.

  • ksh: Molti sistemi Solaris utilizzano invece ksh, ma sembra che stia perdendo popolarità in bash.

  • csh: Csh era più popolare, ma in genere veniva sostituito da tcsh. tcsh non è male per coloro che sono molto a proprio agio con la sintassi c-like.

  • zsh: Non ho usato zsh, ma sembra molto ricco di funzionalità.

Personalmente, preferisco bash, perché è installato su quasi tutti i sistemi operativi UNIX-compatibile, è molto versatile, ed è un buon compromesso tra un semplice strumento a riga di comando e un linguaggio di scripting.


1

bash è un po 'lento, ma come molti programmi FSF, cerca di incorporare tutte le funzionalità conosciute. Io uso ksh93, che è in gran parte convergente con bash. Il vantaggio principale di ksh è che ha una bella interfaccia per estendere la shell con il codice C. È anche un po 'più facile da personalizzare, ad esempio, per fare in modo che il tasto di tabulazione faccia ciò che vuoi, nel contesto. Lo svantaggio è che il completamento del comando non è integrato; devi programmarlo.

Evitare csh e dei suoi derivati ​​:-)


1

Nella mia esperienza, ci sono pochissimi chicche in shell standard Unix (dove ciò significa, per me, csh, sh, ksh) che non sono presente anche in a almeno un modulo equivalente in bash. Di conseguenza, finché sei a tuo agio che lo bash sarà su tutte le tue macchine, puoi anche usarlo per ottenere la massima funzionalità.

OTOH, se si vuole affrontare con la portabilità, probabilmente userai ksh, che si uniforma molto vicino allo standard POSIX - con alcune estensioni (bash è anche abbastanza vicino allo standard POSIX, ma con un po 'più estensioni).

mi piace molto il POSIX $(cmd) notazione al posto del classico back-zecche

`cmd` 

(Non è stato divertente in Markdown!). Uno dei motivi principali per i gusti di esso è che è molto, molto più facile da nido le chiamate:

gcclib=$(dirname $(dirname $(which gcc)))/lib 

Ottenere che proprio su una linea con back-tick è abbastanza stupido che non avrebbe tentare di farne uno -liner. Questo è in ksh e bash; non è nella classica shell Bourne (/bin/sh, ma ricorda che lo /bin/sh su alcune macchine non è la classica shell Bourne ma bash in incognito), né nella shell C.


2

Bash è meglio sapere per la compatibilità più ampia, puoi sedere praticamente su qualsiasi Unix e sarà lì.

Zsh è probabilmente uno dei gusci più moderni. Ci sono tutti i tipi di cose divertenti che puoi fare con esso


1

Se stai usando bash e ne sei felice, non c'è bisogno di cambiare subito. È un buon guscio. Conoscere la sua storia ti dice qualcosa anche su questo: Bourne Again SHell. È stato un buon tentativo di realizzare una shell migliore rispetto alla C-Shell e ai suoi derivati ​​(come tcsh), permettendo di usare la sintassi/bin/sh per lo scripting (o per l'uso interattivo), ma aggiungendo alcune delle più belle funzionalità di csh (come la storia e così via).

La shell Korn e Bash hanno molto in comune, comunque nel concetto. Come/bin/sh, lo Korn shell proveniva originariamente da AT & T e non era open source fino a relativamente poco tempo fa. Ha un buon meccanismo di cronologia e blocca i file di stato cronologia in modo che, se sono montati su server di file di rete, più copie della shell scriveranno correttamente nel file di cronologia senza rovinarsi l'un l'altro. Supporta anche la sintassi/bin/sh e incorpora alcune delle cose positive su/bin/csh. C'è molto da fare in ksh, ed è generalmente una shell piuttosto buona, se riesci a trovarla. L'ho usato su Solaris, specialmente quando lavoravo a Sun. Non volevo installare nulla che non fosse presente con il sistema operativo, poiché ho installato un nuovo SO diverse volte alla settimana, quindi questa è stata una buona scelta.

Ora utilizzo Bash o zsh. Preferisco zsh per il suo ricco set di funzionalità per il completamento dei comandi e per la scrittura di funzioni di shell in generale (per le mie shell interattive - quando si programmano gli script, mi attengo a roba di shell Bourne piuttosto standard).

Come altri hanno già detto, è meglio evitare qualsiasi versione di C-shell, tranne quelle shell che offrono alcune funzionalità di/bin/csh ma non derivano dal codice/bin/csh.