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
-
touch filename.txt
- Possível duplicata de Como criar um arquivo .txt (texto) simples usando o terminal?
- veja também Por que não ' existe algum comando shell para criar arquivos?
Resposta
Use touch
comm e. touch filename.txt
.
Comentários
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.
echo -n >file
echo -n "" > filename
esvaziará o arquivo se ele existir ou criará um arquivo se não ' não existe.