Ich habe eine Datei namens my_file.txt dessen Inhalt nur die Zeichenfolge Hello ist . Wie könnte ich seinen Inhalt auf den Befehl echo umleiten ?
Ich weiß, dass ich die Befehle less habe , cat , more … aber ich muss es mit echo machen .
Ich habe das versucht:
$ cat my_file.txt | echo
und auch das:
$ echo < my_file.txt
Aber in beiden Fällen erscheint nur ein Leerzeichen in der Standardausgabe, nicht der Inhalt von my_file.txt.
Wie könnte ich das tun?
Akzeptierte Antwort:
Sie können alles, was Sie möchten, auf echo umleiten aber damit wird es nichts. echo liest seine Standardeingabe nicht. Es schreibt lediglich seine Argumente in die Standardausgabe durch ein Leerzeichen getrennt und durch ein Zeilenumbruchzeichen abgeschlossen (und mit etwas echo Implementierungen mit einigen erweiterten Escape-Sequenzen und/oder Argumenten, die mit - beginnen möglicherweise als Optionen behandelt).
Wenn Sie echo möchten Um den Inhalt einer Datei anzuzeigen, müssen Sie diesen Inhalt als Argument an echo übergeben . Etwas wie:
echo "$(cat my_file.txt)"
Beachten Sie, dass $(...) entfernt die abschließenden Newline-Zeichens aus der Ausgabe dieser cat Befehl und echo fügt eins hinzu zurück.
Beachten Sie auch, dass außer mit zsh , können Sie keine NUL-Zeichen in den Argumenten eines Befehls übergeben, sodass Obiges normalerweise nicht mit Binärdateien funktioniert. yash entfernt auch Bytes, die nicht Teil gültiger Zeichen sind.
Wenn der Grund dafür ist, dass Sie echo wollen um das n zu erweitern , b ,