Ho digitato set -x
nel terminale.
Ora il terminale continua a stampare lultimo comando viene eseguito sopra il mio output in modo che il comando
~]$echo "this is what I see"
restituisca
+ echo "this is what I see" this is what I see
Cè nessuna pagina man per set
, come faccio a disattivare set -x
?
Commenti
Risposta
Usa set +x
. Ulteriori informazioni:
$ type set set is a special shell builtin
Poiché set
è un builtin della shell, è documentato nella documentazione della vostra shell.
Fai attenzione che alcuni sistemi hanno pagine man per i builtin della shell, ma queste pagine man sono corrette solo se stai usando la shell predefinita. Su Linux, potresti avere pagine man che presentano comandi POSIX, che apparirà per i built-in della shell perché non cè una pagina man di unutilità standalone che li ombreggi; queste pagine di manuale sono corrette per tutte le shell in stile Bourne (trattino, bash, * ksh e persino zsh) ma tipicamente incomplete.
Vedi Lettura e ricerca di pagine man lunghe per suggerimenti sulla ricerca di un builtin in una pagina man di shell lunga.
In questo caso, la risposta è la stessa per tutte le shell in stile Bourne. Se set -LETTER
attiva unopzione, set +LETTER
la disattiva. Pertanto, set +x
disattiva le tracce. Lultima traccia che legge set +x
è inevitabile (tranne lasciando che la shell esca – a volte puoi usare una sottoshell (set -x; command to trace; other command to trace); command that is not traced
).
Commenti
- Questa è una buona risposta, ma mi avrebbe fatto risparmiare un paio di minuti se mettessi il " imposta + x " allinizio piuttosto che incorporato nellultimo paragrafo. (Ho trovato utile il dettaglio aggiuntivo.)
-
{ set +x ;} 2> /dev/null
nasconde laset +x
trace (won ' non funziona però nella Bourne shell). Tuttavia, alcune shell producono ancora un+ 2> /dev/null
.
Risposta
Puoi interrompere la modalità di debug set +x
. Vedi esempio pagina
Risposta
Hai abilitato il debug modalità, è necessario disattivarla.
Estrai il modulo help set
:
Lutilizzo di + anziché – provoca la disattivazione di questi flag.
Quindi digita set +x
Risposta
$ set +x # is the opposite of set -x, and will reverse what you typed.
Non puoi “trovare una pagina man solo su set
, perché come vedi sotto:
$ type set
set
è una speciale shell incorporata Sebbene sia documentato nella pagina man della tua shell, presumendo bash qui, puoi anche ottenere documentazione specifica con
$ help set || builtin help set # luckily Bash has builtin help on builtin commands
La pagina di manuale su bash o sh è una buona lettura, ma è “un po lungo da risolvere. Le informazioni effettive necessarie per annullare limpostazione di -x
si trovano alla fine prima di Exit Status:
e si legge:
Luso di + invece di – fa sì che questi flag vengano disattivati. I flag possono essere utilizzati anche su invocazione della shell. Il set corrente di flag può essere trovato in $ -. I restanti n ARG sono parametri posizionali e sono assegnati, in ordine, a $ 1, $ 2, .. $ n. Se non vengono forniti ARG, vengono stampate tutte le variabili di shell.
Commenti
- Anche se non è sbagliato , cosa hai aggiunto oltre alle risposte esistenti?
- @JeffSchaller È ' modificato per immediatezza e brevità. Quando ho avuto bisogno di questa risposta ho dovuto leggere lintera pagina per trovare la risposta corretta. In effetti ho smesso di leggere la risposta accettata e sono andato a
help set
e lho letta. Ho provato a migliorare la risposta accettata. unix.stackexchange.com/revisions/149137/4 È stato accettato ma poi rifiutato.Come un articolo di notizie, inizia con le informazioni più importanti e presume che in qualsiasi momento il lettore possa fermarsi, con ogni frase e paragrafo successivo meno importante del procedimento. ' è il mio stile SO su unix se.
set
è un comandobuiltin
della shell (almeno in bash lo è), quindi la documentazione viene trovata nella pagina man di bash '. Cerca/^ *SHELL BUILTIN COMMANDS
nella pagina man per leggere tutto suset
e i suoi amici!man
pagina perset
! Fa parte della guida per programmatori POSIX … Dovresti davvero ottenere quella serie … per favore?help set
.