Как стать автором
Обновить

Комментарии 21

Когда в начале 80-х г.г. прошлого столетия я обратил свой взор в сторону Unix, то меня в нем подкупило именно наличие конвейеров. Надо мной все смеялись, какой Unix, светлое будущее связано с IBM и его OS/370, а также с его советскими аналагоми ЕС ЭВМ, СВМ и клнечно язык PL/1. Но надо сказать, что Unix в Советском Союзе был! И когда в 1986 году в рамках программы АнтиСОИ мы начали создавать стенд имитационного моделирования, то я приложил громадные усилия чтобы он создавался на Unix. Мне это удалось, но Советский Союз заканчивал свое существование.
image

IBM сама очень много сделала для развития и продвижения Linux.
В 80-х годах прошлого века?

Именно так!

тут скорее отсылка, что linux появился уже в 90х

Эта да, но речь-то идет об Unix. А в 80-е Прошлого Столетия были годы его расцвета.

Да, но обсуждение пошло по ветке:


IBM сама очень много сделала для развития и продвижения Linux.

В 80-х годах прошлого века?

Так что как раз переключилось на Linux.

deniskin у вас Markdown парсер поломан, при составлении текста с цитатами.

Простите великодушно, но зачем этот постоянный копипаст?

Всё в пайпах хорошо, кроме того, что нельзя сделать вывод из трубы в две разные программы/файла.
И приходится писать в файл, а из файла уже tail -f в разные места и придумывать, как остановить обработку, когда данные закончатся.

Можно вот так:
$ seq 10|tee >(echo «got $(wc -l) lines»)|grep 1
1
10
got 10 lines
$
Как-то не очень работает. При grep 2 echo не выполняется. При seq 20 и grep 2 все норм, но при seq 20 и grep 1 echo опять не работает. Дальнейшие пробы показали, что правильно работает только если в seq есть цифра, которая есть в grep. То есть 10 — 1 и 0, 20 — 2 и 0, 33 — только 3, 24 — 2 и 4.
Прошу прощения, это был неудачный пример. Для корректного вывода на терминал можно сделать так:

$ seq 10|tee >(echo «got $(wc -l) lines» >/dev/tty)|grep 2
2
got 10 lines
$
а реально написать алиас на двойной, тройной пайп?
Используя тот же прием можно цеплять друг к другу сколько угодно tee. Можно ли это оформить башевским алиасом наверное зависит от конкретной задачи.
$ seq 50|tee >(echo got $(wc -l) lines >/dev/tty)|tee >(echo tens: $(grep [0-9]0) >/dev/tty)|grep 4
4
14
24
34
40
41
42
43
44
45
46
47
48
49
got 50 lines
tens: 10 20 30 40 50
tty, блин, я и забыл уже про него. Кстати, без кавычек тоже нормально работает.
если частая задача, напишите разок утилиту, которая может

Можно, с помощью tee:


echo "Hello, World!" | tee file1.txt | tee file2.txt

Проверяем:


cat file1.txt 
Hello, World!

cat file2.txt 
Hello, World!

В оба файла записан один вывод из echo. В tee можно еще указать ключ -a который будет аппендить, а не переазаписывать файлы.

Спасибо.
А вывод идёт последовательно или параллельно?

Зарегистрируйтесь на Хабре , чтобы оставить комментарий