Qual é o objetivo do touch
comando? Eu sei que posso criar arquivos vazios com ele, mas também é o caso com echo -n
.
Caso contrário, por que alguém precisaria alterar os carimbos de data e hora de um arquivo? A menos que crie uma falsa impressão sobre a idade de um arquivo, não vejo outro uso, e este não é legítimo (do meu ponto de vista).
command
timestamps
touch
Quora Feans
fonte
fonte
echo -n > filename
, você pode executar o seguinte:>filename
Unless to create the false impression about the age of a file
. Não é necessária impressão falsa. E se você quiser alterar o horário da modificação? Pode ser útil em scripts. Esse script depende muito dotouch
comando e é muito conveniente e simples tê-lo assim.tar
(ou outros arquivadores) fazem quando extraem um arquivo. Geralmente, eles definem a hora da modificação do arquivo como a hora do arquivo morto, não a hora em que o arquivo foi extraído, e esse é um recurso desejável. Como é legítimo que um programa no modo de usuário crie carimbos de data / hora falsos, não há muito argumento por quetouch
(ou algum outro programa de linha de comando) não deve permitir isso com base em um argumento de linha de comando. Aprender C não torná-lo mais legítimo do que alguém escrevendo umsh
roteiro ;-)age
arquivo. Esse seria umcreation
registro de data e hora e não existe um registro de data e hora para arquivos no unix.Respostas:
Uma vantagem
touch
é que ele pode especificar carimbos de hora arbitrários, enquantoecho -n
sempre resultará no horário atual.Um exemplo de uso legítimo é atualizar um registro de data e hora de um arquivo de código-fonte, para que um programa como
make
o considere o arquivo de origem mais novo que seu objeto compilado e o reconstrua.Outros usos são criar arquivos que funcionem unicamente com base em sua existência
/etc/nologin
, por exemplo , que não permite logins, se existir. Eu também argumentaria quetouch myfile
é uma construção mais simples do queecho -n >> myfile
, além de ser mais curta para digitar.fonte
echo -n
, vejo que diz "não produza a nova linha à direita". Portanto, não vejo como isso pode criar um arquivo vazio. Você pode esclarecer por favor?echo -n
produzirá uma string vazia e, por si só, não faz nada. Redirecionar sua saída via>>
faz com que a saída vazia seja anexada a um arquivo. O redirecionamento fará com que o arquivo seja criado se o arquivo não existir.echo -n
um comando que não faz nada.echo -n
pode gerar a string "-n" sob algumas conchas. Se você realmente precisa de um comando que não faz nada:
outrue
é uma opção melhor, mas>> myfile
por si só também é uma maneira perfeitamente válida de criar o arquivo, se ele não existir. Tudo isso, é claro, suporta sua resposta de que você deve apenas usar "toque".A chamada de sistema subjacente (
utime
) é importante para vários utilitários, comotar
poder definir os carimbos de data e hora de um arquivo recém-copiado (sem tarar). Alguns utilitários de backup também podem ter a opção de redefinir a última hora de acesso dos arquivos que eles copiaram.Um uso legítimo de
touch
é criar um arquivo com um carimbo de data / hora específico. Esse arquivo de "referência" pode ser usado por comandos comofind
. Por exemplo, para encontrar todos os arquivos modificados mais recentemente que em 1 de novembro de 2013 (por exemplo, 01/11/2013) "fonte
201311010000
significa Nov1,2013? Existe um utilitário que me diga isso? Em outras palavras, como determino a entrada a ser tocada?20131101
pode ser dividida em2013-11-01
ou 1º de novembro de 2013. Você pode assumir que a0000
parte indica uma hora específica do dia, neste caso, 00 horas e 00 minutos. Ou você pode simplesmente olhar para a página de manualtouch
, que informa exatamente qual é o formato (consulte-t
).O
touch
objetivo principal do comando é manipular os registros de data e hora dos arquivos e criar arquivos.Exemplos
1. criando arquivos
NOTA: A
total 0
saída dels -l
está correta. Esta implementaçãols
mostra o número de blocos que estão sendo usados pelos arquivos quando eles estão listados. Você pode garantir esse fato adicionando a-s
opção als
. Isso listará os blocos em uso por cada arquivo. Aqui eu adicionei 2 caracteres para o arquivo1 e o arquivo2.Exemplo
2. informações de hora / data de um arquivo - comando stat
Podemos usar
touch
para manipular os vários carimbos de data e hora em um determinado arquivo.3. trecho da página do manual touch
4. manipulação do tempo de acesso
5. manipule o tempo de modificação
Você pode estar se perguntando sobre o horário da mudança (ctime). Isso não pode ser manipulado usando
touch
. Isso rastreia a hora em que qualquer um dos metadados foi tocado no arquivo. Consulte estas perguntas e respostas sobre perguntas e respostas para obter mais detalhes, intitulado: O que você pode fazer em um arquivo sem disparar o carimbo de data / hora "Alterar"? .fonte
ls -l
um diretório em que os arquivos têm tamanho 0 e nada mais existe ainda. Assim que você especificar um tamanho de arquivo, o total será exibido com a quantidade de blocos em uso pelos arquivos. Veja minhas atualizações, se não tiver certeza, adicionamos um exemplo.Além das outras duas respostas muito boas que você obteve, outro uso é, em suas palavras,
por exemplo, para uso em esquemas de backup . Você pode não atualizar um backup com um mais novo, pois eles são idênticos ou porque as alterações são irrelevantes em comparação com as despesas de atualização de um backup em, por exemplo, uma linha lenta para um host remoto. Para conseguir isso, você tem a opção simples de marcar o arquivo de backup com um carimbo de data / hora mais recente, não fingindo, mas declarando que o carimbo de data / hora de validade desse arquivo agora é diferente.
A impressão sobre a idade do arquivo agora é realmente falsa, mas seu significado é real e legítimo.
fonte
Um dos usos mais comuns de
touch
é - ou pelo menos costumava ser - desencadear uma reconstrução de código.As ferramentas de construção habituais -
make
e suas derivadas - tentam salvar o trabalho não recompilando / reconstruindo arquivos, a menos que um dos arquivos que os criou foi alterado - por exemplo, se um arquivo .o for mais recente que o .c fonte, geralmente é seguro presumir que a fonte C não foi alterada desde que foi compilada para produzir esse arquivo de objeto.Mas há momentos em que você deseja forçar algo a ser reconstruído. Você pode fazer uma modificação desnecessária em um de seus arquivos de origem, mas isso corre o risco de danificar acidentalmente algo. Em vez disso, você pode simplesmente
touch
usar o arquivo, fazendo com que ele pareça novo sem nenhum risco de alterar seu conteúdo - e isso seria suficiente para convencermake
que era hora de reconstruir tudo o que depende desse arquivo.Existem outros usos, mas historicamente esse foi o grande.
fonte
touch
é tão ruim quanto uma mudança manual. Para causar uma reconstrução, sugiro excluir os arquivos.o
de saída da fonte em questão.Eu trabalhei com pelo menos uma estrutura da Web (não me lembro qual) que no modo de desenvolvimento observou os arquivos de código-fonte em busca de alterações e recarregou o aplicativo quando isso aconteceu.
É claro que às vezes você queria recarregar depois de alterar algo que não estava assistindo, e nesse caso
touch
o arquivo de configuração principal fez o truque.Portanto, no caso geral, sempre que você desejar iniciar um processo acionado por alterações em um arquivo, sem realmente alterar o arquivo.
fonte
Uso legítimo do toque:
fonte
Um uso é corrigir o registro de data e hora de um arquivo que foi definido incorretamente.
Por exemplo, de qualquer maneira que você copia um arquivo (e de alguma maneira pode movê-lo), o novo arquivo tem um registro de data e hora do horário atual, em vez do registro de data e hora do arquivo original.
Geralmente, não é isso que se deseja. O toque pode "consertar" isso.
Outro uso é refletir uma modificação de arquivo que foi desfeita, restaurando o registro de data e hora do arquivo como era antes das operações "editar ... desfazer edição".
fonte
alias cp='cp --preserve=timestamps'
é mais adequado para mim na terra PC ...Uma diferença importante em relação ao que
things
gostaecho
(ou melhor ainda,> file
como mencionado por outros) é que o toque não esmagará o conteúdo.> file
esvaziará um arquivo.touch
não vou. Em vez de pensar em truques para evitar danos ao conteúdo, basta usar o toque! De qualquer forma, ele fará menos trabalho no kernel, porque funcionará apenas com os atributos do arquivo, sem perder tempo, preparando-se para uma abertura e, em seguida, executando um fechamento.Provavelmente, o toque pode alterar o registro de data e hora, mesmo que o arquivo esteja atualmente sob um bloqueio obrigatório ou consultivo ou em uma abertura exclusiva. Hmmm, nunca testei isso ou li sobre isso ...
fonte
>>
será acrescentado em vez de sobrescrito #Aqui está um - eu uso um programa de software chamado SageTV para gravar programas de TV - eles geralmente são gravados em MPEG-2, que não é um codec muito eficiente, mas também não é compatível com iPad / iPhone. Então, eu converto os arquivos para arquivos .mp4. Mas, ao reproduzir os arquivos, a SageTV espera que o registro de data e hora do arquivo seja quando o programa de TV for iniciado - caso contrário, estrague a linha do tempo do programa para que não seja fácil FF ou REW. Portanto, uso o touch para redefinir o registro de data e hora do arquivo .mp4 para que seja o mesmo que o arquivo original.
Isso é legítimo?
fonte
Freqüentemente você pode ter um processo que muda da ID do usuário, como da raiz -> outra coisa. O toque pode dar a chance de criar um arquivo em um local que somente a raiz pode tocar antes que o aplicativo inicie o logon como o outro usuário.
fonte
No trabalho, temos um arquivo de mapas digitais com mais de 15 anos. Esses mapas antigos são salvos em diversos formatos, como PostScript, EMF, PRN, hpgl2, pdf etc. que a maioria dos programas não entende. Ou você precisa de uma dúzia de programas diferentes para vê-los todos.
Para facilitar a pesquisa e a navegação fáceis de todos esses formatos diferentes, criamos versões jpeg dos mapas e, em seguida, usamos o touch para fazer com que o arquivo jpeg corresponda ao carimbo de data / hora do arquivo de origem original - geralmente anos depois que o original foi criado.
Agora podemos usar um único programa, como o Picasa, para ver toda a biblioteca e localizar trivialmente determinados períodos. Sem o toque, teríamos de adicionar metadados de data para cada imagem, provavelmente manualmente, e depois pesquisar essas strings ao procurar um período específico.
fonte
Ainda não o usei para esse fim, mas tenho um script que lê os arquivos e suas datas em um diretório e os lê para uso em uma página da Web. Se eu tiver que editar um, ele mudará sua data. Eu considerei que
touch
eles redefinissem sua ordem.fonte
Alguns scripts de inicialização comparam o registro de data e hora de um arquivo de configuração com seu próprio arquivo pid. O resultado decide se recarrega ou não o serviço em execução.
Se houver uma situação em que você não deseja alterar a configuração, mas deseja forçar o recarregamento, toque em ajudá-lo aqui.
fonte
Eu tenho um trabalho cron que obtém as alterações de um banco de dados que ocorreu entre a última execução do trabalho e a atual. Ele produz um arquivo XML das alterações que são processadas em um banco de dados diferente. Ele obtém o último tempo de execução do registro de data e hora no arquivo de saída XML. *
Se algo der errado no processamento do arquivo XML, convém repetir a execução a partir da data original e não da data mencionada no carimbo de data / hora do novo arquivo XML.
A maneira mais simples de fazer isso, em vez de editar os scripts chamados etc., é tocar no arquivo XML e forçar o carimbo de data / hora para ser a data que eu preciso.
Além disso, se eu começar de novo (sem arquivo de saída XML anterior), posso simular sua existência usando o touch.
[*] Antes que alguém aponte, percebo o horário em que o trabalho é iniciado e a gravação do arquivo XML deixa um intervalo de tempo de alguns minutos em que podem ocorrer alterações no banco de dados. O trabalho é executado no momento em que as alterações no banco de dados são extremamente improváveis. Essa é a minha desculpa e eu estou aderindo a ela :-)
fonte