
Я пытаюсь передать по 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...)
".