![Expansão da linha de comando do Linux, reutilização de valores](https://rvso.com/image/1303444/Expans%C3%A3o%20da%20linha%20de%20comando%20do%20Linux%2C%20reutiliza%C3%A7%C3%A3o%20de%20valores.png)
Estou tentando tftp vários arquivos
tftp -m binary 192.168.1.2 -c put file1 target/file1
Tenho tentado usar a expansão da linha cmd, como
tftp -m binary 192.168.1.2 -c put `ls *` target/`ls *`
mas isso parece não funcionar, um ":" é inserido após o destino.
Existe uma maneira rápida de expandir esse tipo de coisa?
Quero reutilizar os valores que obtive na primeira expansão na próxima expansão
Responder1
Em primeiro lugar, `ls *`
éerrado.O mesmo resultado pretendido pode ser alcançado usando apenas *
, como em:
tftp -m binary 192.168.1.2 -c put * target/
Expansões curinga são processadas porsua conchaantes de executar o comando, então a maneira correta de expandir *
para uma lista de arquivos ésimplesmente use*
, nunca `ls`
.
Em segundo lugar, oTFTP put
comando pode fazer upload de vários arquivos, mas só aceitaum único diretório de destinoao fazer isso. Você não precisa especificar vários destinos e, de qualquer maneira, isso não funcionaria – você tftp
não saberia onde terminam os arquivos de origem e começam os arquivos de destino. (Como dito anteriormente, os curingas são expandidos pelo seu shell, então tftp
receberíamos put file1 file2 file3
,não put *
.)
O mistério :
é causado pela ls
listagem do conteúdo dos subdiretórios. Quando você executa ls *
, o shell realmente é executado ls file1 file2 dir1
(vamos supor que você tenha dois arquivos e um diretório). Em seguida, ls
imprime " file1
", " file2
", seguido de " dir1: (...all files in dir1...)
".