Frage So erstellen Sie eine leere Datei über die Befehlszeile


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


163
2018-01-14 19:03


Ursprung




Antworten:


Benutze die touch Befehl:

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

201
2018-01-14 19:06



Sie können verwenden touch newfile.txt oder eine andere Erweiterung (wenn Sie die Erweiterung angeben müssen). - gotqn
@gotqn für python touch newfile.py und für ruby ​​newfile.rb? - kouty
Aber falls newfile existiert bereits und ist dann nicht leer touch newfile wird dich mit einem verlassen nicht leer Datei. Vielleicht nicht was du wolltest. - Camille Goudeseune
@CamilleGoudeseune Ich denke, wenn newfile ist bereits vorhanden, touch Befehl wird nur Aktualisiere den Zeitstempel der Datei (was genau Befehl für) ohne den Inhalt der Datei zu bearbeiten. - C0deDaedalus
Du musst das nicht denken; das ist wahr! Aber es ist nicht das, was die Frage gestellt hat. - Camille Goudeseune


> newfile

Wird auch erstellen eine leere Datei. Wenn die Datei bereits existiert, wird es sein gekürzt (geleert) Um den Dateiinhalt zu behalten, verwenden Sie >> zum Anhängen wie in:

>> file

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

Bearbeiten: Wenn Sie keinen Inhalt eingeben müssen, ist dieser schneller:

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

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


74
2018-01-14 19:38



Das ist neu. Ist es bash-spezifisch? - Tshepang
Ich denke nicht. Jede Shell, die eine Umleitung des Ausgabestreams zu einer Datei zulässt, sollte dies unterstützen. Dies wird die Datei abschneiden, wenn sie bereits existiert. touch ist sicher zu verwenden, wenn Sie es nicht leeren möchten. - balki
Wow, ich denke, das nennt man das System betrügen - banarun


cat /dev/null > file1.ext 

Genau so gibt es auch einen anderen Weg

echo "" > file2.ext 

Der Unterschied ist, dass Datei1.ext null Bytes und Datei2.ext ein Byte ist. Sie können dies überprüfen

ls -l file*.*

12
2018-01-15 06:56



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


Verwenden vim Editor können Sie auch eine leere Datei erstellen.

vim filename

Dann speichern

:wq

7
2018-04-03 09:41



Nun, in diesem Fall kein Texteditor aber vim. - Nephente


Der Befehl

echo -n > file

erstellt eine leere Datei, wenn Ihre Version von echo unterstützt den Schalter -n.

Oder du könntest es benutzen printf

printf '' > file

2
2018-06-22 09:47





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

Im Grunde, Python-Implementierung von touch.

Wir können es damit kürzer machen:

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

0
2017-07-10 11:17