[inserisci nei segnalibri] Bash per principianti: 21 comandi utili

Il materiale che pubblichiamo oggi è destinato a coloro che vogliono padroneggiare il terminale Linux. Saper utilizzare efficacemente questo strumento consente di risparmiare un sacco di tempo. In particolare, parleremo della shell Bash e di 21 comandi utili. Inoltre, discuteremo di come utilizzare le opzioni dei comandi e degli alias di Bash, che possono accelerare l'inserimento di lunghe istruzioni.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili

Leggi anche nel nostro blog una serie di pubblicazioni sui bash script

Termini

Durante l'apprendimento del lavoro nel terminale Linux, potresti imbatterti in molte terminologie, per cui è utile orientarsi. Alcuni di questi termini, come 'Linux' e 'Unix', o 'shell' e 'terminal', possono essere confusi. Parliamo di questi e di altri termini importanti.

Unix è un sistema operativo popolare, sviluppato da Bell Labs negli anni '70. Il suo codice era chiuso.

Linux è il sistema operativo Unix-like più popolare. Oggi è utilizzato su molti dispositivi, compresi i computer.

Terminale (terminal), o emulatore di terminale, è un programma che fornisce accesso al sistema operativo. È possibile aprire più finestre del terminale contemporaneamente.

Shell (shell) è un programma che permette di inviare comandi al sistema operativo scritti in un linguaggio speciale.

Bash sta per Bourne Again SHell. È il linguaggio di shell più comune utilizzato per interagire con il sistema operativo. Inoltre, la shell Bash è utilizzata di default in macOS.

Interfaccia a riga di comando (Command Line Interface, CLI) è un modo di interazione tra uomo e computer, in cui l'utente inserisce comandi da tastiera e il computer, eseguendo tali comandi, fornisce messaggi all'utente in forma testuale. Principalmente, la CLI è usata per ottenere informazioni aggiornate su alcune entità, ad esempio sui file, e per lavorare con i file. L'interfaccia a riga di comando va distinta dall'interfaccia utente grafica (Graphical User Interface, GUI), in cui si utilizza prevalentemente il mouse. L'interfaccia a riga di comando è spesso semplicemente chiamata riga di comando.

Script (script) — è un piccolo programma che contiene una sequenza di comandi della shell. Gli script vengono registrati in file e possono essere utilizzati più volte. Quando si scrivono script, è possibile utilizzare variabili, strutture condizionali, cicli, funzioni e altre possibilità.

Ora che abbiamo esaminato i termini importanti, voglio notare che qui utilizzerò i termini «Bash», «shell» e «linea di comando» come intercambiabili, così come i concetti di «directory» e «cartella».

Standard stream, che utilizzeremo qui, sono l'input standard (standard input, stdin), l'output standard (standard output, stdout) e l'output degli errori standard (standard error, stderr).

Se negli esempi di comandi che saranno forniti di seguito, incontri qualcosa come my_whatever significa che questo frammento deve essere sostituito con qualcosa di tuo. Ad esempio, con il nome di un file.

Ora, prima di iniziare a esaminare i comandi a cui è dedicato questo materiale, diamo un'occhiata alla loro lista e alle loro brevi descrizioni.

21 comandi Bash

▍Ottenere informazioni

  • man: visualizza il manuale dell'utente (aiuto) per il comando.
  • pwd: visualizza informazioni sulla directory di lavoro.
  • ls: visualizza il contenuto della directory.
  • ps: consente di visualizzare informazioni sui processi in esecuzione.

▍Manipolazioni con il file system

  • cd: cambia la directory di lavoro.
  • touch: crea un file.
  • mkdir: crea una directory.
  • cp: copia un file.
  • mv: sposta o rinomina un file.
  • ln: crea un collegamento.

▍Reindirizzamento input-output e pipe

  • <: reindirizzamento stdin.
  • >: reindirizzamento stdout.
  • |: reindirizzamento dell'output di un comando all'input di un altro comando.

▍Lettura di file

  • head: legge l'inizio di un file.
  • tail: legge la fine di un file.
  • cat: legge un file e visualizza il suo contenuto sullo schermo o concatena file.

▍Cancellazione di file, arresto di processi

  • rm: cancella un file.
  • kill: ferma un processo.

▍Ricerca

  • grep: ricerca informazioni.
  • ag: comando avanzato per la ricerca.

▍Archiviazione

  • tar: crea archivi e lavora con essi.

Parliamo di questi comandi più in dettaglio.

Dettagli sui comandi

Per iniziare, chiariamo i comandi i cui risultati vengono restituiti sotto forma di stdout. Di solito, questi risultati appaiono nella finestra del terminale.

▍Ottenere informazioni

man command_name: visualizza il manuale per il comando, cioè - informazioni di riferimento.

pwd: visualizzazione del percorso della directory di lavoro corrente. Durante l'utilizzo della riga di comando, l'utente ha spesso bisogno di sapere dove si trova esattamente nel sistema.

ls: visualizzazione del contenuto della directory. Anche questo comando viene utilizzato molto frequentemente.

ls -a: visualizzazione dei file nascosti. Qui è stato usato il flag -a comandi ls. L'uso dei flag aiuta a configurare il comportamento dei comandi.

ls -l: visualizzazione di informazioni dettagliate sui file.

Nota che i flag possono essere combinati. Ad esempio, può apparire così: ls -al.

ps: visualizzazione dei processi in esecuzione.

ps -e: visualizzazione delle informazioni su tutti i processi in esecuzione, e non solo su quelli legati alla shell utente corrente. Questo comando viene spesso utilizzato proprio in questo modo.

▍Manipolazioni con il file system

cd my_directory: modifica della directory di lavoro a my_directory. Per passare a un livello superiore nell'albero delle directory, usa come my_directory percorso relativo ../.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Il comando cd

touch my_file: creazione di un file my_file nel percorso specificato.

mkdir my_directory: creazione di una cartella my_directory nel percorso specificato.

mv my_file target_directory: spostamento del file my_file nella cartella target_directory. Quando specifichi la directory di destinazione, devi utilizzare il percorso assoluto ad essa (e non una costruzione come ../).

Il comando mv, inoltre, può essere utilizzato per rinominare file o cartelle. Ad esempio, può apparire così:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: creazione di una copia del file my_source_file e posizionarla nella cartella target_directory.

ln -s my_source_file my_target_file: creazione di un link simbolico my_target_file al file my_source_file. Se cambi il link, cambierà anche il file originale.

Se il file my_source_file viene eliminato, il my_target_file rimarrà. Il flag -s comandi ln permette di creare link anche per le directory.

Ora parliamo di reindirizzamento dell'input-output e pipe.

▍Reindirizzamento input-output e pipe

my_command < my_file: sostituisce il descrittore del file di input standard (stdin) con il file my_file. Questo può risultare utile quando il comando si aspetta di ricevere input dai dati che sono stati precedentemente salvati in un file.

my_command > my_file: reindirizza i risultati dell'operazione del comando, cioè ciò che di solito va in stdout e viene visualizzato sullo schermo, in un file my_file. Se il file my_file non esiste, viene creato. Se il file esiste, viene sovrascritto.

Ad esempio, dopo aver eseguito il comando ls > my_folder_contents.txt verrà creato un file di testo contenente l'elenco di ciò che si trova nella directory di lavoro corrente.

Se invece di un simbolo > si utilizza la costruzione >>, quindi, a condizione che esista un file nel quale viene reindirizzato l'output del comando, quel file non sarà sovrascritto. I dati verranno aggiunti alla fine di questo file.

Diamo un'occhiata all'elaborazione dei dati in pipeline.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Ciò che produce un comando viene passato come input a un altro comando. È simile al collegamento di un tubo a un altro.

first_command | second_command: il simbolo della pipeline, |, viene utilizzato per inviare i risultati di un comando a un altro comando. Ciò che il comando a sinistra della costruzione descritta invia a stdout, finisce in stdin il comando che si trova a destra del simbolo della pipeline.

In Linux, l'elaborazione dei dati in pipeline può essere organizzata utilizzando praticamente qualunque comando ben formato. Si dice spesso che tutto in Linux è una pipeline.

Attraverso il simbolo della pipeline è possibile concatenare diversi comandi. Ecco come appare:

first_command | second_command | third_command

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Una pipeline di più comandi può essere paragonata a un tubo

Fai attenzione che quando il comando a sinistra del simbolo |, produce qualcosa in stdout, ciò che ha prodotto diventa immediatamente disponibile come stdin secondo comando. Dunque, si scopre che, utilizzando la pipeline, ci stiamo occupando di esecuzioni parallele di comandi. A volte questo può portare a risultati inaspettati. Puoi leggere di più su questo qui.

Ora parliamo della lettura dei dati dai file e della loro visualizzazione sullo schermo.

▍Lettura di file

head my_file: legge le righe dall'inizio del file e le visualizza sullo schermo. È possibile leggere non solo il contenuto dei file, ma anche ciò che i comandi producono in stdin, utilizzando questo comando come elemento della pipeline.

tail my_file: legge le righe dalla fine del file. Anche questo comando può essere utilizzato nella pipeline.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Head (testa) si trova davanti, mentre tail (coda) è dietro

Se stai lavorando con dati utilizzando la libreria pandas, allora i comandi head e tail dovrebbero esserti familiari. Se non è così, dai un'occhiata all'immagine sopra, e li ricorderai facilmente.

Esaminiamo altri modi per leggere file e parliamo del comando cat.

Team cat che visualizza il contenuto del file sullo schermo o concatena più file. Questo dipende da quanti file sono stati passati a questo comando al momento della chiamata.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Il comando cat

cat my_one_file.txt: quando a questo comando viene passato un file, lo visualizza in stdout.

Se si passano due file o un numero maggiore di file, si comporta in modo diverso.

cat my_file1.txt my_file2.txt: passando più file in input, questo comando concatena il loro contenuto e mostrerà il risultato in stdout.

Se è necessario salvare il risultato della concatenazione dei file come un nuovo file, è possibile utilizzare l'operatore >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Ora parliamo di come eliminare file e fermare processi.

▍Cancellazione di file, arresto di processi

rm my_file: elimina il file my_file.

rm -r my_folder: elimina la cartella my_folder e tutti i file e le cartelle che contiene. L'opzione -r indica che il comando deve funzionare in modalità ricorsiva.

Per evitare che il sistema richieda conferma ad ogni operazione di eliminazione di file o cartelle, utilizzare l'opzione -f.

kill 012345: ferma il processo in esecuzione specificato, dandogli il tempo di terminare correttamente.

kill -9 012345: termina forzatamente il processo avviato specificato. L'opzione di tipo -s SIGKILL significa la stessa cosa dell'opzione -9.

▍Ricerca

Per cercare dati, è possibile utilizzare diversi comandi. In particolare — grep, ag e ack. Iniziamo la nostra introduzione a questi comandi con grep. Questo è un comando collaudato nel tempo, affidabile, che però è più lento rispetto agli altri e non è comodo da usare come loro.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Il comando grep

grep my_regex my_file: esegue la ricerca my_regex in my_file. Quando vengono trovate corrispondenze, restituisce, per ciascuna di esse, l'intera riga. Per impostazione predefinita my_regex viene considerato come espressione regolare.

grep -i my_regex my_file: la ricerca viene eseguita senza distinzione di maiuscole.

grep -v my_regex my_file: restituisce tutte le righe che non contengono my_regex. L'opzione -v significa inversione, ricorda l'operatore NOT, presente in molti linguaggi di programmazione.

grep -c my_regex my_file: restituisce informazioni sul numero di corrispondenze con il modello cercato, trovate nel file.

grep -R my_regex my_folder: esegue una ricerca ricorsiva in tutti i file nella cartella specificata e nelle cartelle al suo interno.

Ora parliamo del comando ag. È comparso successivamente grep, è più veloce e più facile da usare.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Il comando ag

ag my_regex my_file: restituisce informazioni sui numeri di riga e le righe stesse in cui sono state trovate corrispondenze con my_regex.

ag -i my_regex my_file: la ricerca viene eseguita senza distinzione di maiuscole.

Team ag elabora automaticamente il file .gitignore ed esclude dall'output ciò che è stato trovato nelle cartelle o nei file elencati in questo file. Questo è molto comodo.

ag my_regex my_file -- skip-vcs-ignores: contenuto dei file dei sistemi di controllo delle versioni automatici (simile a .gitignore) nella ricerca non viene preso in considerazione.

Inoltre, per specificare al comando ag quali percorsi dei file escludere dalla ricerca, è possibile creare un file .agignore.

All'inizio di questa sezione abbiamo menzionato il comando ack. I comandi ack e ag sono molto simili, si può dire che sono intercambiabili al 99%. Tuttavia, il comando ag è più veloce, perciò ho descritto proprio questo.

Ora parliamo del lavoro con gli archivi.

▍Archiviazione

tar my_source_directory: unisce i file dalla cartella my_source_directory in un unico file tarball. Questi file sono comodi da usare per trasferire a qualcuno grandi insiemi di file.

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili
Il comando tar

I file tarball creati da questo comando sono file con estensione .tar (Tape ARchive). Il fatto che nel nome del comando e nell'estensione dei file che esso crea ci sia la parola «tape» (nastro) indica da quanto tempo esiste questo comando.

tar -cf my_file.tar my_source_directory: crea un file tarball con il nome my_file.tar con il contenuto della cartella my_source_directory. L'opzione -c si traduce come «create» (crea), e il flag -f come «file» (file).

Per estrarre i file contenuti nel .tar-file, si utilizza il comando tar c con i flag -x («extract», estrai) e -f («file», file).

tar -xf my_file.tar: estrae i file da my_file.tar nella directory di lavoro corrente.

Ora parliamo di come comprimere e decomprimere .tar-file.

tar -cfz my_file.tar.gz my_source_directory: qui, usando il flag -z («zip», algoritmo di compressione) è stato specificato che per comprimere i file deve essere usato l'algoritmo gzip (GNU zip). La compressione dei file consente di risparmiare spazio su disco durante la conservazione di tali file. Se, ad esempio, i file devono essere trasferiti ad altri utenti, ciò facilita un caricamento più rapido di tali file.

Per decomprimere il file .tar.gz è possibile, aggiungendo il flag -z al comando di estrazione del contenuto .tar-file che abbiamo considerato sopra. Si presenta così:

tar -xfz my_file.tar.gz
È importante notare che il comando tar ha anche molti altri flag utili.

Alias di Bash

Gli alias di Bash (chiamati anche alias o abbreviazioni) sono destinati a creare nomi abbreviati per comandi o sequenze di comandi, il cui utilizzo al posto dei comandi normali accelera il lavoro. Se, per esempio, hai un alias bu, che nasconde il comando python setup.py sdist bdist_wheel, per richiamare questo comando è sufficiente utilizzare questo alias.

Per creare un tale alias, è sufficiente aggiungere il seguente comando al file ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Se nella tua sistema non c'è il file ~/.bash_profile, puoi crearlo da solo utilizzando il comando touch. Dopo aver creato l'alias, riavvia il terminale; dopo di che potrai utilizzarlo. In questo caso, l'inserimento di due caratteri sostituisce l'inserimento di più di trenta caratteri del comando, che è destinato a build pacchetti Python.

In ~/.bash_profile È possibile aggiungere alias per qualsiasi comando frequentemente utilizzato.

▍Conclusioni

In questo articolo abbiamo esaminato 21 comandi Bash popolari e parlato della creazione di alias per i comandi. Se ti interessa questo argomento — ecco un ciclo di pubblicazioni dedicate a Bash. Qui puoi trovare la versione pdf di queste pubblicazioni. Inoltre, se desideri padroneggiare Bash, ricorda che, come per lo studio di qualsiasi altro sistema software, è importante la pratica.

Gentili lettori! Quali comandi, utili per i principianti, aggiungeresti a quelli già trattati in questo articolo?

Leggi anche nel nostro blog una serie di pubblicazioni sui bash script

[inserisci nei segnalibri] Bash per principianti: 21 comandi utili

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster