AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 21556
Accepted
NES
NES
Asked: 2011-01-15 11:03:10 +0800 CST2011-01-15 11:03:10 +0800 CST 2011-01-15 11:03:10 +0800 CST

Como criar um arquivo vazio a partir da linha de comando

  • 772

Como posso criar um arquivo vazio a partir da linha de comando?

command-line
  • 6 6 respostas
  • 880710 Views

6 respostas

  • Voted
  1. Best Answer
    Isaiah
    2011-01-15T11:06:09+08:002011-01-15T11:06:09+08:00

    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
    
    • 279
  2. balki
    2011-01-15T11:38:36+08:002011-01-15T11:38:36+08:00
    > 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 que o arquivo exista, o conteúdo permanecerá intocado.

    Edit : Se você não tiver nenhum conteúdo para digitar, este é mais rápido:

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

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

    • 91
  3. indianwebdevil
    2011-01-15T22:56:40+08:002011-01-15T22:56:40+08:00
    cat /dev/null > file1.ext 
    

    a maneira exata também há outra maneira

    echo "" > file2.ext 
    

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

    ls -l file*.*
    
    • 16
  4. nrider
    2012-04-04T01:41:26+08:002012-04-04T01:41:26+08:00

    Usando vimo editor, você também pode criar um arquivo vazio.

    vim filename
    

    Em seguida, salve

    :wq
    
    • 9
  5. A.B.
    2015-06-23T01:47:40+08:002015-06-23T01:47:40+08:00

    O comando

    echo -n > file
    

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

    Ou você poderia usarprintf

    printf '' > file
    
    • 3
  6. Sergiy Kolodyazhnyy
    2017-07-11T03:17:00+08:002017-07-11T03:17:00+08:00

    Em geral, criar qualquer arquivo 1 regular no Linux envolve open(2), openat(2)ecreat(2) chamadas de sistema (e especificamente com O_CREATsinalizadores). Isso significa que se você chamar qualquer utilitário de linha de comando que faça essas chamadas de sistema, poderá criar um novo arquivo vazio.

    Mais comumente, o novo nome de arquivo é criado com algo assim:

    • touch /tmp/new_file
    • : > /tmp/new_file
    • true > /tmp/new_file
    • > /tmp/new_file(somente shell bash)

    touch é um utilitário autônomo. Sua finalidade original é atualizar o tempo de acesso e modificação de um arquivo, porém se o arquivo não existir - ele será criado. Observe também que um nome de arquivo -é tratado especialmente, portanto, se você quiser criar um arquivo chamado literalmente -, precisará colocá-lo entre aspas simples ou duplas.

    Por outro lado, >é um operador de redirecionamento de shell para stdout stream . O >operador chama especificamente a chamada do openat()sistema com O_WRONLY|O_CREAT|O_TRUNC sinalizadores. Isso significa que, se o nome do arquivo não existir - ele será criado e, se existir - os dados serão truncados (e, portanto, desaparecerão, portanto, >devem ser usados ​​com cuidado). Na maioria dos shells hoje em dia trueou :é um built-in , fazer isso : > /tmp/new_fileserá mais eficiente, embora marginalmente comparado ao touch /tmp/new_file.

    Mas é claro que não para por aí. Como mencionado, qualquer coisa que possa executar open(), openat()e create()syscalls criará um arquivo. Assim, podemos fazer:

    • true|dd of=/tmp/newfile
    • truncate --size 0 /tmp/new_filename.txt
    • cp /dev/null /tmp/null_file
    • true|tee /tmp/some_other_file
    • mktempou tempfile(para criar arquivos temporários que não precisam existir entre as reinicializações!)

    Obviamente, todos os utilitários mencionados acima não criam arquivos exclusivamente. Mas eles realizam o syscall necessário e isso nos permite adaptar os comandos.


    É claro que, no nível de programação ou script, podemos querer criar um arquivo também, especialmente para fins de eficiência (porque chamar comandos externos, como touchde um script Perl ou Python, exigirá recursos adicionais).

    Python one-liner:

    $ 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
    

    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 
    

    E em Perl:

    $ perl -e 'open(my $fh,">","/tmp/perlfile")'
    

    1 Outros tipos de arquivos, como hard/soft links, caracteres ou dispositivos especiais de bloco, diretório, pipes nomeados ou soquetes requerem syscalls totalmente diferentes.

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Que comando preciso para descompactar/extrair um arquivo .tar.gz?

    • 8 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Marko Smith

    Como posso adicionar um usuário como um novo sudoer usando a linha de comando?

    • 7 respostas
  • Marko Smith

    Alterar permissões e propriedade da pasta

    • 9 respostas
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    EmmyS Que comando preciso para descompactar/extrair um arquivo .tar.gz? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve