![Linux-Befehlszeilenerweiterung, Werte wiederverwenden](https://rvso.com/image/1303444/Linux-Befehlszeilenerweiterung%2C%20Werte%20wiederverwenden.png)
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 put
Befehl kann mehrere Dateien hochladen, akzeptiert aber nurein einzelnes Zielverzeichnisdabei. Sie müssen nicht mehrere Ziele angeben, und es würde sowieso nicht funktionieren – Sie tftp
wüssten nicht, wo die Quelldateien enden und die Zieldateien beginnen. (Wie bereits erwähnt, werden die Platzhalter von Ihrer Shell erweitert, Sie tftp
würden also put file1 file2 file3
,nicht put *
.)
Das Mysteriöse :
entsteht durch ls
die 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 ls
wird " file1
", " file2
", gefolgt von " dir1: (...all files in dir1...)
" gedruckt.