Как может я gzip стандарт в в файл и также печатать стандарт в к стандарту?

Попробуйте это -

var priceInput = document.getElementById("input-price");

priceInput.addEventListener("input", representValue)

function representValue(){
   var numOfChars = priceInput.value.length;
   
   var magicSpan = document.getElementById("magic-value");
   value = 100 + (numOfChars*10);
   magicSpan.textContent = value;
}
<span id="magic-value">100</span>
<input id="input-price" type="text">

30
задан SamB 27 April 2010 в 01:02
поделиться

4 ответа

echo "hey hey, we're the monkees" | tee /dev/tty | gzip --stdout > my_log.gz

, Как указано в комментариях, /dev/stdout мог бы работать лучше, чем /dev/tty при некоторых обстоятельствах.

46
ответ дан 27 November 2019 в 22:58
поделиться

Иначе (принимающий оболочку как bash или zsh):

echo "hey hey, we're the monkees" | tee >(gzip --stdout > my_log.gz)

по общему признанию странное >() синтаксис в основном делает следующее:

  • Создают новый FIFO (обычно что-то в /tmp/)
  • команда Execute в () и связывают FIFO с stdin на том имени файла FIFO Возврата подкоманды
  • к командной строке.

то, Что tee заканчивает тем, что видел, затем, является чем-то как:

tee /tmp/arjhaiX4

Весь gzip видит, его стандартный вход.

Для Bash, см. man bash для деталей. Это находится в разделе по [1 112] перенаправление . Для Zsh см. man zshexpn в соответствии с заголовком "Замена Процесса".

Насколько я могу сказать, Shell Korn, варианты классической Оболочки Bourne (включая пепел и тире), и Оболочка C не поддерживают этот синтаксис.

54
ответ дан 27 November 2019 в 22:58
поделиться

Имейте хорошую чашку мишень !

команда мишени копирует стандартный вход в стандартный вывод и также в любые файлы, данные как аргументы. Это полезно, когда Вы хотите не только отправить некоторым данным вниз канал, но также и сохранить копию

, Поскольку у меня есть медленный день, вот некоторое великолепно иллюстративное искусство ASCII...

           +-----+                   +---+                  +-----+  
stdin ->   |cmd 1|    -> stdout ->   |tee|   ->  stdout  -> |cmd 2|
           +-----+                   +---+                  +-----+
                                       |
                                       v
                                     file

, Поскольку greyfade демонстрирует в другом ответе, 'файл' не должен быть регулярным файлом, но мог быть FIFO, позволяющим Вам передавать это по каналу вывод tee'd в третью команду.

           +-----+                   +---+                  +-----+  
stdin ->   |cmd 1|    -> stdout ->   |tee|   ->  stdout  -> |cmd 2|
           +-----+                   +---+                  +-----+
                                       |
                                       v
                                     FIFO
                                       |
                                       v
                                    +-----+
                                    |cmd 3|
                                    +-----+
18
ответ дан 27 November 2019 в 22:58
поделиться

Просто чтобы написать способ, который не включает в себя прикосновение к диску:

echo "hey hey, we're the monkees" | (exec 1>&3 && tee /proc/self/fd/3 | gzip --stdout > my_log.gz)
6
ответ дан 27 November 2019 в 22:58
поделиться