Quando dobbiamo cancellare una quantià notevole di file, anche con estensioni diverse, potrebbe essere comodo escludere in modo semplice dalla lista di file da cancellare alcune determinate estensioni. Purtroppo il comando rm non possiede una opzione exclude, ma possiamo ovviare a questo con un comando del tipo
rm $(ls | grep -v .ext1$ | grep -v .ext2$)
In questo modo non facciamo altro che creare al volo la lista di file da cancellare, escludendo tramite il comando grep e la sua opzione di negazione -v i file il cui nome finisce con .ext1 o con .ext2. Il simbolo $ permette appunto di specificare che i nomi dei file devono finire con la stringa specificata, in questo caso l’estensione dei file. La lista di estensioni da escludere può essere allungata e personalizzata a piacimento seguendo le regole delle regular expressions.
Niente di piu’ facile! Ancora una volta ci viene in aiuto il comando tr.
Per passare da caratteri minuscoli a caratteri maiscoli basta lanciare il comando
echo "sono una stringa tutta in minuscolo" | tr "[:lower:]" "[:upper:]"
per ottenere
SONO UNA STRINGA TUTTA IN MINUSCOLO
anche se non e’ piu’ vero
Naturalmente, per fare la conversione opposta basta scambiare lower e upper.
Facile no?
Quando lanciamo nel nostro terminale un programma che puo’ durare diverse ore, puo’ essere comodo potersi scollegare dal terminale stesso, oppure dall’intero sistema, in particolare se il pc che stiamo utilizzando non e’ il nostro personale. Oppure nel caso in cui stiamo lanciando un’applicazione su un pc remoto via collegamento ssh.
In questi casi ci viene in aiuto l’utili screen. Con questo piccolo programma e’ possibile aprire un terminale virtuale da cui scollegarci senza fermare le applicazioni lanciate per poi ricollegarci allo stesso terminale in un altro momento o da un altro pc.
Innanzi tutto lanciamo screen
screen
Dopo aver letto le eventuali note iniziali ed aver premuto invio, ci troveremo davanti l’ambiente screen, che ricalca in tutto e per tutto un normale terminale. Possiamo quindi lanciare la nostra applicazione nel modo consueto.
Per scollegarci dal terminale virtuale non dobbiamo far altro che digitare in sequenza i tasti Ctrl+a seguito da d. Saremo cosi’ tornati al nostro consueto terminale.
Per ripristinare invece una sessione screen precedentemente abbandonata, basta usare il comando
screen -r
Se avevamo messo in sospeso piu’ d una sessione screen, il programma ci chiedera’ quale ripristinare, proponendoci una lista. Bastera’ ripetere quindi lo stesso comando indicando anche l’ID della sessione da ripristinare.
Nella scrittura di procedure o script bash a volte si ha la necessita’ di generare liste di numeri.
Ci sono due modi semplici di compiere tale operazione.
Il primo fa’ uso del comando seq e la sua sintassi e’
seq start step stop
Ad esempio, il comando
seq 1 1 4
genera la seguente lista verticale
1
2
3
4
Il separatore tra due elementi puo’ essere modificato dal valore standard (\n) in uno qualsiasi, ad esempio uno spazio, tramite il flag “-s”, in modo di ottenere una lista orizzontale.
Il secondo sfrutta le proprieta’ stesse della shell e consiste nel comando
echo {1..13}
che generrera’ la lista orizzontale
1 2 3 4 5 6 7 8 9 10 11 12 13
Questo secondo metodo genera solo liste orizzontali, ma puo’ essere usato anche con le lettere minuscole e maiuscole.
Volete estrarre uno o piu’ campi da un file? Conosco due metodi per farlo, ma sicuramente ve ne saranno numerosi altri (potenza di linux
).
Il primo fa uso del comando cut e va’ usato cosi’
cut -d" " -f2 nome_file
.
Questo comando estrae il secondo campo da ogni riga del file indicato. L’opzione -d” “ indica a cut di usare lo spazio come delimitatore dei campi, secondo me piu’ utile, altrimenti viene usato il carattere tab. Il campo -f indica il numero o il range (es. 2-3) dei campi da estrarre.
Altrimenti si puo’ usare un micro script awk
awk ‘{print $2}’ nome_file
.
In questo caso non e’ possibile indicare un range di campi, ma solo una lista. Di contro, awk riconosce come delimitatore sia gli spazi che le tabulazioni.