Как отменить `set -x`?

77

Я набрал set -xв терминале.

Теперь терминал продолжает печатать последнюю команду, запущенную поверх моего вывода, поэтому команда

~]$echo "this is what I see"

возвращается

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

Там нет справочной страницы для set, как мне set -xвыключить?

lonewarrior556
источник
8
setэто builtinкоманда оболочки (по крайней мере, в bash она есть), поэтому документация находится на странице руководства bash. Ищите справочную страницу, /^ *SHELL BUILTIN COMMANDSчтобы прочитать все о setи ее друзья!
dg99
4
но естьman страница set! Это часть руководства для программистов POSIX ... Вы действительно должны получить эту серию ... пожалуйста?
mikeserv
8
В Bash введите help set.
200_success
@ lonewarrior556, если вы найдете какой-либо ответ полезным, пожалуйста, прокомментируйте и / или отметьте решение. Мы вкладываем наше время, чтобы помочь ....
Simply_Me

Ответы:

77

Используйте set +x. Больше информации:

$ type set
set is a special shell builtin

Поскольку setэто встроенная оболочка, она описана в документации вашей оболочки.

Помните, что в некоторых системах есть справочные страницы для встроенных команд оболочки, но эти справочные страницы верны, только если вы используете оболочку по умолчанию. В Linux у вас могут быть справочные страницы, на которых представлены команды POSIX, которые появятся для встроенных команд оболочки, потому что нет никакой справочной страницы автономной утилиты для их теневого копирования; эти справочные страницы являются правильными для всех оболочек в стиле Борна (dash, bash, * ksh и даже zsh), но, как правило, неполными.

См. Раздел « Чтение и поиск в длинных страницах руководства», где приведены советы по поиску встроенной страницы руководства для длинной оболочки.

В этом случае ответ одинаков для всех оболочек в стиле Борна. Если включает опцию, выключает ее. Таким образом, отключает следы. Последняя читаемая трассировка неизбежна (кроме как при выходе из оболочки - иногда вы можете использовать подоболочку ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced

Жиль "ТАК - перестань быть злым"
источник
4
Это хороший ответ, но это сэкономило бы мне пару минут, если бы вы поместили базовый «set + x» в начало, а не в последний абзац. (Я нашел дополнительные детали полезными.)
DA
2
{ set +x ;} 2> /dev/nullскрывает set +xслед (не будет работать в оболочке Bourne все же). Некоторые снаряды все еще выводят + 2> /dev/nullхотя.
Стефан Шазелас
51

Вы можете остановить режим отладки с помощью set +x. Смотрите пример страницы

Просто я
источник
18

Вы включили режим отладки, вам нужно его отключить.

Форма выписки help set:

Использование + вместо - вызывает отключение этих флагов.

Так типа set +x

Ctrl-Alt-Делор
источник
1
$ set +x # is the opposite of set -x, and will reverse what you typed.

Вы не можете найти справочную страницу только на set, потому что, как вы видите ниже:

$ type set

setэто специальная встроенная оболочка. Хотя это задокументировано на странице руководства вашей оболочки, предполагая bash, вы также можете получить конкретную документацию с

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

Страница справочника по bash или sh хороша для чтения, но немного долго разбираться. Эффективная информация, которую вам нужно было отменить, -xнаходится в конце Exit Status:и гласит:

Использование + вместо - вызывает отключение этих флагов. Флаги также могут использоваться при вызове оболочки. Текущий набор флагов можно найти в $ -. Остальные n ARG являются позиционными параметрами и присваиваются по порядку $ 1, $ 2, .. $ n. Если ARG не заданы, печатаются все переменные оболочки.

dlamblin
источник
Хотя вы не ошиблись, что вы добавили помимо существующих ответов?
Джефф Шаллер
@JeffSchaller Это отредактировано для непосредственности и краткости. Когда я нуждался в этом ответе, я должен был прочитать всю страницу, чтобы найти правильный ответ. Фактически я перестал читать принятый ответ и просто пошел help setи прочитал его. Я пытался улучшить принятый ответ. unix.stackexchange.com/revisions/149137/4 Он был принят, но затем отклонен. Как и новостная статья, она начинается с самой важной информации и предполагает, что в любой момент читатель может остановиться, причем каждое следующее предложение и абзац менее важны, чем продолжение. Это мой SO стиль в Unix SE.
Дламблин