[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili

Il materiale, la cui traduzione pubblichiamo oggi, è destinato a coloro che vogliono padroneggiare la riga di comando di Linux. La possibilità di utilizzare questo strumento in modo efficace può far risparmiare molto tempo. In particolare, parleremo qui della shell Bash e di 21 comandi utili. Parleremo anche di come utilizzare i flag di comando e gli alias Bash per velocizzare la digitazione di istruzioni lunghe.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili

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

condizioni

Man mano che impari a lavorare con la riga di comando di Linux, incontrerai molti concetti utili da esplorare. Alcuni di essi, come "Linux" e "Unix", o "shell" e "terminale", vengono talvolta confusi. Parliamo di questi e altri termini importanti.

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

Linux è il sistema operativo simile a Unix più popolare. Ora è utilizzato su molti dispositivi, compresi i computer.

Terminale (terminale) o emulatore di terminale è un programma che dà accesso al sistema operativo. Puoi avere più finestre di terminale aperte contemporaneamente.

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

Bash sta per Bourne Again Shell. È il linguaggio di shell più comune utilizzato per interagire con il sistema operativo. Inoltre, la shell Bash è quella predefinita su macOS.

Interfaccia a riga di comando (Command Line Interface, CLI) è un metodo di interazione tra una persona e un computer, utilizzando il quale l'utente inserisce comandi dalla tastiera e il computer, eseguendo questi comandi, visualizza messaggi in forma di testo per l'utente. L'utilizzo principale della CLI è ottenere informazioni aggiornate su determinate entità, come i file, e lavorare con i file. L'interfaccia della riga di comando dovrebbe essere distinta dall'interfaccia utente grafica (GUI), che utilizza principalmente il mouse. L'interfaccia della riga di comando viene spesso definita semplicemente riga di comando.

Copione (script) è un piccolo programma che contiene una sequenza di comandi di shell. Gli script vengono scritti su file e possono essere utilizzati ripetutamente. Quando scrivi script, puoi utilizzare variabili, condizionali, cicli, funzioni e altre funzionalità.

Ora che abbiamo trattato i termini importanti, voglio sottolineare che qui utilizzerò i termini "Bash", "shell" e "riga di comando" in modo intercambiabile, così come i termini "directory" e "cartella".

standard flussi, che utilizzeremo qui è lo standard input (standard input, stdin), uscita standard (uscita standard, stdout) e output dell'errore standard (errore standard, stderr).

Se nei comandi di esempio che verranno forniti di seguito, troverai qualcosa di simile my_whatever - questo significa che questo frammento deve essere sostituito con qualcosa di tuo. Ad esempio, il nome di un file.

Ora, prima di procedere con l'analisi dei comandi a cui è dedicato questo materiale, diamo un'occhiata al loro elenco e alla loro breve descrizione.

21 comandi di Bash

▍Ottenere informazioni

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

▍Manipolazione del file system

  • cd: cambia 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 collegamento.

▍Reindirizzamento e pipeline I/O

  • <: reindirizzare stdin.
  • >: reindirizzare stdout.
  • |: reindirizza l'output di un comando all'input di un altro comando.

▍Lettura di file

  • head: leggi l'inizio del file.
  • tail: leggi la fine del file.
  • cat: legge un file e ne stampa il contenuto sullo schermo o concatena i file.

▍Eliminazione di file, arresto di processi

  • rm: Elimina un file.
  • kill: interrompere il processo.

▍Cerca

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

▍Archiviazione

  • tar: creare archivi e lavorare con essi.

Parliamo di questi comandi in modo più dettagliato.

Dettagli della squadra

Per cominciare, affrontiamo i comandi, i cui risultati vengono emessi nel modulo stdout. Di solito questi risultati vengono visualizzati in una finestra di terminale.

▍Ottenere informazioni

man command_name: visualizza la guida ai comandi, ovvero le informazioni di aiuto.

pwd: visualizza il percorso della directory di lavoro corrente. Mentre lavora con la riga di comando, l'utente spesso ha bisogno di scoprire esattamente dove si trova nel sistema.

ls: visualizza il contenuto di una directory. Anche questo comando viene utilizzato abbastanza spesso.

ls -a: mostra file nascosti. bandiera applicata qui -a comandi ls. L'uso dei flag aiuta a personalizzare il comportamento dei comandi.

ls -l: Visualizza informazioni dettagliate sui file.

Tieni presente che i flag possono essere combinati. Ad esempio, in questo modo: ls -al.

ps: Visualizza i processi in esecuzione.

ps -e: Visualizza informazioni su tutti i processi in esecuzione, non solo quelli associati alla shell dell'utente corrente. Questo comando viene spesso utilizzato in questa forma.

▍Manipolazione del file system

cd my_directory: cambia la directory di lavoro in my_directory. Per salire di un livello nell'albero delle directory, utilizzare my_directory percorso relativo ../.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
comando cd

touch my_file: creazione del file my_file lungo il percorso dato.

mkdir my_directory: crea una cartella my_directory lungo il percorso dato.

mv my_file target_directory: sposta il file my_file nella cartella target_directory. Quando si specifica la directory di destinazione, è necessario utilizzare il percorso assoluto (e non una costruzione come ../).

squadra mvpuò essere utilizzato anche per rinominare file o cartelle. Ad esempio, potrebbe assomigliare a questo:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: crea una copia di un file my_source_file e metterlo in una cartella target_directory.

ln -s my_source_file my_target_file: crea un collegamento simbolico my_target_file per file my_source_file. Se modifichi il collegamento, cambierà anche il file originale.

Se il file my_source_file verranno cancellati, quindi my_target_file resterà. Bandiera -s comandi ln consente di creare collegamenti per le directory.

Parliamo ora del reindirizzamento I/O e delle pipeline.

▍Reindirizzamento e pipeline I/O

my_command < my_file: sostituisce il descrittore del file di input standard (stdin) per file my_file. Ciò può essere utile se il comando attende qualche input dalla tastiera e questi dati sono già salvati in un file.

my_command > my_file: reindirizza i risultati del comando, ovvero ciò che normalmente andrebbe a finire stdout e output sullo schermo, in un file my_file. Se il file my_file non esiste: viene 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 un elenco di ciò che è presente nella directory di lavoro corrente.

Se invece del simbolo > utilizzare la costruzione >>, quindi, a condizione che esista il file a cui viene reindirizzato l'output del comando, questo file non verrà sovrascritto. I dati verranno aggiunti alla fine di questo file.

Ora diamo un'occhiata all'elaborazione della pipeline di dati.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
L'output di un comando viene inserito nell'input di un altro comando. È come collegare un tubo all'altro

first_command | second_command: simbolo del trasportatore, |, viene utilizzato per inviare l'output di un comando a un altro comando. A cosa invia il comando sul lato sinistro della struttura descritta stdout, Cadere in stdin comando a destra del simbolo della pipeline.

Su Linux, i dati possono essere pipeline utilizzando praticamente qualsiasi comando ben formato. Si dice spesso che in Linux tutto sia una pipeline.

Puoi concatenare più comandi utilizzando il simbolo della pipeline. Sembra questo:

first_command | second_command | third_command

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
Una pipeline composta da più comandi può essere paragonata a una pipeline

Si noti che quando il comando a sinistra del simbolo |, restituisce qualcosa a stdout, ciò che emette è immediatamente disponibile come stdin seconda squadra. Cioè, si scopre che, utilizzando la pipeline, abbiamo a che fare con l'esecuzione parallela dei comandi. A volte questo può portare a risultati inaspettati. I dettagli su questo possono essere letti 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 di un file e le stampa sullo schermo. Puoi leggere non solo il contenuto dei file, ma anche l'output dei comandi stdinutilizzando questo comando come parte della pipeline.

tail my_file: legge le righe dalla fine del file. Questo comando può essere utilizzato anche in una pipeline.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
La testa (testa) è davanti e la coda (coda) è dietro

Se stai lavorando con i dati utilizzando la libreria Pandas, i comandi head и tail dovrebbe esserti familiare. Se così non fosse, dai un'occhiata alla figura sopra e te li ricorderai facilmente.

Considera altri modi per leggere i file, parliamo del comando cat.

Squadra cat stampa il contenuto di un file sullo schermo o concatena più file. Dipende da quanti file vengono passati a questo comando quando viene chiamato.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
comando gatto

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

Se gli dai due o più file, si comporterà diversamente.

cat my_file1.txt my_file2.txt: dopo aver ricevuto diversi file in input, questo comando concatena il loro contenuto e visualizza cosa è successo in stdout.

Se il risultato della concatenazione di file deve essere salvato 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 interrompere i processi.

▍Eliminazione di file, arresto di processi

rm my_file: cancella il file my_file.

rm -r my_folder: elimina una cartella my_folder e tutti i file e le cartelle in esso contenuti. Bandiera -r indica che il comando verrà eseguito in modalità ricorsiva.

Per evitare che il sistema chieda conferma ogni volta che un file o una cartella viene eliminata, utilizzare il flag -f.

kill 012345: Interrompe il processo in esecuzione specificato, dandogli il tempo di spegnersi normalmente.

kill -9 012345: termina forzatamente il processo in esecuzione specificato. Visualizza bandiera -s SIGKILL significa lo stesso della bandiera -9.

▍Cerca

È possibile utilizzare diversi comandi per cercare i dati. In particolare - grep, ag и ack. Iniziamo la nostra conoscenza di questi comandi con grep. Questo è un comando affidabile e collaudato nel tempo, che, tuttavia, è più lento di altri e non è così comodo da usare come loro.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
comando grep

grep my_regex my_file: ricerche my_regex в my_file. Se viene trovata una corrispondenza, viene restituita l'intera stringa, per ogni corrispondenza. Predefinito my_regex trattata come un'espressione regolare.

grep -i my_regex my_file: la ricerca viene eseguita senza distinzione tra maiuscole e minuscole.

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

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

grep -R my_regex my_folder: esegue una ricerca ricorsiva in tutti i file che si trovano nella cartella specificata e nelle cartelle in essa nidificate.

Ora parliamo della squadra ag. È venuta più tardi grep, è più veloce, è più conveniente lavorarci.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
comando ag

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

ag -i my_regex my_file: la ricerca viene eseguita senza distinzione tra maiuscole e minuscole.

Squadra ag elaborare automaticamente il file .gitignore ed esclude dall'output ciò che si trova nelle cartelle o nei file elencati in quel file. È molto comodo

ag my_regex my_file -- skip-vcs-ignores: contenuto dei file di controllo automatico della versione (come .gitignore) non viene preso in considerazione nella ricerca.

Inoltre, per dirlo alla squadra ag su quali percorsi di file vuoi escludere dalla ricerca, puoi creare un file .agignore.

All'inizio di questa sezione, abbiamo menzionato il comando ack. Squadre ack и ag molto simili, possiamo dire che sono intercambiabili al 99%. Tuttavia, la squadra ag funziona più velocemente, ecco perché l'ho descritto.

Ora parliamo di lavorare con gli archivi.

▍Archiviazione

tar my_source_directory: concatena i file da una cartella my_source_directory in un unico file tarball. Tali file sono utili per trasferire grandi quantità di file a qualcuno.

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili
comando tar

I file tarball generati da questo comando sono file con estensione .tar (Archivio nastri). Il fatto che la parola "tape" (nastro) sia nascosta nel nome del comando e nell'estensione dei nomi dei file che crea indica da quanto tempo esiste questo comando.

tar -cf my_file.tar my_source_directory: crea un file tarball denominato my_file.tar con il contenuto della cartella my_source_directory. Bandiera -c sta per "creare" (creazione) e la bandiera -f come "file" (file).

Da cui estrarre i file .tar-file, usa il comando tar con le bandiere -x ("estrarre", estrazione) e -f ("file", file).

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

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

tar -cfz my_file.tar.gz my_source_directory: qui usando la bandiera -z ("zip", algoritmo di compressione) indica che l'algoritmo deve essere utilizzato per comprimere i file gzip (GNUzip). La compressione dei file consente di risparmiare spazio su disco durante l'archiviazione di tali file. Se si prevede, ad esempio, di trasferire i file ad altri utenti, ciò contribuirà a un download più rapido di tali file.

Decomprimere il file .tar.gz puoi aggiungere una bandiera -z al comando Estrai contenuto .tar-files, di cui abbiamo discusso sopra. Sembra questo:

tar -xfz my_file.tar.gz
Va notato che la squadra tar Ci sono molti altri flag utili.

Alias ​​Bash

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

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

alias bu="python setup.py sdist bdist_wheel"

Se il tuo sistema non dispone del file ~/.bash_profile, quindi puoi crearlo tu stesso utilizzando il comando touch. Dopo aver creato l'alias, riavvia il terminale, dopodiché potrai utilizzare questo alias. In questo caso, l'input di due caratteri sostituisce l'input di più di tre dozzine di caratteri del comando a cui è destinato сборки Pacchetti Python.

В ~/.bash_profile puoi aggiungere alias per qualsiasi comando utilizzato di frequente.

▍Risultati

In questo post abbiamo trattato 21 comandi Bash popolari e abbiamo parlato della creazione di alias di comando. Se sei interessato a questo argomento - qui una serie di pubblicazioni dedicate a Bash. Qui È possibile trovare una versione pdf di queste pubblicazioni. Inoltre, se vuoi imparare Bash, ricorda che, come con qualsiasi altro sistema di programmazione, la pratica è fondamentale.

Cari lettori! Quali comandi utili per i principianti aggiungeresti a quelli discussi in questo articolo?

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

[aggiunto ai segnalibri] Bash per principianti: 21 comandi utili

Fonte: habr.com

Aggiungi un commento