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.
→
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.
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 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
<
: reindirizzarestdin
.>
: reindirizzarestdout
.|
: 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 ../
.
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 mv
può 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
: crea una copia di un file
cp my_source_file target_directorymy_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.
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
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
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 stdin
utilizzando 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.
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.
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.
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.
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.
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
В ~/.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 -
Cari lettori! Quali comandi utili per i principianti aggiungeresti a quelli discussi in questo articolo?
→
Fonte: habr.com