Linux 命令行扩展,重用值

Linux 命令行扩展,重用值

我正在尝试通过 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...)”。

相关内容