Expansão da linha de comando do Linux, reutilização de valores

Expansão da linha de comando do Linux, reutilização de valores

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 putcomando 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ê tftpnã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 tftpreceberíamos put file1 file2 file3,não put *.)


O mistério :é causado pela lslistagem 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, lsimprime " file1", " file2", seguido de " dir1: (...all files in dir1...)".

informação relacionada