2

Это команда, с которой у меня возникла проблема

username@computer /current/working/directory
$ dd if="$filename" bs=1 seek=10 count=10 conv=notrunc status=progress^C
0+0 records in
0+0 records out
0 bytes copied, 1.70242 s, 0.0 kB/s

Тестовый вывод в файл пробный (для здравомыслия?)

username@computer /current/working/directory
$ dd if="$filename" bs=1 seek=10 count=10 conv=notrunc status=progress of=test
22+0 records in
22+0 records out
22 bytes copied, 0.0115305 s, 1.9 kB/s

Среда

username@computer  /current/working/directory
$ echo $filename
somefile.ext

username@computer /current/working/directory
$ dd --version
dd (coreutils) 8.26
Packaged by Cygwin (8.26-1)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

username@computer /current/working/directory
$ echo $SHELL
/bin/bash

username@computer /current/working/directory
$ bash --version
GNU bash, version 4.4.5(1)-release (x86_64-unknown-cygwin)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

username@computer /current/working/directory
$ stty
speed 38400 baud; line = 0;
start = <undef>; stop = <undef>; lnext = ^Q;
-imaxbel
-echoe -echok -echoctl -echoke

Соответствующий раздел со страницы руководства dd , который, по-видимому, подразумевает вывод в дескриптор / поток файла stdout, является поведением по умолчанию:

      of=FILE
             write to FILE instead of stdout

Примеры, которые я нашел, такие как в этой ссылке, также подразумевают, что: AskUbuntu - Как вы отслеживаете прогресс dd?

  • Windows 10 Pro x64
  • Cygwin
  • ConEmu 170517

2 ответа2

3

Проблема может быть в seek который говорит dd пропустить некоторые блоки в начале его вывода. Как вы ожидаете, что это будет работать с stdout? В моем Ubuntu подобная команда dd также зависает, пока я не нажму Ctrl+C.

Решение: избавьтесь от опции seek=10 и она должна работать.

Примечание: для пропуска ввода используйте skip . Может быть, это то, что вы действительно хотели.

0

У вас есть слова «of = test» в конце строки, которая говорит dd записать вывод в файл "test" - удалите этот бит, и он запишет в stdout.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .