Расширение командной строки Linux, повторное использование значений

Расширение командной строки Linux, повторное использование значений

Я пытаюсь передать по tftp кучу файлов

tftp -m binary 192.168.1.2 -c put file1 target/file1

Я пытался использовать расширение строки cmd, например

tftp -m binary 192.168.1.2 -c put `ls *` target/`ls *`

но это, похоже, не работает, после цели вставляется «:».

Есть ли быстрый способ расширить этот тип материала?

Я хочу повторно использовать значения, полученные в первом расширении, в следующем расширении.

решение1

Прежде всего, `ls *`этонеправильный.Того же результата можно достичь, используя только *, например:

tftp -m binary 192.168.1.2 -c put * target/

Расширения подстановочных знаков обрабатываютсятвоя оболочкаперед запуском команды, поэтому правильный способ раскрытия *списка файлов — этопросто используйте*, никогда `ls`.


Во-вторых,tftp putкоманда может загружать несколько файлов, но принимает толькоединый каталог назначенияпри этом. Вам не нужно указывать несколько целей, и это все равно не сработает – tftpне будет известно, где заканчиваются исходные файлы и начинаются целевые файлы. (Как было сказано ранее, подстановочные знаки раскрываются вашей оболочкой, поэтому tftpбудет получать put file1 file2 file3,нет put *.)


Таинственность :вызвана lsперечислением содержимого подкаталогов. Когда вы запускаете ls *, оболочка на самом деле запускается ls file1 file2 dir1(предположим, у вас есть два файла и каталог). Затем lsпечатает " file1", " file2", а затем " dir1: (...all files in dir1...)".

Связанный контент