передайте целый сценарий по каналу в файл и терминал

я хочу 1liner передать по каналу в файл, И терминал одновременно (запишите 1 команду, затем все другие команды показывают как нормальный в терминале, но производят, предпочтительно но не требуемые: название команды, чтобы быть добавленным в файл)
, я знаю, что должностное лицо делает это:

exec > /vga/log/$(date +'%Y%m%d.%H%M%S').txt
ls

но теперь я ничего не вижу в терминале, как я могу добавить мишень к вышеупомянутому так, чтобы это работало, я попробовал

exec > tee /vga/log/$(date +'%Y%m%d.%H%M%S').txt
ls
# creates a file called 'tee' with output, nothing in terminal

exec | tee /vga/log/$(date +'%Y%m%d.%H%M%S').txt
ls
# creates file uninst_total_20150729.161010.txt but is empty, terminal is ok

- решение

#!/bin/bash
exec 1> >(tee -a /vga/log/$(date +'%Y%m%d.%H%M%S').txt)
exec 2>&1
ls
0
задан 30 July 2015 в 10:53

2 ответа

То, что Вы ищете, то, что:

exec 1> >(tee -a $LOGFILE)

Каждые данные, которые являются, отправляют, канал 1 канавки (stdout) перенаправляется линию за линией к tee, который добавляет -a это в файл И печатает его к stdout.

, Если Вы хотите перенаправить, оба, stdout и stderr, используют это после первого exec оператор сверху:

exec 2>&1
2
ответ дан 1 October 2019 в 06:00

Используя script

  1. Запустите команду script
  2. Сделайте свои операции
  3. Остановиться script через Ctrl-D
  4. Посмотрите вывод в typescript

Пример

% script
% ls -og
total 72
-rw-rw-r-- 1   0 Jul 24 15:11 e
-rw-rw-r-- 1  43 Jul 29 12:54 File1
-rw-rw-r-- 1  26 Jul 29 09:07 File2
-rwxrwxr-x 1 557 Jul 29 09:02 foo
-rw-rw-r-- 1  23 Jul 29 15:33 out
-rw-rw-r-- 1   0 Jul 29 15:32 test
-rw-rw-r-- 1   0 Jul 29 16:01 typescript

Ctrl-D

% 
Script started, file is typescript
                                  Script started, file is typescript
Script done, file is typescript

% cat typescript 
Script started on Mi 29 Jul 2015 16:01:31 CEST
% ls -og
total 72
-rw-rw-r-- 1   0 Jul 24 15:11 e
-rw-rw-r-- 1  43 Jul 29 12:54 File1
-rw-rw-r-- 1  26 Jul 29 09:07 File2
-rwxrwxr-x 1 557 Jul 29 09:02 foo
-rw-rw-r-- 1  23 Jul 29 15:33 out
-rw-rw-r-- 1   0 Jul 29 15:32 test
-rw-rw-r-- 1   0 Jul 29 16:01 typescript
[aboettger:~/tmp] % 

Script done on Mi 29 Jul 2015 16:01:39 CEST

Используя tee

<your_command> | tee -a out

От man tee

-a, --append
      append to the given FILEs, do not overwrite

Пример

$ ls -ogla | tee -a out
total 80
drwxrwxr-x  2  4096 Jul 29 15:29 .
drwx------ 52 20480 Jul 29 15:26 ..
-rw-rw-r--  1     0 Jul 24 15:11 e
-rw-rw-r--  1    43 Jul 29 12:54 File1
-rw-rw-r--  1    26 Jul 29 09:07 File2
-rwxrwxr-x  1   557 Jul 29 09:02 foo
-rw-rw-r--  1     0 Jul 29 15:29 out

$ cat out
total 80
drwxrwxr-x  2  4096 Jul 29 15:29 .
drwx------ 52 20480 Jul 29 15:26 ..
-rw-rw-r--  1     0 Jul 24 15:11 e
-rw-rw-r--  1    43 Jul 29 12:54 File1
-rw-rw-r--  1    26 Jul 29 09:07 File2
-rwxrwxr-x  1   557 Jul 29 09:02 foo
-rw-rw-r--  1     0 Jul 29 15:29 out
1
ответ дан 1 October 2019 в 06:00

Другие вопросы по тегам:

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