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.txtville gjort, ikke noe behov for:. Eller>> filename.txthvis 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 >fileecho -n "" > filenamevil tømme filen hvis den eksisterer eller opprette en fil hvis den ikke ' t eksisterer.