Jak vytvořím nový prázdný soubor v bash skriptu?

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

Odpověď

Použijte touch comm a. touch filename.txt.

Komentáře

  • echo -n >file
  • dávejte pozor – tento soubor se nevyprázdní, pokud již existuje
  • Vlastně jsem zkusil touch a " echo -n > soubor " uvnitř mého bash skriptu, ale při spuštění skriptu se mi zobrazí chyba: " Žádný takový soubor nebo adresář " na tomto řádku. Může někdo pomoci, prosím?
  • echo -n "" > filename vyprázdní soubor, pokud existuje, nebo vytvoří soubor, pokud to ' neexistují.

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ší.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *