GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Linux set e come usarlo {9 esempi}

Introduzione

Il set command è un comando shell Linux integrato che visualizza e imposta i nomi e i valori delle variabili di ambiente shell e Linux. Su sistemi operativi simili a Unix, il set funzioni di comando all'interno della shell Bourne (sh ), shell C (csh ) e Korn shell (ksh ).

In questo tutorial imparerai cosa il set comando è e come usarlo.

Prerequisiti

  • Un sistema che esegue Linux.
  • Accesso a un terminale/riga di comando.

Linux imposta la sintassi dei comandi

La sintassi generale per il set il comando è:

set [options] [arguments]

Opzioni

Nel contesto del set comando, [options] sono impostazioni o flag impostati o non impostati nell'ambiente della shell Bash. Usalo per influenzare il comportamento di script di shell definiti e aiutare a eseguire le attività desiderate.

  • Imposta un'opzione utilizzando un segno meno (- ) seguito dall'opzione appropriata.
  • Disattiva un'opzione utilizzando un segno più (+ ) seguito dall'opzione appropriata.

Argomenti

[arguments] sono parametri posizionali e sono assegnati in ordine con i seguenti parametri:

  • $1
  • $2
  • ...
  • $n

Non specificando alcuna opzione o argomento, il comando stampa tutte le variabili della shell.

Valori di uscita

Il set comando ha tre valori di uscita:

  • 0 . Segna un completamento riuscito.
  • 1 . Errore causato da un argomento non valido.
  • 2 . Errore risultante in un messaggio di utilizzo, di solito perché manca un argomento.

Linux imposta le opzioni dei comandi

Il set comando fornisce un ampio elenco di opzioni che possono essere combinate.

La maggior parte delle opzioni ha un corrispondente -o flag che può essere utilizzato per invocare l'opzione. La tabella seguente elenca tutte le opzioni e la rispettiva forma alternativa utilizzando il -o flag sintassi.

Opzioni -o flag Descrizione
-a -o allexport Segna tutte le variabili o le funzioni create o modificate per l'esportazione.
-b -o notify Avvisa l'utente al termine del lavoro in background.
-e -o errexit Comanda a una shell di uscire se un comando fallisce, cioè se restituisce uno stato di uscita diverso da zero.
-f -o noglob Disabilita la generazione del nome file (globbing).
-h -o hashall Individua e salva i comandi di funzione quando viene definita una funzione. Il -h l'opzione è abilitata per impostazione predefinita.
-k -o keyword Posiziona tutti gli argomenti di assegnazione nell'ambiente per un comando, non solo quelli che precedono il nome del comando.
-n -o noexec Legge i comandi ma non li esegue.
-m -o monitor Visualizza un messaggio al termine di un'attività.
-p -o privileged Disabilita il $ENV elaborazione di file e importazione di funzioni di shell. Il -p l'opzione è abilitata per impostazione predefinita quando gli ID utente reali ed effettivi non corrispondono. Disattivandolo si imposta uid e gid effettivi su uid e gid reali.
-t -o onecmd Legge un comando e poi esce.
-u -o nounset Tratta le variabili non impostate o non definite come un errore durante la sostituzione (durante l'espansione dei parametri). Non si applica a parametri speciali come il carattere jolly * o @ .
-v -o verbose Stampa le righe di input della shell durante la lettura.
-x -o xtrace Stampa gli argomenti dei comandi durante l'esecuzione.
-B -o braceexpand Esegue l'espansione della parentesi della shell.
-C -o noclobber Previene la sovrascrittura di file regolari esistenti mediante il reindirizzamento dell'output. Per impostazione predefinita, Bash consente all'output reindirizzato di sovrascrivere i file esistenti.
-E -o errtrace Fa in modo che le funzioni della shell ereditino il trap ERR.
-H -o histexpand Abilita la sostituzione della cronologia degli stili. L'opzione è attiva per impostazione predefinita quando la shell è interattiva.
-P -o physical Previene il collegamento simbolico durante l'esecuzione dei comandi.
-T -o functrace Fa in modo che le funzioni della shell ereditino il trap DEBUG.
-- n/d Assegna gli argomenti rimanenti ai parametri posizionali. Se non ci sono argomenti rimanenti, annulla l'impostazione dei parametri posizionali.
- n/d Assegna eventuali argomenti rimanenti ai parametri posizionali. Disattiva il -x e -v opzioni.
n/a -o emacs Utilizza un'interfaccia di modifica delle linee in stile emacs.
n/a -o history Abilita la cronologia dei comandi.
n/a -o ignoreeof La shell non si chiude dopo aver letto la fine del file.
n/a -o interactive-comments Consente commenti nei comandi interattivi.
n/a -o nolog Non registra le definizioni delle funzioni nel file della cronologia.
n/a -o pipefail Il valore restituito di una pipeline è lo stato dell'ultimo comando che aveva uno stato diverso da zero all'uscita. Se nessun comando aveva uno stato diverso da zero all'uscita, il valore è zero.
n/a -o posix Fa in modo che Bash corrisponda allo standard quando l'operazione predefinita è diversa dallo standard Posix.
n/a -o vi Utilizza un'interfaccia di modifica della riga simile a vi .

Esempi di comandi per impostare Linux

Questa sezione elenca esempi degli usi più comuni del set comando.

Utilizzo del comando impostato senza opzioni

L'esecuzione del comando senza opzioni o argomenti genera un elenco di tutte le impostazioni:i nomi e i valori di tutte le variabili e le funzioni della shell. Poiché l'elenco è molto lungo, puoi scorrerlo utilizzando la Pagina su e Pagina giù chiavi.

Di seguito è riportato un esempio di un set parziale output del comando:

Debug degli script

Il set comando è particolarmente utile quando si tenta di eseguire il debug degli script. Usa il -x opzione con il set comando per vedere quale comando nel tuo script viene eseguito dopo il risultato, permettendoti di determinare il risultato di ogni comando.

L'esempio seguente mostra come eseguire il debug degli script con set -x . Segui i passaggi seguenti:

1. Esegui set -x :

set -x

2. Usa il tuo editor di testo preferito (noi usiamo l'editor vi) per creare uno script. Abbiamo creato un semplice loop che ci permette di vedere il -x effetti delle opzioni:

x=10
while [ $x -gt 0 ]; do
         x=$[ $x-1 ]
         echo $x
         sleep 2
done

3. Assicurati di chmod lo script per renderlo eseguibile. Questo passaggio è sempre obbligatorio prima di eseguire uno script . La sintassi è:

chmod +x [script-name.sh]

4. Eseguire lo script. La sintassi è:

./[script-name.sh]

L'output stampa una riga alla volta, la esegue, mostra il risultato se ce n'è uno e passa alla riga successiva.

Un altro modo per abilitare il debug è posizionare il -x flag sulla riga shebang dello script:

#!/bin/bash -x

Esportazione script

Esporta automaticamente qualsiasi variabile o funzione creata utilizzando il -a opzione. L'esportazione di variabili o funzioni consente ad altri subshell e script di utilizzarle.

Abilita l'esportazione degli script eseguendo il comando seguente:

set -a

L'esempio seguente mostra come funziona l'esportazione degli script. Segui i passaggi seguenti:

1. Crea un nuovo script usando il tuo editor preferito. Ad esempio:

one=1
two=2
three=3
four=4
/bin/bash

Il /bin/bash argomento segna l'inizio di una nuova shell.

2. Verifica se lo script funziona in una nuova shell:

echo $one $two $three $four

L'output dimostra che la funzione che abbiamo creato è stata esportata e funziona anche all'avvio di una nuova shell.

Esci quando un comando fallisce

Usa il -e opzione per indicare a uno script di uscire se incontra un errore durante l'esecuzione. L'arresto di uno script parzialmente funzionante aiuta a prevenire problemi o risultati errati.

Crea uno script con i seguenti contenuti per testare questa opzione:

#!/bin/bash
set -e
cat nonexistingfile
echo "The end"

Nell'esempio precedente, lo script rileva un errore durante il tentativo di mostrare il contenuto di nonexistingfile perché quel file non esiste, causandone l'uscita a quel punto. Quindi, l' echo finale il comando non viene eseguito.

Prevenire la perdita di dati

L'impostazione predefinita di Bash consiste nel sovrascrivere i file esistenti. Tuttavia, utilizzando il -C l'opzione configura Bash per non sovrascrivere un file esistente durante il reindirizzamento dell'output utilizzando > , >& o <> viene reindirizzato a quel file.

Ad esempio:

Bash prima ci consente di sovrascrivere il listing.txt file. Tuttavia, dopo aver eseguito il set -C comando, Bash emette un messaggio in cui si afferma che non può sovrascrivere un file esistente.

Segnala variabili inesistenti

L'impostazione predefinita in Bash è ignorare le variabili inesistenti e lavorare con quelle esistenti. Utilizzando il -u l'opzione impedisce a Bash di ignorare le variabili che non esistono e segnala il problema.

Ad esempio, il seguente script non contiene il set -u command e Bash lo ignora $var2 non è definito.

#!/bin/bash
var1="123"
echo $var1 $var2

L'output contiene solo $var1 .

Tuttavia, modificando lo script e aggiungendo il set -u comando impedisce a Bash di ignorare il problema e lo segnala:

#!/bin/bash
set -u
var1="123"
echo $var1 $var2

Imposta parametri posizionali

Il set comando può anche assegnare valori ai parametri posizionali. Un parametro posizionale è una variabile di shell il cui valore è referenziato usando la seguente sintassi:

$[N]

Il [N] value è una cifra che denota la posizione del parametro. Ad esempio, $1 è il primo parametro posizionale, $2 è il secondo parametro, ecc.

Ad esempio:

set first second third

L'esecuzione del comando sopra imposta first per corrispondere al $1 parametro posizionale, second a $2 e third a $3 . Verificalo con il comando echo:

echo $2

Annulla l'impostazione dei parametri posizionali eseguendo:

set --

Dividi le corde

Usa il set comando per dividere le stringhe in base agli spazi in variabili separate. Ad esempio, suddividi le stringhe in una variabile chiamata myvar , che dice "Questo è un test" .

myvar="This is a test"

set -- $myvar
echo $1
echo $2
echo $3
echo $4

Usa questa opzione per estrarre e filtrare le informazioni dall'output di un comando, in modo simile a quello che fa il comando awk.

Imposta allexport e notifica i flag

Il -o allexport flag consente di esportare automaticamente tutte le variabili definite successivamente, mentre il -o notify flag indica alla shell di stampare immediatamente i messaggi di completamento del lavoro.

Per impostare i flag, esegui:

set -o allexport -o notify

Nell'esempio seguente, vediamo che la shell ti avvisa al completamento del lavoro in background da quando lo script è stato esportato:


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come usare il comando Su in Linux

  4. Come usare il comando ldconfig in Linux

  5. Come usare il comando ipset in Linux

Come utilizzare il comando sysctl in Linux

Come utilizzare il comando di arresto di Linux

Come usare grep in Linux

Come utilizzare il comando Mkdir su Linux

Come usare il comando jobs in Linux

Come usare il comando schermo in Linux