Jeg kører et Perl-script fra tredjepart skrevet således, at det kræver en outputfil til outputflagget, -o
.
Desværre ser scriptet ud til at kræve en faktisk fil, dvs. brugere skal oprette en tom fil filename.txt
med 0 bytes og derefter indtaste denne tom fil på scriptkommandolinjen
perl script1.pl -o filename.txt
Spørgsmål: Hvordan opretter jeg en tom fil inden for et bash-script? Hvis man blot prøver perl script1.pl -o filename.txt
, scriptet giver en fejl om, at filen ikke findes.
Kommentarer
-
touch filename.txt
- Mulig duplikat af Hvordan oprettes en simpel .txt (tekst) fil ved hjælp af terminal?
- se også Hvorfor er der ' t der nogen shell-kommando til at oprette filer?
Svar
Brug touch
comm og. touch filename.txt
.
Kommentarer
Svar
Brug nul-kommandoen (:
) omdirigering (> filename
) trick (:>
), da dette afkortes til nul eller opretter den navngivne fil.
$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea
(Dette mislykkes, hvis skallen angiver en NOCLOBBER-indstilling.)
Kommentarer
- Hvis noclobber er indstillet, skal du bruge omdirigering
>|
til at clobber, så:>| filea
– dokumenteret i manualen - Bare
> filename.txt
ville gøre, intet behov for:
. Eller>> filename.txt
hvis vi ikke ' ikke ønsker at kaste det, hvis det tilfældigvis eksisterer. - @ilkkachu selvom spørgsmålet angiver Bash, ved hjælp af
:
gør scriptet mere sandsynligt at udføre sin opgave med andre skaller f.eks. Zsh.
Svar
Du kan altid også bruge perl.
$ 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 vej:
>filename
Kommentarer
- Bedste svar. Kunne ' ikke være kortere.
echo -n >file
echo -n "" > filename
tømmer filen, hvis den findes, eller opretter en fil, hvis den ikke ' t eksisterer.