Como crio um novo arquivo vazio em um script bash?

19

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.txtcom 0 bytes e inserir esse arquivo vazio na linha de comando do script

perl script1.pl -o filename.txt

Pergunta: Como eu criaria um arquivo vazio em um script bash? Se alguém simplesmente tentar perl script1.pl -o filename.txt, o script emitirá um erro dizendo que o arquivo não existe.

ShanZhengYang
fonte
11
touch filename.txt
Hschou #
Possível duplicata de Como criar um arquivo .txt (texto) simples usando o terminal?
31817 don_crissti

Respostas:

29

Use o touchcomando touch filename.txt.

MKT
fonte
8
echo -n >file
Hannu
8
tome cuidado - isso não esvaziará seu arquivo, se ele já existir #
johanvdw
6

Use o comando null ( :) redirect ( > filename) trick ( :>), 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.)

agitar
fonte
11
Se noclobber estiver definido, use o redirecionamento >|para clobber, então :>| filea- documentado no manual
glenn jackman
11
Apenas > filename.txtfaria, não há necessidade de o :. Ou >> filename.txtse não quisermos jogar fora, se existir.
21917 ilkkachu
2
@ilkkachu Embora a questão especifique Bash, o uso :do script aumenta a probabilidade de realizar sua tarefa com outros shells, por exemplo, Zsh.
Can-ned_food 19/02
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: -
Sergiy Kolodyazhnyy
fonte