Como eu crio um novo arquivo vazio em um script bash?

13

Estou executando algum script Perl de terceiros escrito de forma que exija um arquivo de saída para o sinalizador de saída, -o .

Infelizmente, o script parece exigir um arquivo real, ou seja, os usuários devem criar um arquivo vazio filename.txt com 0 bytes e, em seguida, inserir esse arquivo vazio na linha de comando do script

perl script1.pl -o filename.txt

Pergunta: Como eu criaria um arquivo vazio dentro de um script bash? Se alguém simplesmente tenta perl script1.pl -o filename.txt , o script dá um erro que o arquivo não existe.

    
por ShanZhengYang 08.02.2017 / 21:05

3 respostas

21

Use o comando touch . touch filename.txt .

    
por 08.02.2017 / 21:11
6

Use o truque de comando nulo ( : ) de redirecionamento ( > filename ) ( :> ), pois isso truncará para zero ou criará o arquivo nomeado.

$ echo foo > filea
$ :> filea
$ wc -c filea
       0 filea
$ rm filea
$ :> filea
$ wc -c filea
       0 filea

(Isso falhará se o shell definir uma opção NOCLOBBER).

    
por 08.02.2017 / 21:13
3

Você também pode usar perl também.

$ 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: -
    
por 08.02.2017 / 21:51