Como faço para criar um novo arquivo vazio em um script bash?

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 este 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 fornece um erro de que o arquivo não existe.

Comentários

Resposta

Use touch comm e. touch filename.txt.

Comentários

  • echo -n >file
  • cuidado – isso não esvaziará seu arquivo se ele já existir
  • Na verdade, tentei touch e " echo -n > arquivo " dentro do meu script bash, mas recebo um erro quando executo o script: " Esse arquivo não existe ou diretório " nessa linha. Alguém pode ajudar, por favor?
  • echo -n "" > filename esvaziará o arquivo se ele existir ou criará um arquivo se não ' não existe.

Resposta

Use o comando nulo (:) truque 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.)

Comentários

  • Se noclobber estiver definido, use o redirecionamento >| para derrubar, então :>| filea – documentado no manual
  • Apenas > filename.txt bastaria, sem necessidade do :. Ou >> filename.txt se não ' não quisermos jogá-lo no lixo se ele existir.
  • @ilkkachu embora a questão especifica Bash, usando : torna o script mais provável de realizar sua tarefa com outros shells, por exemplo Zsh.

Resposta

Você sempre 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: - 

Resposta

O caminho mais curto:

>filename 

Comentários

  • Melhor resposta. Não poderia ' ser mais curto.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *