trilha / arco 2 · mexer em arquivo
o que é mv e o que ele faz
você moveu o relatório para o arquivo morto e deu tudo certo. no dia seguinte, o de ontem tinha sumido. o mv não tem lixeira, e não pergunta antes de pôr um arquivo por cima do outro.
em poucos minutos: o que o mv faz, por que mover é quase de graça, e o nome de destino que apaga o que já existia. a pílula fica no final.
a aula já funciona: lê, treina no terminal e faz o quiz.
escolhe a camada
em uma frase
é trocar a etiqueta da gaveta de lugar. a gaveta não muda, e se já havia uma etiqueta igual no destino, a velha vai embora.
para quem está começando
muda o nome de um arquivo, ou move o arquivo para dentro de uma pasta. o mesmo comando faz as duas coisas.
a fonte da verdade
o mv pede ao kernel para trocar o nome na pasta. no mesmo disco, só o nome muda: o inode é o mesmo, por isso é instantâneo. entre discos, ele copia e depois apaga o original, e o inode muda.
o número por trás do nome
o ls -i mostra o inode antes e depois. mesmo número: foi só renomear. número novo: foi copiar e apagar. o /dev/shm é outro sistema de arquivos, serve para ver isso.
agora você
um linux de verdade, só seu, apagado quando você sai.
renomeia o atual.txt para oficial.txt e compara o número do inode antes e depois.
ls -i atual.txt && mv atual.txt oficial.txt && ls -i oficial.txta pasta arquivo-morto já tem um relatorio.txt com o texto importante. você move o relatorio.txt da sua home para lá. o que acontece com o antigo?
agora com -i, que pergunta antes. tenta mover o rascunho.txt por cima do relatorio.txt que está no arquivo-morto, e responde n.
mv -i rascunho.txt arquivo-morto/relatorio.txto mesmo movimento com -n, que não sobrescreve. depois confere que o rascunho.txt continua onde estava.
mv -n rascunho.txt arquivo-morto/relatorio.txt; ls rascunho.txtagora move o rascunho.txt para /dev/shm, que é outro sistema de arquivos, e compara o inode.
ls -i rascunho.txt && mv rascunho.txt /dev/shm/ && ls -i /dev/shm/rascunho.txt
cuidado: mv sem a barra no fim renomeia
o arquivo ~/arquivar.sh guarda o ~/entrada/relatorio.csv do dia na pasta ~/arquivo. só que a pasta ~/arquivo não existe, e o destino do mv está sem a barra no fim. sem a barra, o mv entende que arquivo é um nome novo. o relatório vira um arquivo chamado arquivo, e o do dia seguinte passa por cima. passo 1: veja o estrago. rode ~/arquivar.sh e depois ls -l ~/arquivo. repare no traço no começo da linha: é um arquivo comum, não uma pasta. para trazer tudo de volta, digite restaurar-entrada (só esse nome, sem ./ e sem .sh). passo 2: conserte o script. abra com nano ~/arquivar.sh. para salvar: ctrl+o e enter. para sair: ctrl+x. passo 3: teste. rode restaurar-entrada, depois ~/arquivar.sh, e confira com ls -l ~/arquivo que agora é uma pasta com o relatorio.csv dentro (ou que o script parou com erro e o relatório continua em ~/entrada).
a pílula
mv a b | renomeia, ou move para a pasta b |
mv -i a b | pergunta antes de sobrescrever |
mv -n a b | pula se já existe |
mv para nome existente apaga o antigo.