Wie erstelle ich eine neue leere Datei in einem Bash-Skript?

Ich führe ein Perl-Skript eines Drittanbieters aus, das so geschrieben ist, dass eine Ausgabedatei für das Ausgabeflag -o.

Leider scheint das Skript eine tatsächliche Datei zu erfordern, dh Benutzer müssen eine leere Datei filename.txt mit 0 Bytes erstellen und diese dann eingeben leere Datei in der Skriptbefehlszeile

perl script1.pl -o filename.txt 

Frage: Wie würde ich eine leere Datei in einem Bash-Skript erstellen? Wenn man einfach gibt das Skript den Fehler aus, dass die Datei nicht vorhanden ist.

Kommentare

Antwort

Verwenden Sie touch comm und. touch filename.txt.

Kommentare

  • echo -n >file
  • Vorsicht – dies leert Ihre Datei nicht, wenn sie bereits vorhanden ist.
  • Eigentlich habe ich Touch und " echo -n Datei " in meinem Bash-Skript, aber beim Ausführen des Skripts wird eine Fehlermeldung angezeigt: " Keine solche Datei oder Verzeichnis " in dieser Zeile. Kann mir bitte jemand helfen?
  • echo -n "" > filename leert die Datei, falls vorhanden, oder erstellt eine Datei, wenn dies nicht der Fall ist ' t existiert.

Antwort

Verwenden Sie den Befehl null (:) Trick umleiten (> filename) (:>), da dies auf Null gekürzt wird oder die benannte Datei erstellt wird.

$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea 

(Dies schlägt fehl, wenn die Shell eine NOCLOBBER-Option festlegt.)

Kommentare

  • Wenn noclobber gesetzt ist, verwenden Sie die Umleitung >| zu clobber, also :>| filea – dokumentiert im Handbuch
  • Nur > filename.txt würde ausreichen, ohne dass die : erforderlich wäre. Oder >> filename.txt, wenn wir ' es nicht in den Papierkorb werfen möchten, wenn es tatsächlich existiert.
  • @ilkkachu obwohl In der Frage wird Bash angegeben. Die Verwendung von : erhöht die Wahrscheinlichkeit, dass das Skript seine Aufgabe mit anderen Shells erfüllt, z Zsh.

Antwort

Sie können auch immer Perl verwenden.

$ stat filename.txt stat: cannot stat "filename.txt": No such file or directory $ perl -e "open($fh,">","filename.txt") or die $!;close($fh)" $ stat filename.txt File: "filename.txt" Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 280728 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ xieerqi) Gid: ( 1000/ xieerqi) Access: 2017-02-08 13:51:01.479121995 -0700 Modify: 2017-02-08 13:51:01.479121995 -0700 Change: 2017-02-08 13:51:01.479121995 -0700 Birth: - 

Antwort

Der kürzeste Weg:

>filename 

Kommentare

  • Beste Antwort. ' könnte nicht kürzer sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.