Существует ли способ перенаправить вывод программы и все еще иметь его, переходят к stdout?

Можно получить большой контроль о том, как Вы перечисляете файлы с find утилита. ls действительно не позволяет Вам указать столбцы, которые Вы хотите.

Например:

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

Аргумент printf действие является подробным в странице справочника. Можно выбрать другую информацию времени, какой размер Вы хотите (размер файла или используемые дисковые блоки) и т.д. Можно также сделать этот сейф для необычных имен файлов, если последующая обработка необходима.

24
28.06.2016, 14:41
1 ответ

tee существует с этой целью; это берет аргумент имени файла и пишет данные, которые это считывает от stdin и до stdout и до файла:

$ prog 2>&1 | tee file
39
27.01.2020, 19:41
  • 1
    И для дополнительного удара 4 миловидности: prog |& tee file. –  Tobu 19.11.2010, 03:49
  • 2
    Можно также заменить 'файл' именованным каналом... –  Kevin Cantu 30.11.2010, 04:09
  • 3
    @KevinCantu: именованный канал является всего одним типом файла; это - Unix, где все - файл. Вы можете также prog |& tee /dev/tty > file, который может быть полезным посреди конвейера, например. foo |& tee /dev/tty | sed 's/.*\r//' > foo.log видеть, что строка состояния прогрессирует обновления на Вашем терминале, но фильтрует их из файла журнала. Или используйте его для отладки конвейера, который Вы взламываете вместе, позволяя Вам видеть данные в той точке. –  Peter Cordes 09.06.2017, 10:44

Теги

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