271
contributi
mNessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 141: | Riga 141: | ||
Il comando <code>'''history'''</code> mostra l'elenco numerato per una veloce ricerca dei comandi da richiamare con <code>'''!numero'''</code>; <code>'''!$'''</code> equivale all'ultimo argomento del precedente comando di conseguenza funziona anche <code>'''!numero$'''</code>. | <span id="history"> Il comando <code>'''history'''</code> mostra l'elenco numerato per una veloce ricerca dei comandi da richiamare con <code>'''!numero'''</code>; <code>'''!$'''</code> equivale all'ultimo argomento del precedente comando di conseguenza funziona anche <code>'''!numero$'''</code>. </span> | ||
Per ulteriori informazioni sull'uso interattivo dello storico si rimanda all'apposita sezione del manuale di riferimento: | Per ulteriori informazioni sull'uso interattivo dello storico si rimanda all'apposita sezione del manuale di riferimento: | ||
Riga 289: | Riga 289: | ||
$ for f in *.txt; do mv "$f" "${f/%txt/log}"; done | $ for f in *.txt; do mv "$f" "${f/%txt/log}"; done | ||
==Il file .bashrc== | |||
La configurazione di bash è del tutto personale ma ci sono alcune opzioni che reputo essenziali e non sono inserite di default per ovvie ragioni. | |||
Aumenta la capacità del file <code>.bash_history</code> dalle 500 righe predefinite a 3333: | |||
export HISTFILESIZE=3333 | |||
Si noti che nel caso non si tenga pulito il file da eventuali errori di digitazione, o non si applicano le successive variabili qui esposte è consigliabile aumentare di molto questo valore in quanto il file verrà troncato una volta raggiunto quel numero. <br> | |||
Tenerlo in ordine è essenziale per richiamare i comandi in base al loro numero di posizione e che questo numero non cambi continuamente, vedere [[#history|il riferimento alla cronologia]]. | |||
Non salva nel file della history i comandi doppi (già presenti) e quelli preceduti da uno spazio: | |||
export HISTCONTROL=ignoreboth | |||
<code>ignoreboth</code> è la combinazione di <code>ignorespace</code> e <code>ignoredups</code>; il primo in particolare è di una comodità assoluta per non inserire comandi che non si vuole mantenere, sia per ragioni di sicurezza che di comodità. | |||
Ma visto che è difficile ricordarsi sempre di preporre uno spazio utilizziamo una variabile che ignorerà per noi certi comandi o pattern: | |||
export HISTIGNORE="&:su:[bf]g*:v[du]:pwd:ls*:grep*:less*:cat*:rm*:mv*:cp*" | |||
Ognuno è separato dai due punti, dove c'è un <code>'''*'''</code> significa che ignorerà anche il seguito, ad esempio <code>'''ls'''</code> ignorerà solo <code>'''ls'''</code>, <code>'''ls*'''</code> ignorerà anche <code>'''ls /media/'''</code>. <br> | |||
Le parentesi quadre servono a evitare di ripetere comandi simili, quindi nell'esempio verrano considerati sia <code>'''bg'''</code> che <code>'''fg'''</code>, sia <code>'''vd'''</code> che <code>'''vu'''</code>. <br> | |||
La <code>'''&'''</code> rappresenta la riga precedente nella cronologia, ovvero evitare di trovarsi una riga aggiunta nel file per ogni volta che si digita un certo comando, se invochiamo <code>'''man bash'''</code> più volte questo verrà inserito ogni volta come se fosse un comando nuovo (sì, a dispetto di <code>ignoredups</code>). | |||
==Miscellanea== | ==Miscellanea== | ||
Riga 296: | Riga 320: | ||
# quota il tutto e appendi ad un file con echo: già meglio | # 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 | # <code>'''CTRL-x'''</code> <code>'''CTRL-e'''</code>, si apre il nostro editor di fiducia e salviamo: superbo | ||
===Processo in background=== | ===Processo in background=== | ||
Riga 310: | Riga 335: | ||
Se invece si vuole riesumare mantenendo libero il prompt: | Se invece si vuole riesumare mantenendo libero il prompt: | ||
$ bg 1 | $ bg 1 | ||
===Umask=== | |||
Il comando umask imposta i permessi predefiniti che avranno i nuovi file in fase di creazione. La umask è usata da <code>mkdir</code>, <code>touch</code>, <code>echo</code> e altre chiamate di sistema che creano file. <br> | |||
Eseguito senza argomenti mostra l'attuale maschera in uso: | |||
$ umask | |||
0022 | |||
Mentre così rende la maschera leggibile secondo i consueti flag: | |||
$ umask -S 0022 | |||
u=rwx,g=rx,o=rx | |||
Come si può vedere in <code>/etc/skel/.profile</code> la maschera predefinita è impostata in <code>/etc/profile</code>, questa è comunque personalizzabile per ogni utente utilizzando <code>~/.profile</code>. <br> | |||
Per calcolarne il valore è necessario partire dal valore massimo <code>'''777'''</code> assegnabile alle directory e <code>'''666'''</code> ai file e sottrarre a esso il valore della maschera voluta. | |||
<pre> | |||
Modo Legge Scrive Esegue | |||
0 R W X | |||
1 R W -- | |||
2 R -- X | |||
3 R -- -- | |||
4 -- W X | |||
5 -- -- X | |||
6 -- W -- | |||
7 -- -- -- | |||
</pre> | |||
Se ad esempio volessimo che tutti i nuovi file fossero scrivibili e leggibili solamente dal proprietario utilizzeremo <code>'''umask 077'''</code>. <br> | |||
Si noti che questo non significa applicare il flag di esecuzione ai file, questo verrà adottato solamente per le directory che lo necessitano per essere esplorabili. | |||
===Scorciatoie da tastiera=== | |||
Le scorciatoie da tastiera sono solitamente una prerogativa del Window Manager, non ovviamente le scorciatoie di uno specifico programma ma piuttosto aprire il terminale o controllare il volume della scheda audio; ovvero comandi generici che eseguono una data operazione. | |||
In bash esiste il comando <code>'''bind'''</code> che è quello che permette di modificare le scorciatoie di bash. Prendendo come esempio la modalità classica, ovvero in stile emacs, diciamo che vogliamo un banale | |||
listato della home (volendo supporta anche i nostri alias): | |||
$ bind -x '"\C-x\C-r":ls ~' | |||
ora con la sequenza <code>'''CTRL-x'''</code> <code>'''CTRL-r'''</code> verrà eseguito il nostro comando. | |||
Per cancellarla: | |||
$ bind -r "\C-x\C-r" | |||
Funziona solo nella shell in cui si crea, a meno che non si inserisca nel file <code>~/.inputrc</code>. <br> Per i dettagli consultare <code>man readline</code> e <code>help bind</code>. | |||
contributi