patch [opções] [arquivo original] [arquivo patch]
Descrição
Este comando atualiza um arquivo usando as diferenças geradas pelo comando diff.
Algumas opções do comando
- -R ou −−reverse: assume que, na criação do patch, os arquivos originais ao serem comparados estavam em posições trocadas.
- -v ou −−version: informa a versão do comando.
- −−help : mostra opções do comando.
Exemplo
- Suponha que o arquivo arq1 possui o conteúdo abaixo
1 teste
2 unirio
4 ccet
6 Linux
7 Brasil
enquanto o arquivo arq2 tem
1 teste
2 unirio
3 BSI
6 Linux
7 Rio de Janeiro
Vamos usar o comando diff para verfificar a diferença de arq2 em relação a arq1.
diff arq1 arq2 > arq_patch
Neste caso, o arquivo de saída, arq_patch, possui
3c3
< 4 ccet
−−−
> 3 BSI
5c5
< 7 Brasil
−−−
> 7 Rio de Janeiro
Agora podemos atualizar um dos arquivos, arq1 ou arq2, usando arq_patch.
- Para atualizar o arquivo arq1, basta digitar
patch arq1 arq_patch
O sitema responderá
patching file arq1
e o conteúdo de arq1 passará a ser igual ao de arq2.
- Para atualizar o arquivo arq2, basta digitar
patch arq2 arq_patch
Como o arquivo gerado pelo comando diff usou arq1 como base, será perguntado se deve considerar alteração no sentido inverso.
patching file arq2
Reversed (or previously applied) patch detected! Assume -R? [n] y
Como resultado, o conteúdo de arq2 passará a ser igual ao de arq1. Para se obter o mesmo resultado, pode-se também entrar com o comando
patch -R arq2 arq_patch
- É possível também usar o pipe para juntar os comandos diff e patch em uma só linha.
diff arq1 arq2 | patch arq1
ou
diff arq1 arq2 | patch -R arq2