Z-shell (o Zsh) è una shell POSIX interattiva simile a Bourne nota per la sua abbondanza di funzionalità innovative. Gli utenti di Z-Shell spesso citano le sue numerose comodità e gli attribuiscono una maggiore efficienza e un'ampia personalizzazione.
Se sei relativamente nuovo in Linux o Unix ma hai abbastanza esperienza per aver aperto un terminale ed eseguire alcuni comandi, probabilmente hai usato la shell Bash. Bash è probabilmente la shell del software libero definitiva, in parte a causa delle sue caratteristiche progressiste e in parte perché viene fornita come shell predefinita sulla maggior parte dei popolari sistemi operativi Linux e Unix. Tuttavia, più usi una shell, più inizi a trovare piccole cose che potrebbero essere migliori per il modo in cui desideri utilizzarla. Se c'è una cosa per cui l'open source è famoso, è la scelta . Molte persone scelgono di "diplomarsi" da Bash a Z.
Cos'è Zsh?
Una shell è solo un'interfaccia per il tuo sistema operativo. Una shell interattiva ti permette di digitare comandi attraverso quello che viene chiamato standard input o stdin e ottieni l'output tramite output standard e errore standard o stdout e stderr . Esistono molte shell, tra cui Bash, Csh, Ksh, Tcsh, Dash e Zsh. Ognuno ha caratteristiche basate su ciò che i suoi programmatori pensavano sarebbe stato il migliore per una shell. Se queste funzionalità sono buone o cattive, dipende da te, l'utente finale.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Zsh ha funzionalità come il completamento interattivo delle schede, la ricerca automatizzata dei file, l'integrazione delle espressioni regolari, una scorciatoia avanzata per la definizione dell'ambito dei comandi e un ricco motore di temi. Queste funzionalità sono incluse in un ambiente shell simile a Bourne altrimenti familiare, il che significa che se già conosci e ami Bash, troverai Zsh familiare, tranne che con più funzionalità. Potresti pensarlo come una specie di Bash++.
Installazione di Zsh
Installa Zsh con il tuo gestore di pacchetti.
Su Fedora, RHEL e CentOS:
$ sudo dnf install zsh
Su Ubuntu e Debian:
$ sudo apt install zsh
Su MacOS, puoi installarlo utilizzando MacPorts:
$ sudo port install zsh
O con Homebrew:
$ brew install zsh
È possibile eseguire Zsh su Windows, ma solo su un livello simile a Linux o Linux come Windows Subsystem for Linux (WSL) o Cygwin. L'installazione non rientra nell'ambito di questo articolo, quindi fai riferimento alla documentazione Microsoft.
Configurazione di Zsh
Zsh non è un emulatore di terminale; è una shell che gira all'interno di un emulatore di terminale. Quindi, per avviare Zsh, devi prima avviare una finestra di terminale come GNOME Terminal, Konsole, Terminal, iTerm2, rxvt o un altro terminale di tua preferenza. Quindi puoi avviare Zsh digitando:
$ zsh
La prima volta che avvii Zsh, ti viene chiesto di scegliere alcune opzioni di configurazione. Questi possono essere tutti modificati in un secondo momento, quindi premi 1 per continuare.
This is the Z Shell configuration function for new users, zsh-newuser-install.
(q) Quit and do nothing.
(0) Exit, creating the file ~/.zshrc
(1) Continue to the main menu.
Esistono quattro categorie di preferenze, quindi inizia dall'alto.
- La prima categoria ti permette di scegliere quanti comandi conservare nel file di cronologia della shell. Per impostazione predefinita, è impostato su 1.000 righe.
- Il completamento di Zsh è una delle sue caratteristiche più interessanti. Per semplificare le cose, considera di attivarlo con le sue opzioni predefinite finché non ti abitui a come funziona. Premi 1 per le opzioni predefinite, 2 per impostare le opzioni manualmente.
- Scegli le associazioni di tasti Emacs o Vi. Bash usa i binding di Emacs, quindi potresti esserti già abituato.
- Infine, puoi conoscere (e impostare o annullare) alcune delle caratteristiche sottili di Zsh. Ad esempio, puoi smettere di usare il cd comando consentendo a Zsh di avviare una modifica della directory quando si fornisce un percorso non eseguibile senza alcun comando. Per attivare una di queste opzioni extra, digita il numero dell'opzione e inserisci s per impostare esso. Prova ad attivare tutte le opzioni per ottenere l'esperienza Zsh completa. Puoi annullarli in un secondo momento modificando ~/.zshrc .
Per completare la configurazione, premi 0 .
Utilizzo di Zsh
All'inizio, Zsh assomiglia molto all'utilizzo di Bash, che è inconfondibilmente una delle sue numerose funzionalità. Ci sono serie differenze tra, ad esempio, Bash e Tcsh, quindi poter passare da Bash a Zsh è una comodità che rende Zsh facile da provare e facile da usare a casa se devi usare Bash al lavoro o sul tuo server.
Cambia directory con Zsh
Sono le piccole differenze che rendono piacevole Zsh. Per prima cosa, prova a cambiare la directory nella cartella Documenti senza il cd comando . Sembra troppo bello per essere vero; ma se inserisci un percorso di directory senza ulteriori istruzioni, Zsh cambia in quella directory:
% Documents
% pwd
/home/seth/Documents
Ciò rende un errore in Bash o in qualsiasi altra shell normale. Ma Zsh è tutt'altro che normale e questo è solo l'inizio.
Cerca con Zsh
Quando vuoi trovare un file usando una normale shell, probabilmente ricorri a trova o trova comando. Per lo meno, potresti aver usato ls -R per un elenco ricorsivo di un insieme di directory. Zsh ha una funzionalità integrata che gli consente di trovare un file nella directory corrente o in qualsiasi altra sottodirectory.
Ad esempio, supponi di avere due file chiamati foo.txt . Uno si trova nella directory corrente e l'altro in una sottodirectory chiamata foo . In una shell Bash, puoi elencare il file nella directory corrente con:
$ ls
foo.txt
e puoi elencare l'altro indicando esplicitamente il percorso della sottodirectory:
$ ls foo
foo.txt
Per elencare entrambi, devi utilizzare -R switch, magari in combinazione con grep :
$ ls -R | grep foo.txt
foo.txt
foo.txt
Ma in Zsh puoi usare ** stenografia:
% ls **/foo.txt
foo.txt
foo.txt
E puoi usare questa sintassi con qualsiasi comando, non solo con ls . Immagina la tua maggiore efficienza quando sposti tipi di file specifici da una raccolta di directory a un'unica posizione, o concateni frammenti di testo in un file o esplori i log.
Utilizzo del completamento della scheda Zsh
Il completamento delle schede è una funzionalità per utenti esperti in Bash e in alcune altre shell, e ha preso d'assalto il mondo Unix quando è diventato un luogo comune. Gli utenti Unix non dovevano più ricorrere a caratteri jolly durante la digitazione di percorsi lunghi e noiosi (come /h*/s*h/V*/SCS/sc*/comp*/t*/a*/*9/ 04/LS*barca*v , che è molto più semplice che digitare /home/seth/Videos/SCS/scenes/composite/takes/approved/109/04/LS_boat-port-cargo-mover.mkv ). Invece, potrebbero semplicemente premere il tasto Tab quando hanno inserito una stringa univoca sufficiente. Ad esempio, se sai che esiste solo una directory che inizia con una h a livello di root del tuo sistema, potresti digitare /h e poi premi Tab. È veloce, è semplice, è efficiente. Conferma anche l'esistenza di un percorso; se Tab non completa nulla, sai che stai cercando nel posto sbagliato o hai digitato male una parte del percorso.
Tuttavia, se hai molte directory che condividono cinque o più delle stesse prime lettere, Tab si rifiuta fermamente di completare. Mentre nella maggior parte dei terminali moderni rivelerà (almeno) i file impedendogli di indovinare cosa intendi, di solito sono necessarie due pressioni di tabulazione per rivelarli; pertanto, il completamento delle tabulazioni diventa spesso un'interazione tale di lettere e tabulazioni sulla tastiera che ti sembra di prepararti per un recital di pianoforte.
Zsh risolve questo piccolo fastidio scorrendo i possibili completamenti. Se digiti ls ~/D e premi Tab, Zsh completa il tuo comando con Documenti primo; se premi nuovamente Tab, vengono offerti Download , e così via finché non trovi quello che desideri.
Caratteri jolly in Zsh
I caratteri jolly si comportano in modo diverso in Zsh rispetto a quelli a cui sono abituati gli utenti Bash. Innanzitutto possono essere modificati. Ad esempio, se desideri elencare tutte le cartelle nella directory corrente, puoi utilizzare un carattere jolly modificato:
% ls
dir0 dir1 dir2 file0 file1
% ls *(/)
dir0 dir1 dir2
In questo esempio, il (/) qualifica i risultati del carattere jolly in modo che Zsh visualizzi solo le directory. Per elencare solo i file, usa (.) . Per elencare i link simbolici, usa (@) . Per elencare i file eseguibili, usa (*) .
% ls ~/bin/*(*)
fop exify tt
Zsh non è a conoscenza solo dei tipi di file. Può anche elencare in base al tempo di modifica, utilizzando la stessa convenzione di modifica dei caratteri jolly. Ad esempio, se desideri trovare un file che è stato modificato nelle ultime otto ore, utilizza mh modificatore (per modificato e ore ) e il numero intero negativo di ore:
% ls ~/Documents/*(mh-8)
cal.org game.org home.org
Per trovare un file modificato più di (ad esempio) due giorni fa, i modificatori cambiano in md (per modificato e giorno ) con un numero intero positivo:
% ls ~/Documents/*(+2)
holiday.org
C'è molto di più che puoi fare con i modificatori e le qualificazioni dei caratteri jolly, quindi leggi la pagina man di Zsh per tutti i dettagli.
L'effetto collaterale dei caratteri jolly
Per usare i caratteri jolly nel modo in cui li useresti in Bash, a volte devono essere salvati in Zsh. Ad esempio, se stai copiando alcuni file sul tuo server in Bash, potresti utilizzare un carattere jolly come questo:
$ scp IMG_*.JPG [email protected]:~/www/ph*/*19/09/14
Funziona in Bash, ma Zsh restituisce un errore perché tenta di espandere le variabili sul lato remoto prima di emettere scp comando. Per evitare ciò, devi eseguire l'escape delle variabili remote:
% scp IMG_*.JPG [email protected]:~/www/ph\*/\*19/09/14
Sono questi tipi di piccole eccezioni che possono frustrarti quando passi a una nuova shell. Non ce ne sono molti quando si usa Zsh (probabilmente ce ne sono di più quando si torna a Bash dopo aver sperimentato Zsh) ma quando accadono, mantieni la calma e sii esplicito. Raramente sbaglierai ad aderire rigorosamente a POSIX, ma se ciò fallisce, cerca il problema per risolverlo e vai avanti. Hyperpolyglot.org si è dimostrato prezioso per molti utenti bloccati su una shell al lavoro e un'altra a casa.
Nel mio prossimo articolo su Zsh, ti mostrerò come installare temi e plugin per rendere la tua Z-Shell ancora più Z-ier.