¿Cómo deshacer `set -x`?

77

Escribí set -xen la terminal.

Ahora el terminal sigue imprimiendo el último comando que se ejecuta en la parte superior de mi salida, por lo que el comando

~]$echo "this is what I see"

devoluciones

+ echo 'this is what I see'
this is what I see

No hay una página de manual para set, ¿cómo set -xapago?

lonewarrior556
fuente
8
setes un builtincomando de shell (al menos en bash lo es), por lo que la documentación se encuentra en la página de manual de bash. ¡Busca en la página del manual para /^ *SHELL BUILTIN COMMANDSleer todo sobre él sety sus amigos!
dg99
44
pero hay una manpágina para set! Es parte de la guía de programadores POSIX ... Realmente deberías obtener esa serie ... ¿por favor?
mikeserv
8
En Bash, escribe help set.
200_success
@ lonewarrior556 si encuentra útil alguna de las respuestas, ¿puede comentar y / o marcar una solución? Contribuimos con nuestro tiempo para ayudar ...
Simply_Me

Respuestas:

77

Utilizar set +x. Más información:

$ type set
set is a special shell builtin

Como setes un shell integrado, está documentado en la documentación de su shell.

Tenga en cuenta que algunos sistemas tienen páginas de manual para los componentes integrados de shell, pero estas páginas de manual solo son correctas si está utilizando el shell predeterminado. En Linux, es posible que tenga páginas de manual que presenten comandos POSIX, que aparecerán para los componentes integrados de shell porque no hay una página de manual de una utilidad independiente para sombrearlos; Estas páginas de manual son correctas para todos los shells de estilo Bourne (guión, bash, * ksh e incluso zsh), pero generalmente están incompletas.

Consulte Lectura y búsqueda de páginas de manual largas para obtener consejos sobre cómo buscar una página de manual de shell larga.

En este caso, la respuesta es la misma para todos los shells de estilo Bourne. Si activa una opción, la desactiva. Por lo tanto, apaga las huellas. La última traza que se lee es inevitable (excepto dejando que salga el shell, a veces puede usar un subshell ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced

Gilles
fuente
44
Esta es una buena respuesta, pero me hubiera ahorrado un par de minutos si pones el "set + x" básico al principio en lugar de incrustarlo en el último párrafo. (Encontré útil el detalle adicional.)
DA
2
{ set +x ;} 2> /dev/nulloculta la set +xtraza (aunque no funcionará en el shell Bourne). Sin embargo, algunos proyectiles aún emiten un + 2> /dev/null.
Stéphane Chazelas
51

Puede detener el modo de depuración set +x. Ver página de ejemplo

Simplemente yo
fuente
18

Ha habilitado el modo de depuración, debe desactivarlo.

Forma de extracto help set:

El uso de + en lugar de - hace que estas banderas se apaguen.

Entonces escribe set +x

ctrl-alt-delor
fuente
1
$ set +x # is the opposite of set -x, and will reverse what you typed.

No puede encontrar una página de manual solo setporque, como puede ver a continuación:

$ type set

setEs una concha especial incorporada. Si bien está documentado en la página de manual de su shell, suponiendo que bash aquí, también puede obtener documentación específica con

$ help set || builtin help set # luckily Bash has builtin help on builtin commands

La página del manual sobre bash o sh es una buena lectura, pero es un poco larga de resolver. La información efectiva que necesitabas para desarmarla -xestá al final antes Exit Status:y lee:

El uso de + en lugar de - hace que estas banderas se apaguen. Las banderas también se pueden usar al invocar el shell. El conjunto actual de banderas se puede encontrar en $ -. Los n ARG restantes son parámetros posicionales y se asignan, en orden, a $ 1, $ 2, .. $ n. Si no se proporcionan ARG, se imprimen todas las variables de shell.

dlamblin
fuente
Si bien no está mal, ¿qué ha agregado más allá de las respuestas existentes?
Jeff Schaller
@JeffSchaller Está editado por franqueza y brevedad. Cuando necesitaba esta respuesta, tenía que leer toda la página para encontrar la respuesta correcta. De hecho, dejé de leer la respuesta aceptada y solo fui help sety leí eso. Traté de mejorar la respuesta aceptada. unix.stackexchange.com/revisions/149137/4 Fue aceptado pero luego rechazado. Al igual que un artículo de noticias, comienza con la información más importante y supone que en cualquier momento el lector puede detenerse, con cada siguiente oración y párrafo siendo menos importante que el procedimiento. Es mi estilo SO en unix se.
dlamblin