Uso de toque e vi?

54

Existe a vantagem de criar um arquivo com toque antes da edição, como:

touch foo
vi foo

versus acessar o editor imediatamente? Como:

vi foo

Eu vejo alguns tutoriais usando o antigo ( touch then vi ).

    
por Fawix 02.06.2016 / 23:48

11 respostas

111

touch ing o arquivo primeiro confirma que você realmente tem a capacidade de criar o arquivo, ao invés de perder tempo em um editor apenas para descobrir que o sistema de arquivos é somente leitura ou algum outro problema.

    
por 03.06.2016 / 00:04
23

Além das respostas dadas, uma vantagem do toque é que qualquer outro usuário / terminal que edite o mesmo arquivo enquanto você o tocou, receberá um aviso quando tentar salvar as alterações.

WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?

Isso os alertaria mesmo que você não tenha feito nenhuma alteração e apenas tenha tocado no arquivo.

    
por 03.06.2016 / 12:19
18

Além da resposta aceita:

Vale a pena notar que touch é usado para atualizar registros de data e hora de arquivos. Se você usar touch em um arquivo que existe, ele atualizará o registro de data e hora dos arquivos para a data e hora atuais. Se o arquivo não existir, ele cria um arquivo vazio com a data e a hora atuais como o registro de data e hora.

vi , por outro lado, não cria um novo arquivo, a menos que você escreva nele.

Por exemplo, se eu digitei vi test.txt , digitei algumas notas e digitei :q! ; test.txt não existiria.

    
por 03.06.2016 / 00:11
6

Sem touch , um novo arquivo não existirá até que você informe vi para escrevê-lo.

Considere um sistema multiusuário (talvez você esteja em um sistema de arquivos montado em rede, compartilhado por muitos sistemas, cada um com muitos usuários). A execução de touch garantirá que você tenha o arquivo (e que possa gravar nele) e até atualize o registro de data e hora. Outro usuário que deseja criar esse arquivo verá que você é o proprietário. Se já existir e outro usuário quiser excluí-lo ou substituí-lo, ele verá que ele foi modificado recentemente e talvez pense duas vezes.

    
por 04.06.2016 / 00:02
3

Não há benefício. vi criará um arquivo se não existir.

    
por 03.06.2016 / 00:03
3

Não há benefício para touch ing primeiro; vi criará o arquivo se ele não existir.

A resposta aceita diz que você pode escrever lá antes de perder tempo em um editor. É verdade, mas agora você estará perdendo tempo digitando touch todas as vezes. Não ser capaz de escrever em algum lugar é bastante excepcional em comparação com a frequência com que ele irá funcionar (contanto que você se lembre de sudo para arquivos fora de seu diretório home ou /tmp , ou esteja logado como root).

Basta abrir o editor e fazer o que quiser, depois tentar salvar o arquivo. Se não funcionar, mesmo com :w! , salve-o em outro lugar ( :w ~/asdf ) e corrija o problema. Uma vez corrigido, você pode copiar o conteúdo do arquivo do arquivo temporário para o original: cat ~/asdf > /mnt/example.txt && rm ~/asdf . O motivo pelo qual usamos cat em vez de mv ou cp é porque isso preserva todos os atributos e permissões de arquivos.

Além disso, para um uso mais avançado da linha de comando, você pode usar background vi com Ctrl + Z enquanto corrige o problema (ou use :suspend , ou :sus ) e, finalmente, fg novamente para executar o comando de gravação.

Editar: postagem aprimorada em resposta aos comentários de / u / G-Man . Obrigado!

    
por 04.06.2016 / 13:21
1

vi é um editor de texto visual (vi = visual) É visual comparado a "ed" de qualquer maneira, o que permite que você veja e altere uma linha de texto de cada vez.

O comando touch atualiza o registro de data e hora em um arquivo existente ou cria um novo arquivo se o arquivo ainda não existir. É bom para testar coisas que são altamente dependentes de timestamps.

Agora, se o seu arquivo é um arquivo de texto, ou ainda não existe, abri-lo com o vi e, em seguida, emitir o comando :wq para vi teria o mesmo resultado que tocar esse arquivo. Essa é a única maneira de os dois comandos serem parecidos.

    
por 03.06.2016 / 12:26
0

O vi é usado para editar um arquivo como usuário, enquanto o toque pode definir o registro de data e hora e é usado principalmente em scripts e assim por diante.

Outra maneira de criar um arquivo é:

>newfile.txt
    
por 03.06.2016 / 11:57
0

Por man page of touch, seu principal trabalho é alterar os timestamps de arquivos.
Ofc também está criando o arquivo com o timestamp atual e então você pode editar o arquivo.

VI é editor de texto que faz o que diz editar texto aberto, salvar, editar arquivo etc.

Tudo é sabor de usuário e habbit: toque em seguida vi ou vi arquivo.txt mesma coisa cor diferente.

    
por 04.06.2016 / 13:52
0

Especificamente para uso com vi , não é necessário criar o arquivo antes de editá-lo: vi pode ser usado para criar e salvar um novo arquivo. No entanto, há contextos de chamada em que o arquivo precisa existir. Por exemplo, no meu sistema (OS X) eu posso lançar um editor de GUI apropriado (determinado pelo tipo de arquivo) assim:

open foo.txt

Isso abriria foo.txt no TextEdit, ou no emacs, ou o que quer que eu tenha especificado como meu editor de escolha para arquivos de texto, e desanexará o processo para que eu receba o prompt imediatamente. ( open bar.py pode abri-lo em IDLE, o editor python, etc.) Ou eu posso solicitar explicitamente o emacs:

open -a emacs foo.txt

Mas open requer que o arquivo já exista, caso contrário, gera um erro. Então eu tive que definir emacs para ser a seguinte função shell, que me permite escrever emacs foo para lançar a emacs GUI mesmo se foo não existir.

function emacs () 
{ 
    if [ -n "$1" -a ! -e "$1" ]; then
        /usr/bin/touch "$1";
    fi;
    open -a emacs "$@"
}
    
por 05.06.2016 / 19:56
0

touch comando altera a data e a hora de um arquivo com o carimbo de data / hora atual.
Se o arquivo não existir, ele cria um novo arquivo com data e hora.

vi editor é usado para editar arquivos se o arquivo não existir, ele cria um novo arquivo, a menos que não salvemos o arquivo.

    
por 03.09.2016 / 02:51

Tags