Spouštím nějaký Perl skript jiného výrobce napsaný tak, že vyžaduje výstupní soubor pro výstupní příznak, -o
.
Bohužel se zdá, že skript vyžaduje skutečný soubor, to znamená, že uživatelé musí vytvořit prázdný soubor filename.txt
s 0 bajty a poté jej zadat prázdný soubor na příkazovém řádku skriptu
perl script1.pl -o filename.txt
Otázka: Jak bych vytvořil prázdný soubor v bash skriptu? Pokud se člověk jednoduše pokusí perl script1.pl -o filename.txt
skript uvádí chybu, že soubor neexistuje.
Komentáře
-
touch filename.txt
- Možný duplikát Jak vytvořit jednoduchý .txt (textový) soubor pomocí terminálu?
- viz také Proč ' neexistuje žádný příkaz prostředí pro vytváření souborů?
Odpověď
Použijte touch
comm a. touch filename.txt
.
Komentáře
Odpověď
Použijte příkaz null (:
) přesměrování (> filename
) trik (:>
), protože to zkrátí na nulu nebo vytvoří pojmenovaný soubor.
$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea
(To se nezdaří, pokud shell nastaví možnost NOCLOBBER.)
Komentáře
- Pokud je nastaven noclobber, použijte přesměrování
>|
na clobber, takže:>| filea
– dokumentováno v příručce - Jen
> filename.txt
by to stačilo, není třeba:
. Nebo>> filename.txt
pokud jej ' nechceme vyhodit do koše, pokud by náhodou existoval. - @ilkkachu otázka specifikuje Bash, použití
:
zvyšuje pravděpodobnost, že skript splní svůj úkol s jinými shelly, např. Zsh.
Odpověď
Vždy můžete také použít 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: -
Odpověď
Nejkratší cesta:
>filename
Komentáře
- Nejlepší odpověď. Nelze ' být kratší.
echo -n >file
echo -n "" > filename
vyprázdní soubor, pokud existuje, nebo vytvoří soubor, pokud to ' neexistují.