Michele Agostinelli Blog

ansible

Beh, chi mi conosce saprà già che la mia risposta è decisamente si!

Non c'è giorno in cui non lo utilizzi. Molte operazioni sono molto più veloci se fatte da terminale, come ad esempio quelle che si possono effettuare su molti file in un colpo solo! Bisogna ammettere che, iniziando da zero, la strada è in salita, c'è molto da imparare, ma una volta acquisita una certa padronanza, velocizzerete moltissimo il vostro flusso di lavoro e non solo ci sono delle operazioni che si possono effettuare solo in questo modo.. Pensate, ad esempio, alla modifica solo di alcuni file in mezzo a migliaia, oppure spostare solo quelli che rispettano alcuni criteri.

Nel mio caso terminale è sinonimo di #bash, la shell più usata in ambito #linux.

Bash

Esempi

Quelli che seguono sono alcuni esempi dei miei utilizzi più comuni.

Resize massimo di immagini

find /home/yunohost.app/nextcloud/data/__groupfolders/3/prove -type f -iname "*.jpg" -exec mogrify -define preserve-timestamp=true -verbose -resize "2048x2048>" -quality 90 {} \;

Resize massimo di video

mencoder panettone.mov -vf rotate=1 -oac pcm -ovc lavc -lavcopts ffmpeg -i input.file -c:v mpeg4 -q:v 5 -tag:v DIVX -vf scale=w=720:h=576:force_original_aspect_ratio=decrease -c:a libmp3lame -q:a 3 -ac 2 -ar 44100 output.avi
find /opt/mypath/ -xtype l

Rinomina di massa file

for i in File*.txt; do j=`echo $i | sed 's/questo/quello/g'`; mv "$i" "$j"; done

Ottimizzazione file pdf

Se vogliamo ridurre le dimensioni di alcuni file pdf in un certo path, rinunciando alla qualità delle immmagini.

for file in $(ls suffisso_*.pdf); do gs -sOutputFile="${resize_file%%.*}".pdf -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dDownsampleColorImages=true -dDownsampleGrayImages=true $file; done

sincronizzazione di file e directory

Questo comando si può usare sia tra due directory dello stesso computer, sia nel caso uno dei due sia remoto, l'enorme vantaggio sta nella seconda volta in cui viene lanciato, solo le differenze tra il primo e il secondo saranno trasferite, ottimizzando, quindi, i tempi del trasferimento. (saranno riportati anche i permessi dei singoli file)

rsync -auvx /orgine/ /destinazione/

Conversioni di formato (audio, video, ma non solo)

Flac (diversi metodi)

sox track_01.wav track_01.flac

for myfile in $(ls *.wav); do flac --verify --replay-gain --best --delete-input-file $myfile; done

ffmpeg -i in.wav -af aformat=s16:44100 out.flac

Ssh

Spesso la shell (= riga di comando) va a braccetto con il software ssh, che permette di collegarsi su un sistema remoto. Grazie alla combinazione dei due, è possibile amministrare server remoti (cioé diversi dal pc che stiamo usando) o headless, cioé privi dell'interfaccia grafica (che consuma solo risorse aggiuntive), come il famoso #raspberrypi.

curl

Come non citare curl il coltellino svizzero della riga di comando, specializzando in richieste remote via http e trasferimento di file. Su questo strumento (#curl) farò un articolo apposito, perché è uno strumento molto potente, in continuo sviluppo e con numerosi casi d'uso.

Vim

E' il mio editor per eccellenza, quando uso il terminale uso lui per editare i file di testo (e non solo).

Installazione pacchetti

Tutte le varie distribuzioni linux hanno degli appositi software (rigorosamente da riga di comando) per installare i pacchetti e le loro dipendenze, alcuni esempi: – apt (Debian/Ubuntu) – dnf (Fedora, redhat) – pacman (Arclinux) – apk (Alpine)

Ansible

Oltre a bash, di cui sopra abbiamo ampiamente parlato, #ansible merita una mensione d'onore (è probabile che in futuro farò un articolo dedicato a questo strumento). Ansible è un tool (open source) di automazione, con cui effettuare il provisioning, la gestione della configurazione, il deploy delle applicazioni e moltissimi altri processi IT, in modo semplice, organizzato e automatizzato. Il suo utilizzo è libero, e in rete è possibile trovare migliaia di playbook (script), condivisi da altri utenti che permettono di automatizzare i compiti più disparati.

Software di Backup

Da sempre Linux (ma non solo) offre molti software per gestire il backup da riga di comando. Alcuni esempi – borg – duplicity – restic – rsync – rclone

Powershell

Infine una piccola digressione/informazione, anche Microsoft è stata costretta ad ammettere la superiorità della riga di comando, infatti dopo anni in cui ha puntato esclusivamente a rendere le interfacce sempre più accattivanti, da qualche anno fornisce insieme ai suoi sistemi operativi la #powershell. Con questo software, di fatto, non ha voluto rimanere indietro rispetto al competitor #linux. In pratica è un ammissione circa il fatto che alcune cose si fanno meglio e più velocemente con la riga di comando! Nel corso del tempo sono nate estenzioni per questa shell, e ormai è possibile effettuare moltissime operazioni, purtroppo ha una propria sintassi, quindi sarà necessario studiare un po'.

Per motivi spazio e tempi di lettura l'articolo finisce qui, ma ci sarebbe materiale a sufficienza per scrivere libri su libri o riempire di articoli giornalieri un blog. Spero di avervi un po' incuriosito a provare, e con che i miei appunti su qualche comando che uso vi siano di aiuto.

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA