Linux-Befehlszeilenerweiterung, Werte wiederverwenden

Linux-Befehlszeilenerweiterung, Werte wiederverwenden

Ich versuche, eine Reihe von Dateien per TFTP zu übertragen

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

Ich habe versucht, eine Befehlszeilenerweiterung zu verwenden, wie zum Beispiel

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

aber das scheint nicht zu funktionieren, nach dem Ziel wird ein „:“ eingefügt.

Gibt es eine schnelle Möglichkeit, solche Dinge zu erweitern?

Ich möchte die Werte, die ich in der ersten Erweiterung erhalten habe, in der nächsten Erweiterung wiederverwenden

Antwort1

Zunächst einmal `ls *`istfalsch.Dasselbe gewünschte Ergebnis kann durch die Verwendung von nur erreicht werden *, wie in:

tftp -m binary 192.168.1.2 -c put * target/

Wildcard-Erweiterungen werden verarbeitet vondeine Schale*bevor Sie den Befehl ausführen, also ist die korrekte Art, eine Liste von Dateien zu erweitern,einfach verwenden*, niemals `ls`.


Zweitens, dieTFTP putBefehl kann mehrere Dateien hochladen, akzeptiert aber nurein einzelnes Zielverzeichnisdabei. Sie müssen nicht mehrere Ziele angeben, und es würde sowieso nicht funktionieren – Sie tftpwüssten nicht, wo die Quelldateien enden und die Zieldateien beginnen. (Wie bereits erwähnt, werden die Platzhalter von Ihrer Shell erweitert, Sie tftpwürden also put file1 file2 file3,nicht put *.)


Das Mysteriöse :entsteht durch lsdie Auflistung des Inhalts von Unterverzeichnissen. Wenn Sie ausführen ls *, wird die Shell tatsächlich ausgeführt ls file1 file2 dir1(nehmen wir an, Sie haben zwei Dateien und ein Verzeichnis). Dann lswird " file1", " file2", gefolgt von " dir1: (...all files in dir1...)" gedruckt.

verwandte Informationen