我正在尝试通过 tftp 传输一堆文件
tftp -m binary 192.168.1.2 -c put file1 target/file1
我一直在尝试使用命令行扩展,例如
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`
。
第二,远程文件传输协议 put
命令可以上传多个文件,但它只接受单个目标目录执行此操作时。您不需要指定多个目标,而且无论如何它都不起作用——tftp
不知道源文件在哪里结束,目标文件在哪里开始。(如前所述,通配符由您的 shell 扩展,因此tftp
将收到put file1 file2 file3
,不是 put *
。
神秘感:
是由ls
列出子目录的内容引起的。当您运行 时ls *
,shell 实际上会运行ls file1 file2 dir1
(假设您有两个文件和一个目录)。然后ls
打印“ file1
”、“ file2
”,然后打印“ dir1: (...all files in dir1...)
”。