Я использую script
команду, чтобы сохранить весь вывод из терминала в файл с именем typescript
. Или script foo
сохранить в файл foo
.
Теперь, допустим, я продолжаю набирать команду за командой, и я забываю, нахожусь ли я в машинописи или нет.
Как я могу узнать, нахожусь ли я внутри машинописного текста или нет?
typescript
Роб Эвери IV
источник
источник
script
имеет открытый tty, также может привести к ложному срабатыванию.script
запускаемая оболочка ).script
но и другие ситуации, напримерsu -l
,ssh
консоль Linux и возможно, другие, и предоставить (через другие аргументыps
) гораздо больше информации.Интересная проблема. Я обнаружил, что небольшой bash-скрипт может сделать работу довольно надежно:
Я думаю, что это немного отличается от того, что предложил Стефан Чазелас, в том, что мой сценарий работает по пути родительские: дочерние, которые имеют процессы Linux / Unix, пока не найдет PID 1 или не найдет «сценарий» как процесс.
источник
xterm
сеанс сценария, этот сценарий запустит оболочку в этом xterm под сценарием. Ну, это в некотором роде, но вывод не идет на машинопись. Мой подход проверяет терминал, связанный с текущим сеансом, поэтому не будет иметь этой проблемы.Если у вас есть личный каталог bin / в вашем пути (например, / home / user / bin, поместите туда сценарий оболочки с именем «script» (то же имя, что и двоичный файл), со следующим содержимым:
Теперь, во время выполнения скрипта, вы можете проверить переменную среды SCRIPT_RUNNING и делать все, что вы хотите, основываясь на ней.
РЕДАКТИРОВАТЬ:
На самом деле, есть гораздо более простой способ. Следующее говорит само за себя, создайте три файла, ~ / bin / script, ~ / bin / script-shell и ~ / .scriptrc:
Если ваша текущая оболочка - bash, не забудьте запустить ее
hash -r
после создания этих файлов, чтобы убедиться, что ~ / bin / script запускается при вводе 'script' в качестве команды (проверьте с помощьюwhich script
).Как и раньше, обратите внимание, что у вас должен быть ~ / bin в вашем PATH, предшествующий стандартному пути, чтобы это работало.
источник