запись расшифровки стенограммы команды в файл

Я предполагаю, что Вы говорите об одновременных сессиях; разделение сессий, которые являются друг после друга, не очень полезно: Вы никогда не могли бы использовать, это больше - история, потому что все сессии были бы уникальны. Если бы это имело место, то Вы, вероятно, были бы более обеспечены просто отключающая история команд.

Если бы мы говорим о разделении одновременной сессии, я рекомендовал бы использовать Bash. Я вполне уверен, я не получаю историю команд от двух одновременных сессий, смешанных с ним. Bash только пишет историю в .bash_history при выходе из системы, таким образом, история команд не будет смешана до окончания выхода из системы. При условии, что использование Bash приемлемо, который решил бы Вашу проблему?

1
07.05.2011, 01:12
2 ответа

exec для дескрипторов файлов и set -x являются портативными; xtrace не, но должно на самом деле быть то же самое как -x.

Чтобы сохранить и восстановить дескрипторы файлов, Вы действительно используете exec снова. Необходимо выбрать некоторые неиспользованные дескрипторы, который обычно означает что-либо более чем 2, и перенаправьте оригиналы тем, затем перенаправьте назад в конце.

exec 20<&0 21>&1 22>&2
# do your redirections
# do whatever you wanted to have redirected
exec <&20 >&21 2>&22 20<&- 21>&- 22>&-

Последняя строка сначала dup()s сохраненные дескрипторы файлов назад то, куда они произошли из, затем закрывается (&-) копии. Завершения являются, вероятно, ненужными, но хорошая идея.

Также обратите внимание, что, если это выполняется в его собственной оболочке, перенаправления уходят, когда оболочка делает. Необходимо было бы только отменить перенаправление, если бы Вы использовали . (портативный) или source (bash).

3
27.01.2020, 23:21
  • 1
    @geekosaur:Спасибо. что относительно 2? Не уверенный то, под чем Вы подразумеваете "xtrace, не, но должно на самом деле быть тем же самым как-x". Так set -o xtrace портативный или нет? Я попытаюсь понять то, о чем исполнительные перенаправления. У Вас есть хорошая ссылка для этого? А-ч –  Faheem Mitha 07.05.2011, 01:32
  • 2
    set -o xtrace не является портативным, но его значение в bash совпадает с портативной версией, set -x. Перенаправления, которые можно найти зарегистрированным в gnu.org/software/bash/manual/bashref.html#Redirections — примечание, разделяют 3.6.8 в частности. (3.6.9, однако, bash- конкретный.) –  geekosaur 07.05.2011, 01:58
  • 3
    set -o xtrace было стандартным некоторое время. Граница только имела set -x IIRC. exec перенаправления уже были в Bourne также, но только с одноразрядными дескрипторами файлов в некоторых системах. –  Gilles 'SO- stop being evil' 07.05.2011, 02:09
  • 4
    @Gilles: Если set -o xtrace и set -x эквивалентны и оба портативных, затем который должен быть предпочтен? Вы ссылаетесь на Bourne как на предшественника стандарта POSIX? –  Faheem Mitha 07.05.2011, 03:31
  • 5
    @Faheem: Оболочка Bourne была /bin/sh в течение формирующих лет Unix. Стандарт POSIX был главным образом компромиссом между then-already-elderly Оболочкой Bourne и большим количеством featureful, но не универсально доступной оболочкой Korn. Almquist (замена BSD для несвободной Оболочки Bourne) имел set -x со дня один, но не получал set -o до позже. Так set -x получит Вас мобильность к больше более старому (предPOSIX) платформы. –  Gilles 'SO- stop being evil' 07.05.2011, 13:49

Для рабочего каталога попробовать PS4='+$PWD '. Одинарные кавычки означают, что это только расширено, когда это собирается быть распечатанным. Первый символ PS4 может быть распечатан многократно, таким образом, Вы, вероятно, все еще хотите + или по крайней мере пространство в запуске.

Согласно определению POSIX набора, set -x и set -o xtrace оба поддерживаются. В странице справочника тире говорится, что она в порядке также.

1
27.01.2020, 23:21
  • 1
    Спасибо. Одинарная кавычка действительно работает. Так, одинарные кавычки защищают от расширения, так в этом случае, я предполагаю '$PWD$ ' заменен, как то, везде, где set -x использование это, и затем расширено там.Правильно? Я не, однако, ясен на том, под чем Вы подразумеваете The first character of PS4 can be printed multiple times.... Можно ли уточнить? –  Faheem Mitha 07.05.2011, 22:31

Теги

Похожие вопросы