Como criar um arquivo vazio na linha de comando

190

Como posso criar um arquivo vazio na linha de comando?

NES
fonte

Respostas:

237

Use o touchcomando:

The touch utility sets the modification and access times of files to the
current time of day. If the file doesn't exist, it is created with
default permissions.

Exemplo:

touch newfile
Isaías
fonte
14
Você também pode usar touch newfile.txtou alguma outra extensão (se precisar especificar a extensão).
gotqn
@gotqn para python touch newfile.py e para ruby ​​newfile.rb?
Kouty
3
Mas se newfilejá existe e não está vazio, touch newfilevocê será deixado com um arquivo não vazio . Talvez não seja o que você queria.
Camille Goudeseune
@CamilleGoudeseune Eu acho que, se newfilejá existir, o touchcomando atualizará apenas o registro de data e hora do arquivo (que é exatamente o que comando) sem editar o conteúdo do arquivo.
C0deDaedalus 13/03/19
Você não precisa pensar isso; é verdade! Mas não é o que a pergunta fez.
Camille Goudeseune 13/0318
81
> newfile

Também criará um arquivo vazio. Se o arquivo já existir, ele será truncado (esvaziado). Para manter o conteúdo do arquivo, use >>para anexar como em:

>> file

Mesmo se o arquivo existir, o conteúdo permanecerá intocado.

Editar : se você não tem nenhum conteúdo para digitar, este é mais rápido:

user@host$ :> newfile
user@host$ :>> new_or_existing_file

Nota. :é o comando aqui. Não faz parte do prompt.

balki
fonte
Agora isso é novo. É específico do bash?
tshepang
Acho que não. Qualquer shell que permita o redirecionamento do fluxo de saída para um arquivo deve suportar isso. Isso truncará o arquivo se ele já existir. o toque é seguro se você não quiser esvaziá-lo.
balki
Wow agora eu acho que isso é chamado de enganar o sistema
banarun
12
cat /dev/null > file1.ext 

da maneira exata, há também outra maneira

echo "" > file2.ext 

A diferença é que file1.ext terá zero bytes e file2.ext teria um byte. Você pode verificar isso

ls -l file*.*
indianwebdevil
fonte
10
Não, 'echo "">' não cria um arquivo vazio, ele cria um arquivo contendo uma nova linha. Se, por algum motivo, você quiser usar echo para criar um arquivo vazio, precisará usar 'echo -n "">' ou simplesmente 'echo -n>'
andol
7

Usando o vimeditor, você também pode criar um arquivo vazio.

vim filename

Então salve

:wq
nrider
fonte
Bem, neste caso, não qualquer editor de texto, mas vim.
Nephente 4/10
2

O comando

echo -n > file

cria um arquivo vazio, se sua versão do echosuporta a opção -n.

Ou você poderia usar printf

printf '' > file
AB
fonte
0

One-liner do Python:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

Basicamente, implementação python de touch.

Podemos torná-lo mais curto com isso:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 
Sergiy Kolodyazhnyy
fonte