Estou tentando transferir o arquivo CentOS.iso para uma unidade flash USB usando o dd
comando passando uma variável que é resultado do comando find.
Eu quero passar variável assim
dd if=$isofile of=/dev/sdb
Primeiro eu preciso criar uma variável apropriada, então é assim que eu faço
isofile='find ~ -iname "*centos*minimal*.iso"'
No entanto, a saída da execução da variável criada
$isofile
não parece promissor. Eu não posso passar isso para o dd if=
comando.
Isso é possível de alcançar? Para passar variável para if=
?
Na mesma nota, seria possível passar o find
resultado do comando para -exec dd {}
e transferir o .iso
arquivo dessa maneira?
environment-variables
find
dd
Tomas.R
fonte
fonte
find -iname
obteve o argumento com aspas duplas literais. No caso de o comando executar "manualmente", o shell usava essas citações para saber o que fazer (e o que não fazer) com a string interna e, em seguida, passava a cadeiafind
sem elas.dd if="$isofile" …
(citando!) É melhor. O espaço no nome do arquivo não quebrará o comando.Respostas:
Você está usando o comando de escape errado. O comando que você está usando usando um único caractere enquote basicamente define toda a sua string de busca como uma string de letras. (Você pode ver isso digitando echo $ isofile). O que você quer fazer é executar isso e então fazer a saída em uma variável. Existem pelo menos 2 maneiras de fazer isso -
A maneira que você provavelmente pretendeu - que é usar backticks ao invés de avançar ticks, ie
ou uma versão similar mais moderna
Ambos os itens acima têm o problema de se houver mais de 1 arquivo correspondente. Você pode consertar isso fazendo algo como o abaixo para pegar a primeira linha.
fonte
A resposta davidgo não aborda a última parte. Deixe-me.
Sim. Sua primeira abordagem pode ser:
no entanto, isso irá executar sequencialmente mais de um
dd
se houver mais de um arquivo correspondente. Com efeito, todos, exceto o últimodd
, serão uma perda de tempo. Para garantirfind
paradas após o primeirodd
uso bem-sucedido-quit
:Nota
-quit
não é exigida pelo POSIX, o seufind
pode ou não suportá-lo.fonte