Minhas bandeiras e argumentos mais usados

Minhas bandeiras e argumentos mais usados


O comando CP no Linux tem algumas opções legais que estendem seu uso. A maioria dos usuários só cópia de baunilha e nunca se preocupa em explorar as bandeiras que o acompanham. Depois de experimentar alguns, percebi que existem algumas bandeiras que continuo usando para uma experiência melhor.

-r ou -r: cópia recursiva

Você pode usar o comando cp para copiar arquivos e diretórios. Por padrão, ele funciona apenas em arquivos. Se você tentar usá -lo com diretórios, receberá um erro que ignora a cópia do diretório.

cp dirA/ dirB/

É aqui que a bandeira -r entra em jogo. Ao usar o sinalizador -r, você também pode copiar diretórios e arquivos dentro deles.

cp -r dirA/ dirB/

Aqui, estamos copiando todo o diretório “dira/” para outro diretório chamado “dirb/”. Você notará que o próprio diretório “dira/” também foi copiado. Se você não quer isso e deseja apenas copiar o conteúdo dentro do diretório, precisará adicionar um ponto (.) Após a barra, assim:

cp -r dirA/. dirB/

Se você deseja apenas criar uma cópia no mesmo diretório, poderá passar um novo nome como argumento.

cp -r dirA/ dir-copy # copying the directory and renaming it
Copiando um diretório usando o comando CP no Linux usando o sinalizador -r.

-u: copie apenas quando a fonte é mais recente

Uma das bandeiras mais subestimadas para o comando CP é -u. Esta opção informa ao CP para copiar apenas um arquivo se o arquivo de origem for mais novo que o destino ou se o destino ainda não existir.

Imagine que você tem um diretório cheio de arquivos de projeto que está fazendo backup de outra pasta. A execução de uma cópia recursiva normal sempre substituirá todos os arquivos, mesmo os que não foram alterados. Isso é desperdiçado E/S e, dependendo do tamanho do projeto, pode diminuir consideravelmente as coisas.

Com -u, você pode executar o mesmo comando de cópia repetidamente e apenas os arquivos atualizados serão transferidos. Digamos que você tenha uma pasta “Relatórios/” que está sincronizando em “Backup/”:

cp -ru reports/ backup/
Uma série de comandos para demonstrar o sinalizador -u funciona com o comando CP no Linux.

Como visto na captura de tela acima, fiz um pequeno experimento que você também pode seguir. A primeira corrida copiará tudo. A segunda execução copiará apenas os arquivos que você tocou ou criou desde o último backup. Se nada mudou, o comando terminará quase instantaneamente.

-i: modo interativo

Se você se esquecer como eu, provavelmente executou o comando do CP sem pensar, pressione Enter e de repente percebe que acabou de substituir um arquivo que realmente não queria perder. Por padrão, o CP não solicitará confirmação. Ele apenas substituirá o arquivo de destino em silêncio. É aí que a bandeira -i é útil. Ele diz ao CP para pedir antes de substituir um arquivo. Se já existir um arquivo de destino, o CP solicitará uma pergunta simples como:

cp: overwrite 'file.txt'?

Neste ponto, você pode digitar ‘y’ para substituí -lo ou ‘n’ para pular. Aqui está um exemplo:

cp -i report1.txt reports/
# cp: overwrite 'reports/report1.txt'? n
cp -i report1.txt reports/
# cp: overwrite 'reports/report1.txt'? y
Copiando um arquivo usando o comando cp com o sinalizador interativo para proteger uma substituição de um arquivo.

Se “relatórios/relatórios1.txt” já existir, você será solicitado antes de substituí -lo. Sem -i, o arquivo seria substituído sem aviso prévio. Isso é particularmente útil ao copiar em locais como “/etc/” ou “/var/”, onde uma substituição errada pode causar problemas significativos. Caso você queira copiar vários arquivos e apenas alguns já existem no destino, permite que você decida caso a caso.

-v: modo detalhado

O sinalizador -v é bastante comum para comandos Linux. Ele permite o modo detalhado, que é útil ver o que acontece em segundo plano quando você executa um comando. Para o comando CP especificamente, o sinalizador -v mostra o que exatamente está copiando. Com -v, cada arquivo que é copiado é impresso no terminal no formato:

'source' -> 'destination'

Isso deixa claro o que está acontecendo nos bastidores. Vamos ver um exemplo:

cp -v report1.txt backup/

Para vários arquivos, você pode usar um curinga:

cp -v *.txt backup/
Copiando vários arquivos usando o comando cp no modo detalhado para ver quais estão sendo copiados.

Agora você tem uma confirmação de que cada arquivo realmente foi para onde você esperava. Quando você está copiando arquivos em lotes, o sinalizador detalhado fornece um log de progresso em execução. Também é útil pegar esses pequenos erros em caso de cópia fracassada.

-p: preservar atributos

Por padrão, o comando CP se concentra em obter o conteúdo de seus arquivos do ponto A ao ponto B. Mas, às vezes, os metadados, coisas como registro de data e hora, modos de arquivo e propriedade, são tão importantes quanto o próprio arquivo. É disso que se trata o sinalizador -P: preservar atributos.

Quando você adiciona -P, a CP preserva esses atributos. Sem -P, os arquivos copiados obtêm novos registros de data e hora e a propriedade padrão no destino. Com -p, eles permanecem “clones” dos originais em conteúdo e metadados. Vamos ver isso em ação.

cp -p config.cfg backup/
Copiando um arquivo com seus atributos preservados usando o comando CP e o sinalizador -p.

No caso de cópia recursiva:

cp -rp project/ backup/

Isso copiará todo o projeto/ diretório, garantindo que todos os arquivos mantenham seus atributos originais. Se você está arquivando arquivos, não deseja que todos mostrem a data de hoje. Preservar os registros de data e hora originais ajuda você a saber quando as coisas realmente mudaram.


Existem muito mais sinalizadores e argumentos para o comando CP. Você pode explorá -los em a manpra oficial. O conhecimento dessas opções de comando facilita muito mais a navegação de arquivos do Linux e o gerenciamento de arquivos do terminal.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima