[в закладки] Bash per principianti: 21 comando utile

Il materiale che pubblichiamo oggi è destinato a coloro che desiderano padroneggiare la riga di comando di Linux. Essere in grado di utilizzare questo strumento in modo efficace consente di risparmiare molto tempo. In particolare, parleremo della shell Bash e di 21 comandi utili. Inoltre, discuteremo di come utilizzare le opzioni dei comandi e gli alias di Bash, che facilitano l'inserimento di istruzioni lunghe.

[в закладки] Bash per principianti: 21 comando utile

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

Terminologia

Durante l'apprendimento della riga di comando di Linux, potresti incontrare numerosi concetti in cui è utile orientarsi. Alcuni di essi, come "Linux" e "Unix", o "shell" e "terminale", sono talvolta confusi. Parleremo di questi e di altri termini importanti.

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

Linux è il sistema operativo Unix-like più popolare. Oggi viene 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 consente di inviare comandi al sistema operativo scritti in un linguaggio particolare.

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

Interfaccia a riga di comando (Command Line Interface, CLI) è un modo di interazione tra l'uomo e il computer, in cui l'utente inserisce comandi da tastiera, e il computer, eseguendo questi comandi, restituisce messaggi all'utente in forma testuale. Principalmente, il CLI è utilizzato per ottenere informazioni aggiornate su certe entità, come i file, e per lavorare con i file. L'interfaccia a riga di comando deve essere distinta dall'interfaccia utente grafica (Graphical User Interface, GUI), che utilizza principalmente 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 per la shell. Gli script vengono salvati in file e possono essere riutilizzati più volte. Quando si scrivono script, è possibile utilizzare variabili, strutture condizionali, cicli, funzioni e altre funzionalità.

Ora che abbiamo esaminato i termini importanti, vorrei sottolineare che utilizzerò i termini «Bash», «shell» e «riga di comando» come intercambiabili, così come i concetti di «directory» e «cartella».

Standard flussi, che utilizzeremo qui, sono standard input (standard input, stdin), standard output (standard output, stdout) e standard error (standard error, stderr).

Se negli esempi di comandi forniti qui di seguito incontrate qualcosa come my_whatever — significa che questo frammento deve essere sostituito con qualcosa di vostro. Ad esempio — il nome di un file.

Ora, prima di passare all'analisi dei comandi a cui è dedicato questo materiale, diamo un'occhiata alla loro lista e alle loro brevi descrizioni.

21 comandi Bash

▍Recupero informazioni

  • man: visualizza il manuale utente (documentazione) 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.

▍Operazioni sul file system

  • cd: modifica la directory di lavoro.
  • touch: crea un file.
  • mkdir: crea una directory.
  • cp: copia un file.
  • mv: sposta o elimina un file.
  • ln: crea un link.

▍Reindirizzamento dell'input-output e pipeline

  • <: reindirizzamento stdin.
  • >: reindirizzamento stdout.
  • |: reindirizzamento tramite una pipeline dall'output di un comando all'input di un altro comando.

▍Lettura dei file

  • head: legge l'inizio di un file.
  • tail: legge la fine di un file.
  • cat: legge un file e mostra il suo contenuto a schermo oppure concatena i file.

▍Eliminazione dei file, arresto dei processi

  • rm: elimina un file.
  • kill: arresta un processo.

▍Ricerca

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

▍Archiviazione

  • tar: crea archivi e ne gestisce il contenuto.

Parliamo di queste comandi in modo più dettagliato.

Dettagli sui comandi

Iniziamo analizzando i comandi i cui risultati vengono forniti sotto forma di stdout. Di solito, questi risultati compaiono nella finestra del terminale.

▍Recupero informazioni

man command_name: visualizza la guida al comando, ovvero le informazioni di riferimento.

pwd: visualizzazione del percorso della directory di lavoro attuale. Durante l'uso del terminale, gli utenti devono spesso scoprire dove si trovano nel sistema.

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

ls -a: visualizzazione dei file nascosti. Qui è stato utilizzato il flag -a del comando. lsL'uso dei flag aiuta a configurare il comportamento dei comandi.

ls -l: visualizzazione di informazioni dettagliate sui file.

Si noti che i flag possono essere combinati. Ad esempio: ls -al.

ps: visualizzazione dei processi in esecuzione.

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

▍Operazioni sul file system

cd my_directory: cambio della directory di lavoro su my_directory. Per passare a un livello superiore nella gerarchia delle directory, utilizzare un my_directory percorso relativo. ../.

[в закладки] Bash per principianti: 21 comando utile
Il comando cd

touch my_file: creazione del file my_file nel percorso specificato.

mkdir my_directory: creazione della cartella my_directory nel percorso specificato.

mv my_file target_directory: spostamento del file my_file nella cartella target_directory. Quando si specifica la directory di destinazione, è necessario utilizzare il percorso assoluto per essa (e non una struttura 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 il_mio_file_sorgente directory_destinazione
: 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 a un file my_source_file. Se si modifica il collegamento, anche il file originale cambierà.

Se il file my_source_file viene eliminato, allora my_target_file rimarrà. L'opzione -s del comando. ln consente di creare collegamenti anche per le directory.

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

▍Reindirizzamento dell'input-output e pipeline

my_command < my_file: sostituisce il descrittore di file dell'input standard (stdin) con il file my_file. Questo può essere utile se il comando si aspetta input da tastiera, ma questi dati sono già salvati in un file.

my_command > my_file: reindirizza i risultati del comando, cioè ciò che normalmente va in stdout e viene visualizzato sullo schermo, nel file my_file. Se il file my_file non esiste, verrà creato. Se il file esiste, verrà 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 del simbolo > si utilizza la costruzione >>, quindi, a condizione che esista un file in cui viene reindirizzato l'output del comando, questo file non sarà sovrascritto. I dati saranno aggiunti alla fine di questo file.

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

[в закладки] Bash per principianti: 21 comando utile
Ciò che un comando produce è fornito come input a un altro comando. È simile a collegare un tubo a un altro.

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

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

Con il simbolo della pipeline, è possibile concatenare più comandi. Si presenta così:

first_command | second_command | third_command

[в закладки] Bash per principianti: 21 comando utile
Una pipeline di più comandi può essere paragonata a un tubo

Si noti che quando un comando a sinistra del simbolo |, produce qualcosa in stdout, ciò che ha prodotto diventa immediatamente disponibile come stdin alla seconda squadra. Questo significa che, utilizzando una pipeline, stiamo gestendo l'esecuzione parallela dei 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 di come visualizzarli sullo schermo.

▍Lettura dei file

head my_file: legge le righe dall'inizio del file e le visualizza sullo schermo. Puoi 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.

[в закладки] Bash per principianti: 21 comando utile
Head (testa) è davanti, mentre tail (coda) è dietro

Se stai lavorando con i dati utilizzando la libreria pandas, allora i comandi head e tail dovrebbero esserti familiari. Se non lo sono, dai un'occhiata all'immagine sopra e sarà facile ricordarli.

Esaminiamo altri metodi per leggere i file e parliamo del comando cat.

Team cat che può visualizzare il contenuto del file sullo schermo oppure concatenare più file. Dipende da quanti file vengono passati a questo comando al momento dell'invocazione.

[в закладки] Bash per principianti: 21 comando utile
Il comando cat

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

Se si passano due o più file, si comporta in modo diverso.

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

Se è necessario salvare il risultato della concatenazione dei file come un nuovo file, si può usare l'operatore >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Ora parliamo di come eliminare file e fermare processi.

▍Eliminazione dei file, arresto dei 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 al suo interno. Il flag -r indica che il comando verrà eseguito in modalità ricorsiva.

Per fare in modo che il sistema non richieda conferma per ogni operazione di eliminazione di file o cartelle, utilizzare il flag -f.

kill 012345: arresta il processo in esecuzione specificato, concedendogli tempo per terminare correttamente.

kill -9 012345: termina forzatamente il processo eseguito specificato. Il flag -s SIGKILL significa la stessa cosa del flag -9.

▍Ricerca

Per cercare dati, si possono usare diversi comandi. In particolare — grep, ag e ack. Iniziamo il nostro incontro con questi comandi con grep. È un team affidabile e collaudato nel tempo, anche se, in effetti, è più lento e meno intuitivo rispetto ad altri.

[в закладки] Bash per principianti: 21 comando utile
Comando grep

grep my_regex my_file: esegue la ricerca my_regex in my_file. Quando trova delle corrispondenze, restituisce l'intera riga per ciascuna di esse. Per impostazione predefinita my_regex è interpretato come un'espressione regolare.

grep -i my_regex my_file: la ricerca viene effettuata senza tenere conto del maiuscolo e minuscolo.

grep -v my_regex my_file: restituisce tutte le righe che non contengono my_regex. Il flag -v significa inversione, è simile all'operatore NOT, presente in molti linguaggi di programmazione.

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

grep -R my_regex my_folder: esegue una ricerca ricorsiva in tutti i file all'interno della cartella specificata e nelle cartelle annidate.

Ora parliamo del comando ag. È apparso successivamente, grepè più veloce e lavorarci è più comodo.

[в закладки] Bash per principianti: 21 comando utile
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 effettuata senza tenere conto del maiuscolo e minuscolo.

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

ag my_regex my_file -- skip-vcs-ignores: contenuto dei file dei sistemi di controllo versione automatico (simile a .gitignore) durante la ricerca non viene considerato.

Inoltre, per indicare al comando ag quali percorsi dei file devono essere esclusi dalla ricerca, puoi creare un file .agignore.

All'inizio di questa sezione abbiamo accennato al comando ack. I comandi ack e ag sono molto simili, si può dire che sono intercambiabili al 99%. Tuttavia, il comando ag è più veloce, quindi 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 per trasmettere grandi set di file a qualcuno.

[в закладки] Bash per principianti: 21 comando utile
Il comando tar

I file tarball creati da questo comando rappresentano file con estensione .tar (Tape ARchive). Il fatto che nel nome del comando e nell'estensione dei file creati da esso 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 chiamato my_file.tar con il contenuto della cartella my_source_directory. Il flag -c sta per «create» (creare), e l'opzione -f sta per «file» (file).

Per estrarre i file presenti in .tar-file, si utilizza il comando tar con le opzioni -x («extract», estrazione) e -f («file», file).

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

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

tar -cfz my_file.tar.gz my_source_directory: qui, utilizzando il flag -z («zip», algoritmo di compressione) è specificato che per comprimere i file deve essere utilizzato l'algoritmo gzip (GNU zip). La compressione dei file consente di risparmiare spazio su disco durante la memorizzazione di tali file. Se i file devono essere trasferiti ad altri utenti, ciò facilita il download più veloce di questi file.

Decomprimere il file .tar.gz può essere fatto aggiungendo il flag -z al comando di estrazione dei contenuti .tar-file, che abbiamo esaminato sopra. Ecco come si presenta:

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

Alias Bash

Gli alias Bash (noti anche come abbreviazioni) sono utilizzati per creare nomi abbreviati di comandi o sequenze di comandi, l'uso dei quali al posto dei comandi normali accelera il lavoro. Se, per esempio, hai un alias bu, che si nasconde dietro il comando python setup.py sdist bdist_wheel, per richiamare questo comando è sufficiente usare questo alias.

Per creare un alias simile, basta aggiungere il seguente comando al file ˜/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Se il tuo sistema non ha il file ˜/.bash_profile, puoi crearlo da solo usando il comando touch. Dopo aver creato l'alias, riavvia il terminale e potrai usare questo alias. In questo caso, l'inserimento di due caratteri sostituisce l'inserimento di oltre trenta caratteri di un comando, che è destinato a compilare pacchetti Python.

In ˜/.bash_profile Puoi aggiungere alias per qualsiasi comando utilizzato frequentemente.

▍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 dedicato a Bash. Qui Puoi trovare la versione pdf di queste pubblicazioni. Inoltre, se vuoi padroneggiare Bash, ricorda che, come per l'apprendimento di qualsiasi altro sistema software, la pratica è fondamentale.

Gentili lettori! Quali comandi utili per i principianti aggiungeresti a quelli esaminati in questo articolo?

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

[в закладки] Bash per principianti: 21 comando utile

Fonte: habr.com

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