Maybe the screen
tool can do the trick for you with the screen logging function. Just simply start screen
in commandline and with the keys CTRL-a + H
(first Combination of CTRL + a
and then a capital H with SHIFT + H
, just to clarify) everything will be logged in the file screenlog.0
. The directory where the logfile is found depends on where you started screen, i. e. if you started screen in your $HOME then the logfile will be found there.
Как сохранить все выходные данные команд и ошибки?
Всем привет!
Мне нужно захватить все команды, stdout и stderr без каких-либо дополнений к командам.
Я имею в виду, что я должен сохранить / сохранить вывод этих:
- $ echo 'test'
- $ ls -l
- $ cat some_file
commands.file
- alex @ bender: / pwd $ echo 'test'
- alex @ bender: / pwd $ ls
- alex @ bender: / pwd $ cat some_file
- alex @ bender: / pwd $ fsdfsdfsd
stdout.file
- тестовое задание
- test.txt some_file
- некоторый контент файла
stderr.file
_4. fsdfsdfsd
Что касается первой части вопроса, я нашел скрипт, который использует ловушку и перед оценкой команды сохраняет команду для регистрации. Но как насчет хранения результатов? повторяю: это должно быть решено без каких-либо дополнений к команде. Я имею в виду, что после запуска скрипта мне не нужно писать, например, первую команду ls > log.file. Я хочу увидеть ее без " > log.file ".
Я пишу некоторый скрипт на Python, он работает как командная оболочка.
if name == ' main ':
user = os.getlogin ()
machine_name = os.uname () [1]
stdinbuff = open('commands', 'w') stdoutbuff = open('outs', 'w') command_string = 1 while command_string != '0': a = user + '@' + machine_name + ":" + os.getcwd() + '>'; a = a.replace('/home/', '~/') print a, command_string = raw_input() command_args = command_string.split() proc = subprocess.Popen(command_args, stdout=subprocess.PIPE) (out, err) = proc.communicate() print out stdinbuff.write(command_string+'\n') stdoutbuff.write(out+'\n') stdinbuff.close() stdoutbuff.close()
но в этой оболочке я не могу использовать автозаполнение, как в bash, и этот скрипт не может хранить все, что я хочу.
Может быть, кто-то может сказать мне, что я должен делать?
2 ответа на вопрос
Это можно сделать с помощью Python-модуля pty: использование псевдотерминала для записи всех входных и выходных данных сеанса терминала .
Похожие вопросы
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
6
Какие функции Zsh вы используете?
-
-
5
Прозрачная командная строка в Vista?
-
4
Используйте портфель Windows из командной строки
-
4
Почему некоторые команды не существуют?
-
11
Есть ли простой способ разделить mp3 файлы?
-
2
Как я могу получить OSX Terminal.app для открытия полноэкранного режима, а не каскадного?
-
4
Синхронизация удаленных папок в Linux
-
6
Полноэкранная командная строка или замена Vista