Bash ha diversi comandi forniti con la shell (cioè costruiti all'interno della shell bash).
Quando esegui un comando integrato, bash shell lo esegue immediatamente, senza invocare nessun altro programma.
I comandi integrati della shell Bash sono più veloci dei comandi esterni, perché i comandi esterni di solito eseguono il fork di un processo per eseguirlo.
In questo articolo esaminiamo alcuni utili builtin della shell bash con esempi.
1. Esempio di comando di esportazione Bash
Il comando export viene utilizzato per esportare una variabile o una funzione nell'ambiente di tutti i processi figlio in esecuzione nella shell corrente.
export varname=value
export -f functionname # exports a function in the current shell.
Esporta una variabile o una funzione con un valore. Il comando "env" elenca tutte le variabili di ambiente. Nell'esempio seguente, puoi vedere che env mostra la variabile esportata.
$ export country=India $ env SESSIONNAME=Console country=India _=/usr/bin/env
Il comando “export -p” mostra anche tutte le variabili esportate nella shell corrente.
2. Esempio di comando Bash eval
Il comando eval combina tutti gli argomenti forniti e valuta l'espressione combinata, la esegue e restituisce lo stato di uscita del comando eseguito.
$ cat evalex.sh if [ ! -z $1 ] then proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1" else proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu" fi eval $proccomm
Il frammento di codice precedente accetta un argomento, che è il modello per un comando grep. Questo elenca i processi nell'ordine di utilizzo della cpu e greps per un modello particolare fornito nella riga di comando.
Nota: Questo articolo fa parte della nostra serie di tutorial Bash in corso.
3. Esempio di comando hash Bash
hash command mantiene una tabella hash, che ha i nomi di percorso del comando utilizzato. Quando esegui un comando, cerca un comando nella variabile $PATH.
Ma se il comando è disponibile nella tabella hash, lo riprende da lì e lo esegue. La tabella hash mantiene il numero di hit incontrati per ogni comando utilizzato finora in quella shell.
$ hash hits command 1 /usr/bin/cat 2 /usr/bin/ps 4 /usr/bin/ls
Puoi eliminare un comando particolare da una tabella hash usando l'opzione -d e l'opzione -r per reimpostare la tabella hash completa.
$ hash -d cat $ hash hits command 2 /usr/bin/ps 4 /usr/bin/ls
4. Esempio di comando Bash pwd
pwd è un comando integrato nella shell per stampare la directory di lavoro corrente. Fondamentalmente restituisce il valore della variabile incorporata ${PWD}
$pwd /home/sasikala/bash/exercises $echo $PWD /home/sasikala/bash/exercises
5. Esempio di comando di sola lettura Bash
Il comando readonly viene utilizzato per contrassegnare una variabile o una funzione come di sola lettura, che non può essere ulteriormente modificata.
$ cat readonly_ex.sh #!/bin/bash # Restricting an array as a readonly readonly -a shells=("ksh" "bash" "sh" "csh" ); echo ${#shells[@]} # Trying to modify an array, it throws an error shells[0]="gnu-bash" echo ${shells[@]} $ ./readonly_ex.sh 4 readonly_ex.sh: line 9: shells: readonly variable
6. Esempio di comando di spostamento Bash
Il comando shift viene utilizzato per spostare i parametri posizionali lasciati da un numero N di volte e rinomina la variabile di conseguenza dopo lo spostamento.
$ cat shift.sh #! /bin/bash while [ $# -gt 0 ] do case "$1" in -l) echo "List command" ls shift ;; -p) echo "Process command" ps -a shift ;; -t) echo "Hash Table command" hash shift ;; -h) echo "Help command" help shift ;; esac done $./shift.sh -l -t List command analysis break testing t1.sh temp Hash Table command hits command 1 /usr/bin/ls
7. Esempio di comando Bash test
Il comando test valuta l'espressione condizionale e restituisce zero o uno in base alla valutazione. Fare riferimento alla pagina di manuale di bash, per ulteriori operatori di test.
#! /bin/bash if test -z $1 then echo "The positional parameter \$1 is empty" fi
8. Esempio di comando Bash getopts
Il comando getopts viene utilizzato per analizzare gli argomenti della riga di comando forniti. Possiamo definire le regole per le opzioni, ad esempio quale opzione accetta argomenti e quale no. Nel comando getopts, se un'opzione è seguita da due punti, si aspetta un argomento per quell'opzione.
getopts fornisce due variabili $OPTIND e $OPTARG che hanno rispettivamente l'indice del parametro successivo e gli argomenti dell'opzione.
$ cat options.sh #! /bin/bash while getopts :h:r:l: OPTION do case $OPTION in h) echo "help of $OPTARG" help "$OPTARG" ;; r) echo "Going to remove a file $OPTARG" rm -f "$OPTARG" ;; esac done $ ./options.sh -h jobs help of jobs jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] Lists the active jobs. The -l option lists process id's in addition to the normal information; the -p option lists process id's only.
9. Comando di disconnessione di Bash
Logout integrato utilizzato per uscire da una shell corrente.
10. Esempio di comando Bash umask
Il comando umask imposta una maschera di creazione della modalità file per un processo corrente. Quando un utente crea un file, la sua autorizzazione predefinita si basa sul valore impostato in umask. L'autorizzazione predefinita per il file è 666 e verrà mascherata con i bit umask quando l'utente crea un file.
Per maggiori dettagli, fare riferimento al nostro articolo Autorizzazioni di file e directory.
Quando l'utente crea un file 666 è mascherato con 022, quindi il permesso predefinito per il file sarebbe 644.
$ umask 0022 $ > temporary $ ls -l temporary -rw-r--r-- 1 root root 4 Jul 26 07:48 temporary
11. Esempi di comandi per set Bash
set è un comando integrato nella shell, che viene utilizzato per impostare e modificare le variabili interne della shell. set comando senza argomento elenca tutte le variabili e i suoi valori. Il comando set viene utilizzato anche per impostare i valori dei parametri posizionali.
$ set +o history # To disable the history storing. +o disables the given options. $ set -o history -o enables the history $ cat set.sh var="Welcome to thegeekstuff" set -- $var echo "\$1=" $1 echo "\$2=" $2 echo "\$3=" $3 $ ./set.sh $1=Welcome $2=to $3=thegeekstuff
12. Esempi di comandi di disattivazione di Bash
unset built-in viene utilizzato per impostare la variabile della shell su null. unset utilizzato anche per eliminare un elemento di un array e
per eliminare un array completo.
Per maggiori dettagli sull'array Bash, fare riferimento al nostro precedente articolo 15 Operazioni sull'array Bash
$ cat unset.sh #!/bin/bash #Assign values and print it var="welcome to thegeekstuff" echo $var #unset the variable unset var echo $var $ ./unset.sh welcome to thegeekstuff
Nell'esempio sopra, dopo aver annullato l'impostazione, la variabile "var" verrà assegnata con una stringa nulla.
13. Esempio di comando Bash let
let viene utilizzato per eseguire operazioni aritmetiche sulle variabili della shell.
$ cat arith.sh #! /bin/bash let arg1=12 let arg2=11 let add=$arg1+$arg2 let sub=$arg1-$arg2 let mul=$arg1*$arg2 let div=$arg1/$arg2 echo $add $sub $mul $div $ ./arith.sh 23 1 132 1
14. Esempio di comando Bash shopt
Il comando integrato shopt viene utilizzato per impostare e deselezionare le opzioni di una shell. Usando questo comando, puoi utilizzare l'intelligenza della shell.
$cat shopt.sh #! /bin/bash ## Before enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" shopt -s xpg_echo ## After enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" # Before disabling aliases alias l.='ls -l .' l. # After disabling aliases shopt -u expand_aliases l. $ ./shopt.sh WELCOME\n GEEKSTUF\n WELCOME GEEKSTUF total 3300 -rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg -r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop shopt.sh: line 17: l.: command not found
Prima di abilitare l'opzione xpg_echo, l'istruzione echo non espandeva le sequenze di escape. "l." è alias a ls -l della directory corrente. Dopo aver disabilitato l'opzione expand_aliases nella shell, non ha espanso gli alias, potresti notare un errore l. comando non trovato.
15. Esempio di comando Bash printf
Simile a printf in linguaggio C, bash printf integrato viene utilizzato per formattare le operazioni di stampa.
Nell'esempio 13, lo script esegue operazioni aritmetiche su due input. In quello script invece dell'istruzione echo, puoi usare l'istruzione printf per stampare l'output formattato come mostrato di seguito.
In arith.sh, sostituisci l'istruzione echo con questa istruzione printf.
printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div $ ./arith.sh Addition=23 Subtraction=1 Multiplication=132 Division=1.000000