Jag kör något Perl-skript från tredje part skrivet så att det kräver en utdatafil för utdataflaggan, -o
.
Tyvärr verkar skriptet kräva en verklig fil, det vill säga användare måste skapa en tom fil filename.txt
med 0 byte och sedan mata in den här tom fil på skriptkommandoraden
perl script1.pl -o filename.txt
Fråga: Hur skulle jag skapa en tom fil i ett bash-skript? Om man bara försöker perl script1.pl -o filename.txt
, skriptet ger ett fel att filen inte finns.
Kommentarer
-
touch filename.txt
- Möjlig duplikat av Hur skapar man en enkel .txt (text) -fil med terminal?
- se även Varför finns det inte ' något shell-kommando för att skapa filer?
Svar
Använd touch
comm och. touch filename.txt
.
Kommentarer
Svar
Använd kommandot null (:
) omdirigering (> filename
) trick (:>
), eftersom detta kommer att avkortas till noll eller skapa den namngivna filen.
$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea
(Detta misslyckas om skalet ställer in ett NOCLOBBER-alternativ.)
Kommentarer
- Om noclobber är inställt, använd omdirigeringen
>|
till clobber, så:>| filea
– dokumenterad i manualen - Bara
> filename.txt
skulle göra det, inget behov av:
. Eller>> filename.txt
om vi inte ' inte vill skräp det om det verkligen finns. - @ilkkachu även om frågan specificerar Bash, med
:
gör skriptet mer sannolikt att utföra sin uppgift med andra skal, t.ex. Zsh.
Svar
Du kan alltid använda perl också.
$ 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 kortaste vägen:
>filename
Kommentarer
- Bästa svaret. Kunde ' inte vara kortare.
echo -n >file
echo -n "" > filename
tömmer filen om den finns eller skapar en fil om den inte ' Det finns inte.