2017-07-12 3 views
1

Ich möchte Text in eine Datei in einem Bash-Skript schreiben, wörtlich und ohne Sonderzeichen zu ändern. Ich suche eine Funktion oder ein Befehl ähnlich:Schreibe Text in Datei wörtlich, einschließlich Sonderzeichen

echo'line1 
line2' > destination/file 

aber inklusive aller Sonderzeichen innerhalb Text $ ' "(usw.) und ohne diese Zeichen zu modifizieren

Antwort

6

Der einfachste Weg, mit einem zitierte heredoc ist.

cat << 'EOT' > /path/to/file 
Thi$ is text with ' " special chars 
that [ spans ] {} multiple lines 
EOT 

Beachten Sie, dass die Zeichenfolge "EOT" völlig willkürlich ist, und wenn Sie eine Zeile in der Ausgabe möchten, die nur aus der Zeichenfolge EOT besteht, können Sie ein anderes Trennzeichen wählen möchten, dass einige Variablen interpoliert werden, können Sie etwas tun ing like:

{ cat << 'EOT'; cat << EOF; } > /path/to/file 
This $var will not be interpolated in the output 
EOT 
But this $var will! 
EOF 
0

Sie können tee Befehl verwenden, um das gleiche zu tun. Syntax:

tee filename 

Dann schreiben Sie den Inhalt der Datei. Wenn Sie speichern möchten, drücken Sie Strg + Z. Wenn Sie eine Datei anhängen möchten, verwenden Sie

Sie können auch andere Befehle verwenden und sie mit tee zu einer Datei leiten.