Я пытаюсь перенести файл CentOS.iso на флэш-накопитель USB с помощью команды dd , передав переменную, которая является результатом команды find.

Я хочу передать переменную, как это

dd if=$isofile of=/dev/sdb

Сначала мне нужно создать правильную переменную, вот как я это делаю

isofile='find ~ -iname "*centos*minimal*.iso"'

Однако вывод выполнения созданной переменной

$isofile

не выглядит многообещающе Я не могу передать это команде dd if= .

окно терминала

Можно ли этого достичь? Передать переменную в if=?

На том же примечании, возможно ли передать результат команды find в -exec dd {} и таким образом передать файл .iso ?

2 ответа2

2

Вы используете неправильную команду escape. Команда, которую вы вводите с использованием одного символа enquote, в основном определяет всю строку поиска как строку букв. (Вы можете увидеть это, набрав echo $ isofile). Что вы хотите сделать, это выполнить это, а затем сделать вывод в переменную. Есть как минимум 2 способа сделать это -

То, как вы, вероятно, намеревались - то есть использовать обратные тики вместо прямых тиков, т.е.

  isofile=`find /home/tomas -iname "*centos*minimal*.iso"`

или похожая, более современная версия

  isofile=$( find /home/tomas -iname "*centos*minimal*.iso" )

Оба из вышеупомянутых имеют проблему того, что, если есть больше чем 1 соответствие файла. Вы можете исправить это, выполнив что-то вроде ниже, чтобы взять первую строку.

 isofile=$( find /home/tomas -iname "*centos*minimal*.iso" | head -1 )
2

Ответ Давидго не относится к последней части. Разрешите.

Можно ли передать результат команды find в -exec dd {} и таким образом передать файл .iso ?

Да. Ваш первый подход может быть:

find ~ -iname "*centos*minimal*.iso" -exec dd if={} of=/dev/sdb \;

однако это будет последовательно выполнять более одного dd если существует более одного соответствующего файла. В действительности все , кроме последнего dd будет напрасной тратой времени. Чтобы убедиться, что find останавливается после первого успешного использования dd используйте -quit:

find ~ -iname "*centos*minimal*.iso" -exec dd if={} of=/dev/sdb \; -quit

Примечание: -quit не требует выхода , ваша find может или не может поддерживать его.

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