So erstellen Sie eine leere Datei über die Befehlszeile

190

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

NES
quelle

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
Jesaja
quelle
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.

balki
quelle
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*.*
indianwebdevil
quelle
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
Fahrer
quelle
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
AB
quelle
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 
Sergiy Kolodyazhnyy
quelle