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...)”。

相關內容