LINUX.ORG.RU

Ответ на: комментарий от bromantik

> А по очереди не устраивает?

Это как? Я хочу одной командой, а не используя промежуточные временные файлы.

anonymous
()
Ответ на: комментарий от bromantik

> ls /1 >> /tmp/res.txt; ls /2 >> /tmp/res.txt

> Я правильно понял?

Нет! Я хочу вот так, но с двумя ls-ами: ls -lR dir1 | diff

anonymous
()

Хочет он!

man diff

DIFF(1)                      GNU Tools                      DIFF(1)

NAME
       diff - find differences between two files
                                      ^^^^^^^^^^^ !!!!

sdio ★★★★★
()

diff <(ls -lR dir1) <(ls -lR dir2)

Jini ★★
()
Ответ на: комментарий от anonymous

Не пойдёт -- в диффе окажется один сплошной файл, без какой-либо границы :(

lodin ★★★★
()

Проблема в том, что у diff'а только один stdin. :) Так что второй файл придётся называть по имени.

Хотя конечно приходят мне в голову всякие нездоровые идеи насчёт /dev/stderr, но озвучивать не буду. :) Можно ещё named pipe юзать. Есть ещё более нездоровые идеи насчёт /dev/fd/*, но в обычных шеллах это точно нереализуемо.

Teak ★★★★★
()
Ответ на: комментарий от Teak

Jini абсолютно точно сказал как это сделать ;)
Кто не верит - проверьте и разберитесь получше, как bash работает ;)

Deleted
()
Ответ на: комментарий от Deleted

Да, сорри, ослеп и не читаю весь тред.

Ушёл перечитывать man bash... Даже интересно, как они это сделали.

Teak ★★★★★
()
Ответ на: комментарий от Teak

как показала практика, в zsh это тоже работает.

isden ★★★★★
()
Ответ на: комментарий от Teak

Как оказалось, именно через /dev/fd и работает. Вот ведь.

Teak ★★★★★
()

Привязка к особенностям определенного шела, зачем? 
Потом появляются программы зависимые от конкр. версии tcl/java/библиотек/...

mkfifo fifo1 fifo2
ls -lR dir1 > fifo1 &
ls -lR dir2 > fifo2 &
diff fifo1 fifo2
rm fifo1 fifo2

И никаких зависимостей.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.