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
-
touch filename.txt
- Mögliches Duplikat von Wie erstelle ich eine einfache TXT- (Text-) Datei mit dem Terminal?
iehe auch Warum gibt es ' keinen Shell-Befehl zum Erstellen von Dateien?
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.