Jeg kjører et Perl-skript fra tredjeparter skrevet slik at det krever en utdatafil for utdataflagget, -o
.
Dessverre ser skriptet ut til å kreve en faktisk fil, det vil si at brukerne må opprette en tom fil filename.txt
med 0 byte og deretter legge inn dette tom fil på skriptkommandolinjen
perl script1.pl -o filename.txt
Spørsmål: Hvordan oppretter jeg en tom fil i et bash-skript? Hvis man bare prøver perl script1.pl -o filename.txt
, skriptet gir en feil om at filen ikke eksisterer.
Kommentarer
-
touch filename.txt
- Mulig duplikat av Hvordan lage en enkel .txt (tekst) fil ved hjelp av terminal?
- se også Hvorfor er det ikke ' det er noen skallkommando for å lage filer?
Svar
Bruk touch
comm og. touch filename.txt
.
Kommentarer
Svar
Bruk null-kommandoen (:
) omdirigering (> filename
) triks (:>
), da dette blir avkortet til null eller opprettet den navngitte filen.
$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea
(Dette mislykkes hvis skallet setter et NOCLOBBER-alternativ.)
Kommentarer
- Hvis noclobber er angitt, bruk omdirigering
>|
til clobber, så:>| filea
– dokumentert i manualen - Bare
> filename.txt
ville gjort, ikke noe behov for:
. Eller>> filename.txt
hvis vi ikke ' ikke vil kaste den hvis den tilfeldigvis eksisterer. - @ilkkachu selv om spørsmålet spesifiserer Bash, og bruker
:
gjør skriptet mer sannsynlig å utføre oppgaven med andre skall, f.eks. Zsh.
Svar
Du kan alltid bruke perl også.
$ 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: -
Svar
Den korteste veien:
>filename
Kommentarer
- Beste svaret. Kunne ikke ' ikke være kortere.
echo -n >file
echo -n "" > filename
vil tømme filen hvis den eksisterer eller opprette en fil hvis den ikke ' t eksisterer.