Oct 182010
 

zshzsh è una ottima alternativa alla classica bash che abbiamo nel nostro box linux.
zsh è una shell progettata per l’uso interattivo, anche se è anche un potente linguaggio di scripting. Molte delle caratteristiche utili di bash, ksh, tcsh e sono state inserite nella zsh; molti elementi originali sono stati aggiunti.

Origine
la prima versione di zsh fu scritat da Paul Falstad nel 1990 quando era uno studente alla Princeton University.

Etimologia
Il nome zsh deriva dal professore di Yale Zhong Shao, Princeton University. Paul Falstad pensò che il nome con cui Shao faceva login, “zsh”, era un buon nome per una shell.



installazione

zsh è presente nella maggior parte delle distribuzioni, utilizzate il vostro packet manager per installarla, in ubuntu usate aptitude install zsh

Primo utilizzo

La prima volta che utilizzate zsh otterrete la seguente schermata::

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files (the files .zshenv, .zprofile, .zshrc, .zlogin in the directory ~). This function can help you with a few settings that should make your use of the shell easier.

You can:
(q) Quit and do nothing. The function will be run again next time.
(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.
(1) Continue to the main menu.
(2) Populate your ~/.zshrc with the configuration recommended by the system administrator and exit (you will need to edit the file by hand, if so desired).

Andando nel main menu vengono presentate molte opzioni, sul come personalizzare history, prompt ed altre cose, vi consiglio di utilizzare l’opzione 0, vi passerò io alcune tra le configurazioni consigliate.

Funzionalità

Completamento con Tab
La shell Zsh ha aperto la strada nel sostenere il completamento completamente programmabile, consentendo agli utenti di avere la shell che completerà automaticamente i parametri di vari comandi indipendenti dalla  shell stessa, che si effettua proponendo le definizioni di tutti i parametri noti. Questo permette all’utente ad esempio di scrivere un comando tipo tar xzf Tab ⇆ e si ha a shell il completamento solo con file di tipo archivip tar gzip dal filesystem, saltando i file che sono incompatibili con i parametri di input. Una installazione moderna di zsh viene fornita con le definizioni di completamento per oltre cinquecento comandi.

Per abilitare l’autocompletamento date nella vostra nuova shell zsh:

% autoload -U compinit
% compinit

E per avere un miglior output:

% zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
% zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'

Selezione del Prompt
prompt
Zsh ha alcuni “temi” disponibili per il prompt compresi nella shell, per vederli ed utilizzarli avete prima bisogno di inizializzare il supporto avanzato del prompt con il comando:

% autoload -U promptinit
% promptinit

Un esempio dei prompt disponibili può ora essere stampato con il comando

prompt -p

Adesso possiamo attivare il nostro preferito ad esempio:

 prompt elite2 yellow

Personalizzazione dell’history

Anche questo aspetto è altamente personalizzabile, decidiamo di scrivere l’history in un file di nome .histfile, di tenere 1000 comandi nella shell corrente e di salvare gli ultimi 1000 alla chiusura del terminale.
Questo si traduce con:

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000

Decidiamo anche di non salvare i duplicati o i comandi che iniziano con uno spazio

setopt hist_ignore_all_dups hist_ignore_space

Auto cd con un comando

Abilitiamo anche l’opzione di zsh che permetet di andare in una directory semplicemente scrivendo il suo percorso, ovvero per andare in /etc/init.d in zsh si può scrivere il percorso senza il cd davanti, abilitando l’opzione:

setopt autocd

Caratteri Jolly estesi (globbing)

Globbing è un modo di espandere i caratteri jolly in un nome di file non specifico in una serie di nomi di file specifici. la shell usa il globbing tutto il tempo. Per esempio:

$ ls foo*
foo1 foo2

zsh è una delle shell più potenti con alcuni caratteri jolly molto interessanti che possono essere utilizzati. Per esempio, è possibile utilizzare  glob qualificativi, che sono i caratteri con un significato speciale. Se si vuole elencare tutti i file di tipo collegamento simbolico nella directory corrente si usa ad esempio:

$ ls *(@)

Alcuni altri glob qualificativi includono lo slash (/) per indicare directoy ed un punto (.) per file piani; la pagina del man di zshexpn ne ha una lista completa. Se non ci sono risultati, zsh ritornerà un codice di errore.

Ci sono altri utili caratteri speciali, come  (**/), che indica a zsh di cercare qualsiasi numero di directory a qualsiasi livello, inclusa la directory corrente. Per trovare tutti i file (.sh) e tutti i file (.py) nella directory corrente e tutte le sotto directory e dare l’output in una lista utilizzabile per il parsing automatico (un altro script magari), possiamo usare:

$ ls -1 **/*.(sh|py)

Per abilitare queste opzioni estese di globbing mettiamo nel file ~/.zshrc:

setopt extended_glob

.zshrc

Questo il file con le opzioni viste in questo articolo

# Auto completion
autoload -Uz compinit
compinit
zstyle :compinstall filename '/home/capecchi/.zshrc'
zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'
#Prompt setup
autoload -U promptinit
promptinit
prompt elite2 yellow
# History
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
#We set some options here
setopt appendhistory autocd hist_ignore_all_dups hist_ignore_space

Fare di zsh la shell di default

Un metodo per cambiare le shell è usare il comando chsh (uno strumento usato per cambiare la shell di login di un utente). Un utente normale può cambiare solo la shell di login del proprio account. Come utente root, è possibile modificare la shell di login di qualsiasi utente.

chsh -s /bin/zsh username

Popular Posts:

flattr this!

  2 Responses to “Introduzione a zsh”

  1. hi

    in your example. zshrc last line
    [Code]
    setopt appendhistory autocd hist_ignore_all_dups hist_ignore
    [/ Code]

    missing ‘_space’
    I changed the last line so
    [Code]
    setopt appendhistory autocd hist_ignore_all_dups hist_ignore_space
    [/ Code]

    Erika

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>