271
contributi
mNessun oggetto della modifica |
(in espansione!) |
||
Riga 1: | Riga 1: | ||
{{Stub}} | |||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
Riga 94: | Riga 95: | ||
Sotto questo astruso nome si cela la possibilità di ricercare nello storico dei comandi semplicemente premendo <code>CRTL+r</code> e digitando qualche carattere del comando cercato. Verrà immediatamente mostrato l'ultimo comando che soddisfa i criteri di ricerca. Se più comandi soddisfano la ricerca è possibile scorrerli (dall'ultimo al primo) premendo nuovamente <code>CTRL+r</code>. | Sotto questo astruso nome si cela la possibilità di ricercare nello storico dei comandi semplicemente premendo <code>CRTL+r</code> e digitando qualche carattere del comando cercato. Verrà immediatamente mostrato l'ultimo comando che soddisfa i criteri di ricerca. Se più comandi soddisfano la ricerca è possibile scorrerli (dall'ultimo al primo) premendo nuovamente <code>CTRL+r</code>. | ||
Una volta trovato il comando lo si può eseguire con <code>INVIO</code> oppure | ====Ricerca incrementale==== | ||
Quando si cerca con <code>CRTL+r</code> può succedere di superare il comando che ci interessa, a questo punto tocca interrompere con <code>CRTL+g</code> e ricominciare; con una piccola modifica è però possibile abilitare la ricerca nell'altro verso e quindi tornare avanti al comando appena superato, questo disabilitando il flow control. <br> | |||
Il flow control è la funzione di interrompere il flusso del terminale, ovvero l'output e l'input (<code>CRTL+s</code> / <code>CRTL+q</code>), oggigiorno è una funzione poco utile soprattutto in un terminale grafico che ha la funzione di scroll. Aggiungiamo quindi <code>'''stty -ixon'''</code> al file <code>~/.bashrc</code> e d'ora in poi avremo <code>CRTL+s</code> che risponderà alle nostre ricerche. | |||
Una volta trovato il comando lo si può eseguire con <code>INVIO</code> oppure modificare con <code>CTRL+j</code>. | |||
====Ricerca nella cronologia==== | ====Ricerca nella cronologia==== | ||
Riga 227: | Riga 232: | ||
echo ${VAR/st/ST} # --> queSTa.sarebbe.una.stringa.di.esempio | echo ${VAR/st/ST} # --> queSTa.sarebbe.una.stringa.di.esempio | ||
echo ${VAR//st/ST} # --> queSTa.sarebbe.una.STringa.di.esempio</pre> | echo ${VAR//st/ST} # --> queSTa.sarebbe.una.STringa.di.esempio</pre> | ||
===Concatenazione e redirezione=== | |||
; <code>&&</code> : operatore logico AND, il secondo comando verrà eseguito solo se il primo avrà esito positivo | |||
; <code>;</code> : separatore di comandi, il secondo comando verrà eseguito in ogni caso | |||
<pre> | |||
$ cd ... && echo done | |||
$ cd ... ; echo done | |||
</pre> | |||
Nel caso specifico di un'applicazione che resta in esecuzione il secondo comando non verrà eseguito finché il | |||
primo non sarà terminato, in questo caso si usa <code>'''&'''</code> e saranno eseguiti entrambi in quanto il primo comando viene mandato in background; prendiamo xterm come esempio: | |||
<pre> | |||
$ xterm && xterm -rv | |||
$ xterm ; xterm -rv | |||
$ xterm & xterm -rv | |||
</pre> | |||
; <code>|</code> : pipe, passa l'output del comando che la precede come input del comando che la segue | |||
<pre> | |||
$ ls -A1 | less | |||
</pre> | |||
; <code>||</code> : operatore logico OR, restituisce esito positivo se almeno una delle condizioni di verifica valutate è vera | |||
<pre> | |||
$ if [ -f ~/.bashrc ] || [ -d ~/.config ]; then echo 'w00t!'; else echo 'no such file or directory'; fi | |||
$ if [ -f ~/.bashrc ] || [ -d ~/.configs ]; then echo 'w00t!'; else echo 'no such file or directory'; fi | |||
$ if [ -f ~/.bash ] || [ -d ~/.configs ]; then echo 'w00t!'; else echo 'no such file or directory'; fi | |||
</pre> | |||
* [http://www.tldp.org/LDP/abs/html/special-chars.html Advanced Bash-Scripting Guide: Special Characters] | |||
Dirige output di comando su file: <pre> $ man xterm > xterm.txt </pre> | |||
Dirige output di errore su file: <pre> $ xterm 2> xterm-errors.log </pre> | |||
Entrambi su file diversi: <pre> $ xterm > xterm_out.log 2> xterm_err.log </pre> | |||
Entrambi sullo stesso file: <pre> $ xterm &> xterm.log </pre> | |||
Entrambi sullo stesso file, alternativa:<pre>$ xterm > xterm.log 2>&1 | |||
$ xterm > /dev/null 2>&1 </pre> | |||
Aggiunge nuovo testo ad un file: <pre> $ man uxterm >> xterm.txt </pre> | |||
Cancella contenuto di un file: <pre> $ :> xterm.txt </pre> | |||
===Alternativa a basename=== | ===Alternativa a basename=== | ||
Riga 243: | Riga 296: | ||
<pre>for f in *.txt; do mv "$f" "${f/%txt/log}"; done</pre> | <pre>for f in *.txt; do mv "$f" "${f/%txt/log}"; done</pre> | ||
==Miscellanea== | |||
Abbiamo il nostro bel comando al prompt, è lungo tre righe e vogliamo salvarlo perché ci piace o perché è effettivamente troppo lungo e starebbe meglio come alias, che si fa? | |||
# seleziona, apri file, incolla, salva: noioso | |||
# quota il tutto e appendi ad un file con echo: già meglio | |||
# <code>ctrl-x</code> <code>ctrl-e</code>, si apre il nostro editor di fiducia e salviamo: superbo | |||
==Link== | ==Link== |
contributi