Molti utenti Linux hanno sperimentato un duraturo senso di realizzazione dopo aver composto un comando particolarmente intelligente che realizza più azioni in una sola riga o che riesce a fare in una riga ciò che di solito richiede 10 clic e altrettante finestre in un'interfaccia utente grafica (GUI). Oltre ad essere leggenda, le battute sono ottimi esempi del perché il terminale è considerato uno strumento così potente.
Entro la fine di questo articolo, avrai:
- Un elenco di 20 comandi che semplificheranno le tue attività quando lavori su Linux
- Una comprensione delle possibilità di combinare comandi semplici per creare comandi più potenti
- Più divertente di quanto ti aspetteresti eseguire questi comandi
Senza alcun ordine di importanza specifico, queste sono le nostre prime 20 battute per il terminale Linux. Anche se abbiamo diviso alcuni dei comandi più lunghi con il \
simbolo per una più facile leggibilità, puoi inserirli tutti su un'unica riga nel tuo terminale perché, in fondo, sono a una riga.
1. Applica un comando su file con nomi diversi
La shell {}
l'operatore è ottimo per questo. Ecco un esempio con tre directory racchiuse in {}
:
$ mkdir -p -v /home/josevnz/tmp/{dir1,anotherdir,similardir}
2. Modifica un file sul posto
Vuoi sostituire una stringa su uno o più file senza utilizzare un editor? Certo, sed
in soccorso:
$ sed -i 's#ORIGINAL_VALLUE#NEW_VALUE#g' myfile1 myfile2
Ma aspetta, gli amanti del Perl ti diranno che possono fare lo stesso:
$ perl -p -i -e 's#ORIGINAL#NEW_VALUE#' myfile1 myfile2
3. Condividi rapidamente un file utilizzando un server web
Alzi la mano chi non l'ha usato almeno una volta per condividere rapidamente una directory:
$ cd $mydir && python3 -m http.server 8888
4. Trova gli errori con journalctl
A volte le cose si rompono. Puoi trovare gli errori più recenti utilizzando una combinazione di journalctl
, insieme ai classici strumenti sort
e uniq
:
$ journalctl --no-pager --since today \
--grep 'fail|error|fatal' --output json|jq '._EXE' | \
sort | uniq -c | sort --numeric --reverse --key 1
898172 "/usr/bin/dockerd"
752 "/usr/local/sbin/node_exporter"
30 "/usr/bin/gnome-shell"
26 "/usr/bin/cat"
22 "/usr/libexec/gsd-media-keys"
[...]
In questo caso, sembra che il demone Docker sia infelice.
[ Scarica questo eBook per prepararti al tuo esame a distanza Red Hat. ]
5. Effettua un backup tramite trasferimento di file crittografato
Usa ssh
e tar
per eseguire backup sicuri. Si uniscono come burro di arachidi e gelatina:
$ tar --create --directory /home/josevnz/tmp/ --file - *| \
ssh raspberrypi "tar --directory /home/josevnz \
--verbose --list --file -"
Puoi aggiungere sapore al processo di backup con compressione e crittografia, proprio come aggiungere ingredienti al tuo sandwich.
6. Scrivi file istantanei
Questo è un ottimo trucco quando devi scrivere documenti multilinea:
$ cat<<DOC>/my/new/file
Line1
Line2
A $VARIABLE
DOC
Puoi anche solo cat > file
e quando hai finito di modificare, inserisci semplicemente il carattere EOF (Ctrl+D ):
[josevnz@dmaf5 temp]$ cat > testfile
This is a test
multiple lines
and here we go
[josevnz@dmaf5 temp]$
7. Cerca un file, includi alcune estensioni ed escludi altri
Questo esempio usa grep
modo per cercare file specifici. È abbastanza veloce e facile da ricordare:
$ grep -R 'import' --include='*.java' --color MySourceCodeDir
Oppure puoi provare il find
modo (usa xargs
per gestire correttamente un gran numero di partite):
$ find MySourceCodeDir/ -name '*.java' -type f -print| xargs \
grep --color 'import
Perché find
, potresti chiedere? Puoi combinare find
con -exec
per eseguire prima le azioni sui tuoi file e poi passare i risultati al filtro. Le possibilità di elaborazione qui sono infinite.
8. Monitora la memoria senza top o htop
Questo sta quasi barando. Ripete un comando, come free
, ogni cinque secondi ed evidenzia le differenze:
$ watch -n 5 -d '/bin/free -m'
9. Visualizza le dimensioni della partizione del disco
Usa lsbk
(blocco elenco) e jq
(per manipolare un JSON sulla riga di comando) per visualizzare le informazioni sulla partizione:
$ lsblk --json | jq -c '.blockdevices[]|[.name,.size]'
["loop0","55.5M"]
["loop1","156M"]
["loop2","32.3M"]
["zram0","4G"]
["nvme0n1","476.9G"]
10. Visualizza rapidamente un tipo di file
Il Che cos'è la funzione viene chiamata con wi
. Ti dice rapidamente il tipo di file.
Per controllare un singolo file:
$ function wi { test -n "$1" && stat --printf "%F\n" "$1"; }
Per controllare più file:
$ function wi { test "$#" -gt 0 && stat --printf "%n: %F\n" "$@"; }
NOTA :le funzioni sono superiori e possono svolgere lo stesso lavoro di un alias.
11. Visualizza la dimensione di un RPM installato
Se hai un sistema basato su RPM, prima o poi, formatterai le tue query. Ecco un esempio:
$ rpm --queryformat='%12{SIZE} %{NAME}\n' \
-q java-11-openjdk-headless
[ Allenati e prova i nostri ultimi corsi ed esami di Red Hat Training &Certification:percorso di competenze Red Hat Enterprise Linux. ]
12. Visualizza la dimensione totale di un gruppo di file
In questo caso, il find
Il comando funge da filtro, visualizza la dimensione di ciascun file in byte e, infine, mostra la dimensione totale:
$ t=0; for n in $(find ~/Documents -type f -name '*.py' -print | xargs \
stat --printf "%s "); do ((t+=n)); done; echo $t
Oppure, se vuoi una funzione (migliore), prova questo approccio:
$ function size { t=0; test -d "$1" && for n in $(find $1 \
-type f -name '*.py' -print| \
xargs stat --printf "%s "); do ((t+=n)); done; echo $t; }
size $mydir
13. Aggiorna tutti i repository Git su una directory
Sai già quanto è utile Git. Ecco un trucco per essere più efficienti con i tuoi aggiornamenti:
$ for i in */.git; do cd $(dirname $i); git pull; cd ..; done
14. Esponi una directory web utilizzando i contenitori
I container sono fondamentali oggi. Questo one-liner espone una directory tramite Podman:
$ podman run --rm -v .:/usr/share/nginx/html:ro,Z \
-p 30080:80 -d nginx
15. Controlla il tempo
Usa questa funzione per scoprire se hai bisogno di una giacca oggi:
weather() { curl -s --connect-timeout 3 -m 5 http://wttr.in/$1; }
16. Visualizza i primi 10 indirizzi IP che colpiscono un server web
Ecco un'attività che gli amministratori Web possono utilizzare frequentemente con Nginx (potrebbe funzionare anche con Apache) per acquisire i primi 10 indirizzi di protocollo Internet che colpiscono un server Web dal registro di accesso:
$ cat /var/log/nginx/access.log | cut -f 1 -d ' ' | sort | \
uniq -c | sort -hr | head -n 10
17. Round fluttua in Bash con l'aiuto di Python
Puoi fare cose piuttosto interessanti con Python, ma questo esempio arrotonda semplicemente i numeri:
$ echo "22.67892" | python3 -c "print(f'{round(float(input()))}')"
23
18. Esegui una mini calcolatrice
Questa funzione definisce una calcolatrice rapida sulla riga di comando con precisione variabile (il valore predefinito è 2). Usa bc. Crea la funzione in questo modo:
$ function qqbc() { echo "scale=${2:-2}; $1" | bc -l
Quindi, esegui un rapido calcolo:
$ qqbc "2/3"
.66
Nel caso abbiate bisogno di ulteriore precisione, basta definire un secondo parametro:
$ qqbc "2/3" 4
.6666
Questo strumento si chiama qqbc
perché è un miglioramento della vecchia funzione qbc
.
19. Converti un CSV in JSON
Questo trucco è una modifica di questa popolare ricetta per convertire i file CSV nel formato JSON:
$ python3 -c \
"import csv,json,sys;print(json.dumps(list(csv.reader(open(sys.argv[1])))))" \
covid19-vaccinations-town-age-grp.csv
20. Installa ed esegui comandi con Docker
Se hai installato Docker e desideri eseguire un comando senza installare una serie di dipendenze sul tuo sistema (durante l'esecuzione rapida), questo potrebbe essere tutto ciò di cui hai bisogno:
$ docker run --rm --interactive curlimages/curl curl \
--verbose --location --fail --silent --output - \
https://example.com
Il comando esegue l'ultima versione di curl
da un contenitore e successivamente lo rimuove. Nota che il comando termina con un trattino (-
), che dice a curl
per l'output sul tuo terminale. Le possibilità sono infinite qui.
Concludi
La capacità di creare potenti combinazioni di comandi semplici è uno dei motivi per cui Unix e Linux sono così popolari.
Fortunatamente. non è difficile imparare queste battute. Concentrati sul ricordare cosa fa un semplice comando e poi pensa a come puoi combinare molti semplici comandi per creare una ricetta potente.
Controlla sempre il man
pagina o utilizzare le info
comando per capire cos'altro può fare lo strumento. Potresti essere sorpreso di apprendere che uno strumento può fare tutto senza combinarlo con un'altra utilità.
Ci sono molti siti su Internet con molti esempi di una riga. Ci auguriamo che questi esempi ti portino a scrivere battute migliori.