GNU/Linux >> Linux Esercitazione >  >> Linux

Utili comandi Bash di cui potresti non essere a conoscenza

Bash è un linguaggio abbastanza potente per programmare ed è anche abbastanza facile iniziare.

Dopotutto, è quasi universalmente la shell che vedrai quando apri il tuo terminale. Ciò lo rende estremamente utile per abituarsi.

Ci sono alcuni potenti comandi in Bash di cui potresti non essere a conoscenza, anche se sei abbastanza esperto nell'uso della lingua. Tuttavia, tutti questi comandi possono servire a scopi piuttosto utili e possono rendere gli script di shell che scrivi più puliti, più gestibili e semplicemente più potenti di quanto non avrebbero potuto essere prima.

Leggi:richiesta di input dall'utente

Il comando read consente di prendere l'input da un utente e memorizzarlo all'interno di una variabile.

#!/usr/bin/env bash
echo "What is your name?"
read name
echo "Your name is ${name}!"

Questo attenderà l'input da te, l'utente, quindi imposterà il valore per il name variabile alla stringa immessa.

Ad esempio, se hai specificato il tuo nome come Linux Handbook durante l'esecuzione dello script precedente, verrebbe visualizzato Your name is Linux Handbook! .

Puoi anche rendere l'esempio sopra più compatto specificando il -p opzione per read comando, che stamperà la stringa specificata dopo -p , quindi chiedi all'utente di inserire:

#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"

Noterai anche che ho aggiunto uno spazio dopo What is your name? . Se non lo aggiungessimo, stamperebbe letteralmente What is your name? senza spazio, il che lo farebbe sembrare un po' più strano quando l'utente sta inserendo il proprio input:

Mapfile:Assegnare a una variabile i valori delle righe di un file

Puoi usare il mapfile comando per leggere il contenuto di un file, quindi assegnare quell'output a un array Bash, con ogni elemento dell'array creato ogni volta che si incontra una nuova riga nel file.

Ad esempio, creiamo un file chiamato file.txt che contiene il seguente testo:

Line 1
Line 2
Line 3
Line 4
Line 5

Puoi convertire questo file in un array Bash eseguendo quanto segue, che assegna il contenuto del file a file_var variabile:

#!/usr/bin/env bash
mapfile file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Noterai che quanto sopra produce anche un output stranamente distanziato che non si allinea con ciò che è all'interno del file, che può essere risolto aggiungendo il -t opzione al mapfile comando:

#!/usr/bin/env bash
mapfile -t file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Infine, potresti notare che quanto segue non funziona:

#!/usr/bin/env bash
cat file.txt | mapfile -t file_var

Questo perché il mapfile il comando sul lato destro della pipe viene eseguito in una subshell (o in altre parole, una nuova istanza di Bash), che non è in grado di influenzare la shell corrente.

Fonte:inserisci le variabili da un file nell'ambiente della tua shell

Supponiamo di avere il seguente file immaginario, config.sh , con il seguente contenuto:

username=linuxhandbook
domain=linuxhandbook.com

E se volessi prendere il contenuto di quel file e inserirlo nell'ambiente della tua shell attuale?

Questo può essere fatto semplicemente usando il comando sorgente:

source config.sh

Puoi quindi verificare che le variabili siano state assegnate come previsto:

Sotto il cofano, il source comando esegue effettivamente il file specificato nell'ambiente della shell corrente, quindi digitando qualsiasi comando in quel file verrebbe effettivamente eseguito durante l'esecuzione di source .

Ad esempio, mettiamo quanto segue in config.sh :

name="Linux Handbook"
echo "Hello ${name}!"
echo "Have a good day!"

Se poi eseguiamo soure config.sh , vedrai che i due echo i comandi vengono eseguiti, così come il name variabile da assegnare:

Puoi anche usare . al posto di source , che agisce esattamente allo stesso modo di source lo farebbe.

Conclusione

E proprio così sei ulteriormente sulla buona strada per svolgere attività più potenti e utili, pur restando all'interno di Bash.

Ci sono altri comandi che usi frequentemente in Bash? Sentiti libero di lasciare qualcuno di loro nei commenti qui sotto.


Linux
  1. 30 cose che non sapevi del kernel Linux

  2. Quello che probabilmente non sapevi su sudo

  3. 4 Modo utile per conoscere il nome del dispositivo USB collegato in Linux

  4. Cosa devono sapere gli amministratori di sistema sull'utilizzo di Bash

  5. Perché la sostituzione del processo Bash non funziona con alcuni comandi?

Dichiarazioni di Bash If-Else:tutto ciò che devi sapere

3 comandi Linux di cui ti sei dimenticato

Tutto ciò che devi sapere sul file system Linux

Tutto ciò che devi sapere sul comando Chmod di Linux

Tutto ciò che devi sapere sul sistema operativo Linux Zorin

Tutto ciò che devi sapere sul sistema operativo Peppermint Linux