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.
→
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.
è un sistema operativo popolare, sviluppato da Bell Labs negli anni '70. Il suo codice era chiuso.
è il sistema operativo Unix-like più popolare. Oggi è utilizzato su molti dispositivi, compresi i computer.
(terminal), o emulatore di terminale, è un programma che fornisce accesso al sistema operativo. È possibile aprire più finestre del terminale contemporaneamente.
(shell) è un programma che permette di inviare comandi al sistema operativo scritti in un linguaggio speciale.
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.
(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) — è 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 , 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
<: reindirizzamentostdin.>: reindirizzamentostdout.|: 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](/wp-content/uploads/2019/03/91815e5212c9dfec88a76bc2ab37955f.png)
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: creazione di una copia del file
cp my_source_file target_directorymy_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](/wp-content/uploads/2019/03/dcc4e500b247cb13adb4d64c36c24f88.png)
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](/wp-content/uploads/2019/03/1d94b3f04846ef40c072299877c55b1f.png)
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 .
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](/wp-content/uploads/2019/03/0dd6e0353a1b5995d4a1228ae2550ad9.png)
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](/wp-content/uploads/2019/03/708bea2f5d31e1623e9fd80ff5b576af.png)
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.txtOra 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](/wp-content/uploads/2019/03/bc02403dbbd0109f0dfd595eccf239c7.png)
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](/wp-content/uploads/2019/03/f0eeb1d38a1e9c22a8463858753dedb5.png)
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](/wp-content/uploads/2019/03/4531ef1d4084af608fcbe91964a6710b.png)
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 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 — un ciclo di pubblicazioni dedicate a Bash. 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?
→
Fonte: habr.com
