Hur ångrar man ”set -x”?

Jag skrev set -x i terminalen.

Nu fortsätter terminalen att skriva ut det sista kommandot kör ovanpå min utdata så att kommandot

~]$echo "this is what I see" 

returnerar

+ echo "this is what I see" this is what I see 

Det finns ingen mansida för set, hur stänger jag av set -x?

Kommentarer

  • set är ett skal builtin -kommando (åtminstone i bash är det), så dokumentationen finns i bash ' s mansida. Sök på mansidan för /^ *SHELL BUILTIN COMMANDS för att läsa allt om set och dess vänner!
  • men det finns en man sida för set! Det är en del av POSIX-programmerarguiden … Du ska verkligen få den serien … snälla?
  • I Bash skriver du help set.
  • @ lonewarrior556 om du hittar något av svaret till hjälp, kan du kommentera och / eller markera en lösning. Vi bidrar med vår tid att hjälpa ….

Svar

Använd set +x. Mer information:

$ type set set is a special shell builtin 

Eftersom set är ett inbyggt skal dokumenteras det i dokumentationen för ditt skal.

Var uppmärksam på att vissa system har man-sidor för inbyggda skal, men dessa man-sidor är bara korrekta om du använder standardskalet. På Linux kan du ha man-sidor som innehåller POSIX-kommandon, som kommer att dyka upp för inbyggda skal eftersom det inte finns någon mansida för ett fristående verktyg för att skugga dem; dessa man-sidor är korrekta för alla skal i Bourne-stil (streck, bash, * ksh och till och med zsh) men vanligtvis ofullständiga.

Se Läsa och söka på långa sidor för tips om hur du söker efter en inbyggd i en lång skal-mansida.

I det här fallet är svaret detsamma för alla skal i Bourne-stil. Om set -LETTER aktiverar ett alternativ, stänger det av set +LETTER. Således stänger set +x av spår. Det sista spåret som läser set +x är oundvikligt (förutom genom att låta skalet gå ut – ibland kan du använda en subshell (set -x; command to trace; other command to trace); command that is not traced).

Kommentarer

  • Detta är ett bra svar, men det skulle ha sparat mig några minuter om du lägger till det grundläggande " set + x " i början snarare än inbäddat i sista stycket. (Jag tyckte att tilläggsdetaljerna var till hjälp.)
  • { set +x ;} 2> /dev/null döljer set +x spåret (vann ' fungerar dock inte i Bourne-skalet). Vissa skal skickar fortfarande ut ett + 2> /dev/null.

Svar

Du kan stoppa felsökningsläget genom att set +x. Se exempel sida

Svar

Du har aktiverat felsökning måste du stänga av den.

Extrahera formulär help set:

Att använda + istället för – gör att dessa flaggor stängs av.

Så skriv set +x

Svar

$ set +x # is the opposite of set -x, and will reverse what you typed. 

Du kan inte hitta en mansida bara på set, för som du ser nedan:

$ type set 

set är ett speciellt inbyggt skal Även om det är dokumenterat på mansidan för ditt skal, förutsatt att du bash här, kan du också få specifik dokumentation med antingen

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

Den manuella sidan på bash eller sh är en bra läsning, men det är lite långt att reda ut. Den effektiva informationen du behövde för att avmarkera -x är i slutet före Exit Status: och läser:

Att använda + i stället för – gör att dessa flaggor stängs av. Flaggorna kan också användas vid anrop av skalet. Den aktuella uppsättningen flaggor finns i $ -. De återstående n ARG: erna är positionsparametrar och tilldelas i ordning $ 1, $ 2, .. $ n. Om inga ARG anges skrivs alla skalvariabler ut.

Kommentarer

  • Även om det inte är fel , vad har du lagt till utöver de befintliga svaren?
  • @JeffSchaller Det ' är redigerat för direkt och kortfattat. När jag behövde det här svaret var jag tvungen att läsa hela sidan för att få reda på rätt svar. Faktum är att jag slutade läsa det accepterade svaret och bara gick till help set och läste det. Jag försökte förbättra det accepterade svaret. unix.stackexchange.com/revisions/149137/4 Det godkändes men avvisades sedan.Som en nyhetsartikel börjar den med den viktigaste informationen och antar att läsaren när som helst kan sluta, med varje nästa mening och stycke som är mindre viktiga än förfarandet. Det ' är min SO-stil på unix se.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *