Wie erstelle ich eine einfache .txt (Text) -Datei mit dem Terminal? [geschlossen]

77

Ich versuche nur, grundlegende Terminalbefehle zu überprüfen. Wie erstelle ich eine Textdatei nur mit dem Terminal?

Mike Wentworth
quelle
Obwohl die Frage wirklich zu weit gefasst ist, könnte ein kurzes Tutorial (vim, Editoren, Shell-Befehlsumleitung usw.) für die Zukunft nützlich sein, insbesondere zusammen mit der Anzahl der Aufrufe und den Abstimmungsergebnissen des Posts und der Antworten. Vielleicht wäre es als Community-Wiki-Beitrag am nützlichsten.
user259412

Antworten:

106

Sie können kein Terminal zum Erstellen einer Datei verwenden. Sie können eine Anwendung verwenden, die in einem Terminal ausgeführt wird. Rufen Sie einfach eine beliebige Nicht-GUI - Editor ( emacs -nw, joe, nano, vi, vim, ...).

Wenn Sie die Befehlszeile verwenden wollten, fragen Sie sich, wie Sie eine Datei mit der Shell erstellen können. Siehe Was ist der genaue Unterschied zwischen einem "Terminal", einer "Shell", einem "Tty" und einer "Konsole"?

Die grundlegende Methode zum Erstellen einer Datei mit der Shell ist die Ausgabeumleitung . Der folgende Befehl erstellt beispielsweise eine Datei foo.txtmit dem Namen, die die Zeile enthältHello, world.

echo 'Hello, world.' >foo.txt

Wenn Sie mehrere Zeilen schreiben möchten, haben Sie hier einige Möglichkeiten. Sie können verwenden printf.

printf '%s\n' 'First line.' 'Second line.' 'Third line.' >foo.txt

Sie können ein Zeichenfolgenliteral mit Zeilenumbrüchen verwenden.

echo 'First line.
Second line.
Third line.' >foo.txt

oder

echo $'First line.\nSecond line.\nThird line.' >foo.txt

Eine andere Möglichkeit besteht darin, Befehle zu gruppieren.

{
  echo 'First line.'
  echo 'Second line.'
  echo 'Third line.'
} >foo.txt

Auf der Kommandozeile können Sie dies direkter mit tun cat. Leiten Sie die Ausgabe in die Datei um und geben Sie die Eingabe Zeile für Zeile in catdie Standardeingabe ein. Drücken Sie Ctrl+ Dam Zeilenanfang, um das Ende der Eingabe anzuzeigen.

$ cat> foo.txt 
Erste Zeile. 
Zweite Reihe. 
Dritte Zeile.
Ctrl+D

In einem Skript würden Sie ein Here-Dokument verwenden , um den gleichen Effekt zu erzielen:

cat <<EOF >foo.txt
First line.
Second line.
Third line.
EOF

Wenn Sie nur eine leere Datei erstellen möchten, können Sie den folgenden touchBefehl verwenden: Die Datei wird erstellt, wenn sie nicht vorhanden ist, und das Datum der letzten Änderung wird nur aktualisiert, wenn es vorhanden ist.

touch foo.txt

Äquivalent:

>>foo.txt

dh foo.txtzum Anhängen öffnen , aber 0 Bytes schreiben - dadurch wird die Datei erstellt, aber nicht geändert. Im Gegensatz touchdazu wird das Datum der letzten Änderung der Datei nicht aktualisiert, wenn diese bereits vorhanden ist.

Um eine leere Datei zu erstellen und den Inhalt der Datei zu entfernen, wenn die Datei bereits vorhanden ist, können Sie verwenden

>foo.txt
Gilles
quelle
13
touch ~/Desktop/something.txt

Dadurch wird eine leere txtDatei erstellt.

Oder

echo "Hello" > ~/Desktop/somethingelse.txt

Dadurch wird eine txtDatei mit der Aufschrift "Hallo" erstellt.

nano ~/Desktop/anotherfile.txt

Dies öffnet ~/Desktop/anotherfile.txtin nano, oder wenn es nicht vorhanden ist , wird es es schaffen , und öffnen Sie es in nano.

Dasselbe kann durch einfaches Ersetzen nanodurch emacsoder geschehen, vimund es wird emacsoder vimanstelle von verwendetnano

Anzeigename
quelle
sollte auch erwähnen catmit <<und erwähnen >>.
06.10.14 Uhr
Lasst uns das Rad nicht neu erfinden. <<und >>werden in Was sind die Steuerungs- und Umleitungsoperatoren der Shell?
G-Man
9

Alles was Sie brauchen, um eine leere Datei zu erstellen, ist:

> my.txt
SAM
quelle
2
In einigen Shells (zsh, tcsh, ...) wird mindestens :> my.txtbenötigt. :ist ein leerer Befehl.
Jofel
{echo 'Erste Zeile.' Echo 'Zweite Zeile.' Echo 'Dritte Zeile.' }> foo.txt funktioniert nicht
Waterfr Villa
2

Sie können das Bearbeitungsprogramm nano, vi oder emacs verwenden, um Dateien auf Terminalebene zu erstellen. Wenn Sie ein x-Windows-System verwenden, müssen Sie Ihr System anweisen, das Programm in der GUI nicht zu verwenden. aber wie auch immer, ich werde Emacs als Beispiel verwenden.

Aus der Bash; Art:

 emacs filename.txt (press enter) - it will create an empty file with the filename specified "filename.txt". It will save "filename.txt" from which ever 
directory type in "emacs filename.txt" command.

Denken Sie daran, in allen UNIX-System-VI kommt mit; Emacs nicht, müssen Sie Emacs installieren. Nano hingegen ist populärer; Nur für den Fall, dass das nicht reagiert, bedeutet dies, dass Sie "nano filename.ext" eingeben und nichts passiert. Sie müssen es installieren.

Sobald Sie vi filename.txt eingeben, wird höchstwahrscheinlich eine neue Datei erstellt. Sie sollten sich über die Verwendung von vi, emacs oder nano bei Google informieren, bevor Sie loslegen. Das Schreiben und Bearbeiten einer Datei sowie das Verwenden der Tools zum Suchen und Ersetzen von Text unterscheidet sich in diesen Bearbeitungsprogrammen. Ich mag Emacs aus allen Möglichkeiten, aber Sie werden Entwickler finden, die von vi und nano besessen sind oder diese bevorzugen

unixmiah
quelle
Für keinen Grafikeditor in Emacs ist "emacs filename.txt -nw", wobei "-nw" kein grafisches Benutzerfenster, kein Fenster bedeutet
Unixmiah
2

Folgendes ist hilfreich, wenn Sie nicht weiterkommen und eine mehrzeilige Textdatei in der Befehlszeile erstellen müssen:

# cat <<'EOF' > textfile
> This "should"
> prove useful, 'maybe'.
> EOF
# cat textfile 
This "should"
prove useful, 'maybe'.

Sie können einen catanderen Befehl, z. B. grepein Muster , durch einen anderen ersetzen und grep für Ihre Eingabe ausführen lassen. Dies würde dann auf die gleiche Weise in eine Datei ausgegeben.


quelle