Proviamo a personalizzare il completamento di alcuni comandi:
telnet rlogin rsh ssh
prima di tutto all'interno del file ~/.hosts_ssh mettiamo una lista di host:
ed ecco il comando:
codice:
compctl -k "( ` < ~/.hosts_ssh `)" telnet rlogin rsh ssh
Soluzione:
La definizione di un completamento comincia con il comando
l'opzione
dice che gli argomenti che verranno utilizzati arrivano da un array, che sta all'interno dei "( )"
quello che viene tra messo backticks (sulla mia tastiera ALTGR+apice-sopra-il-punto-interrogativo)
viene eseguito come comando nella shell zsh e il suo output viene restituito all'interno del comando.
In questo caso abbiamo messo il carattere '<' che è un 'input redirector'
<escursus>
(se non sapete cos'è andate a guardare il paragrafo Ridirezione e pipeline degli Appunti di informatica libera).
</escursus>
Se l'input redirector non viene preceduto da nulla zsh da in pasto che quello che viene dopo il < al comando cat.
Morale, quello che sta tra parentesi diventa l'elenco degli host messi nel file ~/.hosts_ssh.
Per rendere l'idea il comando sarà qualcosa di simile:
con la comodità di poter aggiungere tutti gli host che vogliamo senza modificare il comando.
Chiude il comando l'elenco degli eseguibili che dovranno sottostare a questa regola.
in questo modo quindi se scrivessimo
ssh [tab]
potremmo scorrere tra gli host da noi inseriti nell'apposito file.
Alla prox