Jak cofnąć `set -x`?

77

Wpisałem set -xterminal.

Teraz terminal drukuje ostatnie polecenie na moim wyjściu, więc polecenie

~]$echo "this is what I see"

zwroty

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

Nie ma strony podręcznika dla set, jak mogę set -xwyłączyć?

lonewarrior556
źródło
8
setjest builtinpoleceniem powłoki (przynajmniej w bash), więc dokumentacja znajduje się na stronie man bash. Przeszukaj stronę podręcznika, /^ *SHELL BUILTIN COMMANDSaby przeczytać o nim seti jego przyjaciołach!
dg99,
4
ale tam jestman aktualizacja set! Jest to część przewodnika dla programistów POSIX ... Naprawdę powinieneś dostać tę serię ... proszę?
mikeserv
8
W Bash wpisz help set.
200_success
@ lonewarrior556, jeśli uznasz jakąkolwiek odpowiedź za pomocną, czy możesz skomentować i / lub zaznaczyć rozwiązanie. Wspieramy nasz czas, aby pomóc ....
Simply_Me

Odpowiedzi:

77

Użyj set +x. Więcej informacji:

$ type set
set is a special shell builtin

Ponieważ setjest to wbudowana powłoka, jest ona udokumentowana w dokumentacji powłoki.

Uwaga: niektóre systemy mają strony podręcznika dla wbudowanych powłok, ale te strony podręcznika są poprawne tylko wtedy, gdy używasz domyślnej powłoki. W Linuksie możesz mieć strony podręcznika, które prezentują polecenia POSIX, które pojawią się dla wbudowanych powłok, ponieważ nie ma strony podręcznika samodzielnego narzędzia do ich cieniowania; te strony podręcznika są poprawne dla wszystkich powłok w stylu Bourne'a (myślnik, bash, * ksh, a nawet zsh), ale zazwyczaj są niekompletne.

Zobacz Czytanie i przeszukiwanie długich stron podręcznika, aby uzyskać wskazówki dotyczące wyszukiwania wbudowanego w długiej stronie podręcznika powłoki.

W tym przypadku odpowiedź jest taka sama dla wszystkich pocisków w stylu Bourne'a. Jeśli włącza opcję, wyłącza ją. W ten sposób wyłącza ślady. Ostatni ślad, który czyta, jest nieunikniony (z wyjątkiem umożliwienia wyjścia powłoki - czasami można użyć podpowłoki ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced

Gilles
źródło
4
To dobra odpowiedź, ale zaoszczędziłoby mi to kilka minut, gdybyś umieścił podstawowy „set + x” na początku, zamiast osadzić go w ostatnim akapicie. (Dodatkowy szczegół okazał się pomocny).
DA
2
{ set +x ;} 2> /dev/nullukrywa set +xślad (choć nie działa w powłoce Bourne'a). Niektóre pociski wciąż generują dane wyjściowe + 2> /dev/null.
Stéphane Chazelas
51

Możesz zatrzymać tryb debugowania przez set +x. Zobacz przykładową stronę

Po prostu ja
źródło
18

Włączyłeś tryb debugowania, musisz go wyłączyć.

Wyodrębnij formularz help set:

Użycie + zamiast - powoduje wyłączenie tych flag.

Więc wpisz set +x

ctrl-alt-delor
źródło
1
$ set +x # is the opposite of set -x, and will reverse what you typed.

Nie możesz znaleźć strony podręcznika tylko na set, ponieważ, jak widzisz poniżej:

$ type set

setjest specjalną wbudowaną powłoką. Chociaż jest to udokumentowane na stronie podręcznika dla twojej powłoki, zakładając, że tutaj jest bash, możesz także uzyskać konkretną dokumentację za pomocą jednego z nich

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

Strona podręcznika na temat bash lub sh to dobra lektura, ale uporządkowanie jest trochę długie. Skuteczne informacje potrzebne do cofnięcia konfiguracji -xznajdują się na końcu Exit Status:i brzmią:

Użycie + zamiast - powoduje wyłączenie tych flag. Flagi mogą być również używane po wywołaniu powłoki. Aktualny zestaw flag można znaleźć w $ -. Pozostałe n ARG są parametrami pozycyjnymi i są przypisane, kolejno, do 1 $, 2 $, .. $ n. Jeśli nie podano żadnych ARG, drukowane są wszystkie zmienne powłoki.

dlamblin
źródło
Nie pomyląc się, co dodałeś poza istniejącymi odpowiedziami?
Jeff Schaller
@JeffSchaller Jest edytowany pod kątem bezpośredniości i zwięzłości. Kiedy potrzebowałem tej odpowiedzi, musiałem przeczytać całą stronę, aby znaleźć poprawną odpowiedź. W rzeczywistości zrezygnowałem z przeczytania zaakceptowanej odpowiedzi i po prostu poszedłem help seti ją przeczytałem. Próbowałem poprawić przyjętą odpowiedź. unix.stackexchange.com/revisions/149137/4 Został zaakceptowany, ale następnie odrzucony. Podobnie jak artykuł informacyjny, zaczyna się od najważniejszych informacji i zakłada, że ​​w dowolnym momencie czytelnik może przestać, a każde następne zdanie i akapit są mniej ważne niż postępowanie. To mój styl SO na Uniksie.
dlamblin