So erstellen Sie eine leere Datei über die Befehlszeile


190

Wie kann ich eine leere Datei über die Befehlszeile erstellen?

Antworten:


237

Verwenden Sie den touchBefehl:

The touch utility sets the modification and access times of files to the
current time of day. If the file doesn't exist, it is created with
default permissions.

Beispiel:

touch newfile

14
Sie können auch touch newfile.txteine andere Erweiterung verwenden (wenn Sie die Erweiterung angeben müssen).
Gotqn

@gotqn für python touch newfile.py und für ruby ​​newfile.rb?
Kouty

3
Wenn dies jedoch newfilebereits existiert und nicht leer ist touch newfile, erhalten Sie eine nicht leere Datei. Vielleicht nicht was du wolltest.
Camille Goudeseune

@CamilleGoudeseune Ich denke, wenn newfilebereits vorhanden, aktualisiert dertouch Befehl nur den Zeitstempel der Datei (wofür genau der Befehl verwendet wird), ohne den Inhalt der Datei zu bearbeiten.
C0deDaedalus

Das musst du nicht denken. das ist wahr! Aber es ist nicht das, was die Frage gestellt hat.
Camille Goudeseune

81
> newfile

Wird auch erstellen eine leere Datei. Wenn die Datei bereits vorhanden ist, wird sie abgeschnitten (geleert). Verwenden Sie >>zum Anhängen Folgendes, um den Dateiinhalt beizubehalten:

>> file

Auch wenn die Datei existiert, bleibt der Inhalt unberührt.

Bearbeiten : Wenn Sie keinen Inhalt zum Tippen haben, ist dieser schneller:

user@host$ :> newfile
user@host$ :>> new_or_existing_file

Hinweis. :ist der Befehl hier. Es ist nicht Teil der Eingabeaufforderung.


Das ist neu. Ist es bash-spezifisch?
Tshepang

Ich glaube nicht. Jede Shell, die die Umleitung des Ausgabestreams in eine Datei ermöglicht, sollte dies unterstützen. Dadurch wird die Datei abgeschnitten, wenn sie bereits vorhanden ist. touch kann sicher verwendet werden, wenn Sie es nicht leeren möchten.
Balki

Wow, jetzt denke ich, das nennt man das Betrügen des Systems
Banarun

12
cat /dev/null > file1.ext 

der genaue weg dorthin ist auch ein anderer weg

echo "" > file2.ext 

Der Unterschied ist, dass file1.ext null Byte und file2.ext ein Byte beträgt. Sie können dies überprüfen, indem Sie

ls -l file*.*

10
Nein, 'echo "">' erstellt keine leere Datei, sondern eine Datei mit einer neuen Zeile. Wenn Sie aus irgendeinem Grund eine leere Datei mit echo erstellen möchten, müssen Sie 'echo -n "">' oder einfach 'echo -n>'
andol

7

Mit dem vimEditor können Sie auch eine leere Datei erstellen.

vim filename

Dann speichere

:wq

Naja, in diesem Fall aber kein Texteditor vim.
Nephente

2

Der Befehl

echo -n > file

Erstellt eine leere Datei, wenn Ihre Version echodie Option -n unterstützt.

Oder Sie könnten verwenden printf

printf '' > file

0

Python Einzeiler:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

Grundsätzlich Python-Implementierung von touch.

Damit können wir es kürzer machen:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 
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.