Bash tips: differenze tra le versioni

nessun oggetto della modifica
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>.




271

contributi