Kann der Befehl linux cat zum Schreiben von Text in eine Datei verwendet werden?


143

Ist so etwas:

cat "Some text here." > myfile.txt

Möglich? So dass der Inhalt von myfile.txtnun überschrieben würde:

Some text here.

Das funktioniert bei mir nicht, wirft aber auch keine Fehler.

Speziell interessiert an einer catLösung auf Basis (nicht vim / vi / emacs usw.). Alle Online-Beispielshows catwerden in Verbindung mit Dateieingaben verwendet, nicht mit Rohtext ...

Antworten:


184

Das echomacht:

echo "Some text here." > myfile.txt

13
Bonus: echo "Some text here." >> myfile.txtan das Ende der Datei anhängen
Jim Aho

6
Wenn Sie in Ihrem Text doppelte Anführungszeichen verwenden müssen, schließen Sie das Ganze in einfache Anführungszeichen ein. Dies ist nützlich für .json und dergleichen, zBecho '{"info1": "123456"}' > info.json
bkd

163

Klingt so, als würden Sie nach einem Here-Dokument suchen

cat > outfile.txt <<EOF
>some text
>to save
>EOF

Unter Linux Kernel 2.6.32 Centos 6 musste ich die >Zeichen weglassen , um die erwartete Ausgabe zu erhalten.
Öko

4
Die >Zeichen stellen den Standardwert von dar $PS2; Sie werden automatisch angezeigt und sind nicht für die Eingabe vorgesehen. Wenn Sie einen anderen Wert für $PS2haben, wird dieser stattdessen angezeigt.
Gbrener


10

Ich benutze den folgenden Code, um Rohtext in Dateien zu schreiben und meine CPU-Einstellungen zu aktualisieren. Hoffe das hilft! Skript:

#!/bin/sh

cat > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor <<EOF
performance
EOF

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
performance
EOF

Dadurch wird der Text "Leistung" in die beiden im obigen Skript genannten Dateien geschrieben. In diesem Beispiel werden alte Daten in Dateien überschrieben.

Dieser Code wird als Datei (cpu_update.sh) gespeichert und zur Ausführung ausgeführt:

chmod +x cpu_update.sh

Danach können Sie das Skript ausführen mit:

./cpu_update.sh

Wenn Sie die alten Daten in der Datei nicht überschreiben möchten, wechseln Sie aus

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

mit

cat >> /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

Dadurch wird Ihr Text an das Ende der Datei angehängt, ohne dass andere Daten entfernt werden, die sich bereits in der Datei befinden.


8
cat > filename.txt

Geben Sie den Text bis EOF ein, um den Text zu speichern. Verwenden Sie dazu: Strg + d

Wenn Sie diese TXT-Datei lesen möchten, verwenden Sie

cat filename.txt

und eine Sache .txt ist nicht obligatorisch, es dient als Referenz.


7

Für Textdatei:

cat > output.txt <<EOF
some text
some lines
EOF

Für PHP-Datei:

cat > test.php <<PHP
<?php
echo "Test";
echo \$var;
?>
PHP

5

Sie können es auch so machen:

user@host: $ cat<<EOF > file.txt
$ > 1 line
$ > other line
$ > n line
$ > EOF
user@host: $ _

Ich glaube, es gibt viele Möglichkeiten, es zu benutzen.


4

Schreiben Sie mehrzeiligen Text mit Umgebungsvariablen mit echo:

echo -e "
Home Directory: $HOME \n
hello world 1 \n
hello world 2 \n
line n... \n
" > file.txt 


3

Eine andere Möglichkeit, mit cat Text in eine Datei zu schreiben, wäre so etwas

cat >file.txt <<< Write something here

Dieser Befehl ist sehr nützlich, wenn Sie versuchen, eine Ausgabe eines Befehls in eine Datei zu schreiben. Zum Beispiel cat > docker-inspect.txt <<< inspizieren Docker Bild ``
Prasanth Ganesan

2

catkann auch nach a |zum Schreiben in eine Datei verwendet werden, dh Pipe füttert cat einen Datenstrom


1

Die Lösung für Ihr Problem lautet:

echo "Einige Texte gehen hierher"> filename.txt

Sie können den Befehl cat jedoch verwenden, wenn Sie die Ausgabe einer Datei in eine andere Datei umleiten oder die Ausgabe einer Datei an eine andere Datei anhängen möchten:

cat filename> newfile - Um die Ausgabe des Dateinamens in newfile umzuleiten

cat filename >> newfile - Zum Anhängen der Ausgabe von filename an newfile

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.