Как перенаправить прогресс dd в терминале в файл журнала после замены возврата каретки на символы новой строки - PullRequest
0 голосов
/ 17 января 2020

Есть идеи, почему эта команда не работает?

dd if=/dev/zero of=/dev/null status=progress |& tr '\r' '\n' >> test.txt

Я хочу, чтобы содержимое test.txt выглядело примерно так.

395191296 bytes (395 MB, 377 MiB) copied, 1 s, 395 MB/s
805187584 bytes (805 MB, 768 MiB) copied, 2 s, 403 MB/s
1239563264 bytes (1.2 GB, 1.2 GiB) copied, 3 s, 413 MB/s
1666015232 bytes (1.7 GB, 1.6 GiB) copied, 4 s, 417 MB/s

Сейчас команда ничего не печатает для test.txt

Ответы [ 2 ]

1 голос
/ 17 января 2020

Это все из-за tr ожидания завершения своей работы sh, что займет бесконечное время.

unbuffer может помочь вам в этой ситуации:

dd if=/dev/zero of=/dev/null status=progress |& unbuffer -p tr '\r' '\n' >>test.txt
0 голосов
/ 17 января 2020

Используйте тройник Например:

dd if=/dev/zero of=/dev/null status=progress 2>&1 | tee test

Затем вы можете заменить \ r на \ n ИЛИ открыть на nano

...