2.4 Lição 1
Certificação: |
Linux Essentials |
---|---|
Versão: |
1.6 |
Tópico: |
2 Como se orientar em um sistema Linux |
Objetivo: |
2.4 Criar, mover e remover arquivos |
Lição: |
1 de 1 |
Introdução
Esta lição aborda o gerenciamento de arquivos e diretórios no Linux usando ferramentas de linha de comando.
Um arquivo é uma coleção de dados com um nome e um conjunto de atributos. Se, por exemplo, você transferisse algumas fotos de seu telefone para um computador e lhes desse nomes descritivos, você teria uma porção de arquivos de imagem no computador. Esses arquivos têm atributos, como a data e hora em que o arquivo foi acessado ou modificado pela última vez.
Um diretório é um tipo especial de arquivo usado para organizar arquivos. Uma boa maneira de pensar em diretórios é compará-los às pastas suspensas usadas para organizar papéis em um gaveteiro metálico. Porém, ao contrário das pastas de documentos em papel, podemos facilmente colocar diretórios dentro de outros diretórios.
A linha de comando é a maneira mais eficaz de gerenciar arquivos em um sistema Linux. As ferramentas da linha de comando e do shell têm recursos que tornam o uso da linha de comando mais rápido e fácil do que num gerenciador de arquivos gráfico.
Nesta seção, usaremos os comandos ls
, mv
, cp
, pwd
, find
, touch
, rm
, rmdir
, echo
, cat
e mkdir
para gerenciar e organizar arquivos e diretórios.
Maiúsculas e minúsculas
Ao contrário do Microsoft Windows, os nomes de arquivos e diretórios nos sistemas Linux diferenciam maiúsculas de minúsculas. Isso significa que os nomes /etc/
e /ETC/
designam diretórios diferentes. Experimente os seguintes comandos:
$ cd / $ ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr $ cd ETC bash: cd: ETC: No such file or directory $ pwd / $ cd etc $ pwd /etc
O pwd
mostra o diretório em que você está no momento. Como vemos, tentar mudar para /ETC
não funcionou, pois esse diretório não existe. Mas quando mudamos para o diretório /etc
, que existe, a operação foi bem-sucedida.
Criando diretórios
O comando mkdir
é usado para criar diretórios.
Vamos criar um novo diretório dentro do nosso diretório pessoal:
$ cd ~ $ pwd /home/user $ ls Desktop Documents Downloads $ mkdir linux_essentials-2.4 $ ls Desktop Documents Downloads linux_essentials-2.4 $ cd linux_essentials-2.4 $ pwd /home/emma/linux_essentials-2.4
Ao longo de toda esta lição, todos os comandos serão dados neste diretório ou em um de seus subdiretórios.
Para retornar facilmente ao diretório da lição a partir de qualquer outra posição em seu sistema de arquivos, use o comando:
$ cd ~/linux_essentials-2.4
O shell interpreta o caracter ~
como seu diretório inicial (home).
Quando estiver no diretório da lição, crie mais alguns diretórios para usar nos exercícios. Podemos adicionar todos os nomes de diretório, separados por espaços, ao mkdir
:
$ mkdir creating moving copying/files copying/directories deleting/directories deleting/files globs mkdir: cannot create directory ‘copying/files’: No such file or directory mkdir: cannot create directory ‘copying/directories’: No such file or directory mkdir: cannot create directory ‘deleting/directories’: No such file or directory mkdir: cannot create directory ‘deleting/files’: No such file or directory $ ls creating globs moving
Observe a mensagem de erro e que apenas moving
, globs
e creating
foram criados. Os diretórios copying
e deleting
ainda não existem. O mkdir
, por padrão, não cria um diretório dentro de um diretório que não existe. A opção -p
ou --parents
instrui o mkdir
a criar diretórios pai caso eles não existam. Experimente o mesmo comando mkdir
com a opção -p
:
$ mkdir -p creating moving copying/files copying/directories deleting/directories deleting/files globs
Desta vez, não apareceu nenhuma mensagem de erro. Vamos ver quais diretórios existem agora:
$ find . ./creating ./moving ./globs ./copying ./copying/files ./copying/directories ./deleting ./deleting/directories ./deleting/files
O programa find
é geralmente usado para procurar arquivos e diretórios, mas quando não definimos nenhuma opção, ele mostra uma lista de todos os arquivos, diretórios e subdiretórios do seu diretório atual.
Tip
|
Ao listar o conteúdo de um diretório com |
Criando arquivos
Normalmente, os arquivos são criados pelos programas que trabalham com os dados armazenados nos arquivos. Um arquivo vazio pode ser criado usando o comando touch
. Se executarmos o touch
em um arquivo existente, o conteúdo do arquivo não será alterado, mas o registro de data e hora de modificação do arquivo será atualizado.
Execute o seguinte comando para criar alguns arquivos para a lição de globbing:
$ touch globs/question1 globs/question2012 globs/question23 globs/question13 globs/question14 $ touch globs/star10 globs/star1100 globs/star2002 globs/star2013
Em seguida, vamos verificar se todos os arquivos existem no diretório globs
:
$ cd globs $ ls question1 question14 question23 star1100 star2013 question13 question2012 star10 star2002
Viu como o touch
criou os arquivos? Podemos visualizar o conteúdo de um arquivo de texto com o comando cat
. Experimente em um dos arquivos que acabamos de criar:
$ cat question14
Como touch
cria arquivos vazios, não devem aparecer resultados. Podemos usar echo
com >
para criar arquivos de texto simples. Experimente:
$ echo hello > question15 $ cat question15 hello
echo
exibe texto na linha de comando. O caractere >
instrui o shell a escrever a saída de um comando no arquivo especificado, em vez do terminal. Isso faz com que a saída de echo
, neste caso hello
, seja gravada no arquivo question15
. Isso não é específico ao echo
, podendo ser usado com qualquer comando.
Warning
|
Cuidado ao usar |
Renomeando arquivos
O comando mv
serve para mover e renomear arquivos.
Defina moving
como seu diretório de trabalho:
$ cd ~/linux_essentials-2.4/moving
Crie alguns arquivos para praticar. Neste momento, você já deve estar familiarizado com estes comandos:
$ touch file1 file22 $ echo file3 > file3 $ echo file4 > file4 $ ls file1 file22 file3 file4
Suponha que file22
seja um erro de digitação; o correto seria file2
. Corrija o nome com o comando mv
. Ao renomear um arquivo, o primeiro argumento é o nome atual, o segundo é o novo nome:
$ mv file22 file2 $ ls file1 file2 file3 file4
Tenha cuidado ao usar o comando mv
. Se o novo nome já estiver atribuído a um arquivo existente, ele será sobrescrito. Vamos testar com file3
e file4
:
$ cat file3 file3 $ cat file4 file4 $ mv file4 file3 $ cat file3 file4 $ ls file1 file2 file3
Note que o conteúdo de file3
agora está em file4
. Use a opção -i
para que mv
avise caso você esteja prestes a sobrescrever um arquivo existente. Experimente:
$ touch file4 file5 $ mv -i file4 file3 mv: overwrite ‘file3’? y
Movendo arquivos
Os arquivos são movidos de um diretório para outro com o comando mv
.
Crie alguns diretórios para os quais moveremos arquivos:
$ cd ~/linux_essentials-2.4/moving $ mkdir dir1 dir2 $ ls dir1 dir2 file1 file2 file3 file5
Mova file1
para dir1
:
$ mv file1 dir1 $ ls dir1 dir2 file2 file3 file5 $ ls dir1 file1
Observe como o último argumento para mv
é o diretório de destino. Sempre que o último argumento para mv
for um diretório, os arquivos serão movidos para ele. É possivel especificar diversos arquivos em um único comando mv
:
$ mv file2 file3 dir2 $ ls dir1 dir2 file5 $ ls dir2 file2 file3
Também podemos usar o mv
para mover e renomear diretórios. Renomeie dir1
como dir3
:
$ ls dir1 dir2 file5 $ ls dir1 file1 $ mv dir1 dir3 $ ls dir2 dir3 file5 $ ls dir3 file1
Excluindo arquivos e diretórios
O comando rm
serve para excluir arquivos e diretórios, ao passo que o comando rmdir
pode excluir apenas diretórios. Vamos limpar o diretório moving
excluindo file5
:
$ cd ~/linux_essentials-2.4/moving $ ls dir2 dir3 file5 $ rmdir file5 rmdir: failed to remove ‘file5’: Not a directory $ rm file5 $ ls dir2 dir3
Por padrão, o rmdir
pode excluir apenas diretórios vazios; portanto, tivemos de usar rm
para excluir um arquivo comum. Tente excluir o diretório deleting
:
$ cd ~/linux_essentials-2.4/ $ ls copying creating deleting globs moving $ rmdir deleting rmdir: failed to remove ‘deleting’: Directory not empty $ ls -l deleting total 0 drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 files
Como vimos, o rmdir
se recusa a excluir um diretório que não esteja vazio. Use rmdir
para remover um dos subdiretórios vazios do diretório deleting
:
$ ls -a deleting/files . .. $ rmdir deleting/files $ ls -l deleting directories
Excluir um grande número de arquivos ou estruturas de diretórios profundas, com muitos subdiretórios, pode parecer uma tarefa entediante, mas na verdade é fácil. Por padrão, o rm
funciona apenas em arquivos regulares. A opção -r
é usada para anular esse comportamento. Tenha cuidado, rm -r
pode acabar sendo um tiro no pé! Quando usamos a opção -r
, o rm
não somente exclui qualquer diretório, como também tudo o que estiver dentro desse diretório, incluindo os subdiretórios e seu conteúdo. Veja você mesmo como o rm -r
funciona:
$ ls copying creating deleting globs moving $ rm deleting rm: cannot remove ‘deleting’: Is a directory $ ls -l deleting total 0 drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories $ rm -r deleting $ ls copying creating globs moving
Percebeu que deleting
se foi, mesmo não estando vazio? Como o mv
, o rm
tem uma opção -i
para exibir um aviso antes de executar qualquer ação. Use rm -ri
para remover os diretórios da seção moving
que não forem mais necessários:
$ find . ./creating ./moving ./moving/dir2 ./moving/dir2/file2 ./moving/dir2/file3 ./moving/dir3 ./moving/dir3/file1 ./globs ./globs/question1 ./globs/question2012 ./globs/question23 ./globs/question13 ./globs/question14 ./globs/star10 ./globs/star1100 ./globs/star2002 ./globs/star2013 ./globs/question15 ./copying ./copying/files ./copying/directories $ rm -ri moving rm: descend into directory ‘moving’? y rm: descend into directory ‘moving/dir2’? y rm: remove regular empty file ‘moving/dir2/file2’? y rm: remove regular empty file ‘moving/dir2/file3’? y rm: remove directory ‘moving/dir2’? y rm: descend into directory ‘moving/dir3’? y rm: remove regular empty file ‘moving/dir3/file1’? y rm: remove directory ‘moving/dir3’? y rm: remove directory ‘moving’? y
Copiando arquivos e diretórios
O comando cp
é usado para copiar arquivos e diretórios. Copie alguns arquivos para o diretório copying
:
$ cd ~/linux_essentials-2.4/copying $ ls directories files $ cp /etc/nsswitch.conf files/nsswitch.conf $ cp /etc/issue /etc/hostname files
Se o último argumento for um diretório, o cp
criará uma cópia dos argumentos anteriores dentro do diretório. Como no caso de mv
, vários arquivos podem ser especificados ao mesmo tempo, desde que o destino seja um diretório.
Quando os dois operandos de cp
são arquivos e os dois arquivos existem, o cp
sobrescreve o segundo arquivo com uma cópia do primeiro arquivo. Para comprovar, vamos substituir o arquivo issue
pelo arquivo hostname
:
$ cd ~/linux_essentials-2.4/copying/files $ ls hostname issue nsswitch.conf $ cat hostname mycomputer $ cat issue Debian GNU/Linux 9 \n \l $ cp hostname issue $ cat issue mycomputer
Agora, vamos tentar criar uma cópia do diretório files
dentro do diretório directory
:
$ cd ~/linux_essentials-2.4/copying $ cp files directories cp: omitting directory ‘files’
Como vemos, o cp
, por padrão, só funciona em arquivos individuais. Para copiar um diretório, usamos a opção -r
. Lembre-se de que a opção -r
fará com que cp
também copie o conteúdo do diretório que está sendo copiado:
$ cp -r files directories $ find . ./files ./files/nsswitch.conf ./files/fstab ./files/hostname ./directories ./directories/files ./directories/files/nsswitch.conf ./directories/files/fstab ./directories/files/hostname
Percebeu que, quando um diretório existente é usado como destino, o cp
cria uma cópia do diretório de origem dentro dele? Se o destino não existir, ele será criado e preenchido com o conteúdo do diretório de origem:
$ cp -r files files2 $ find . ./files ./files/nsswitch.conf ./files/fstab ./files/hostname ./directories ./directories/files ./directories/files/nsswitch.conf ./directories/files/fstab ./directories/files/hostname ./files2 ./files2/nsswitch.conf ./files2/fstab ./files2/hostname
Globbing
Costumamos chamar de globbing uma linguagem simples de correspondência de padrões. Os shells da linha de comando nos sistemas Linux usam essa linguagem para buscar grupos de arquivos cujos nomes correspondam a um padrão específico. O POSIX.1-2017 especifica os seguintes padrões para a correspondência de caracteres:
*
-
Corresponde a qualquer número de quaisquer caracteres, incluindo nenhum caractere
?
-
Corresponde a qualquer caractere
[]
-
Corresponde a uma classe de caracteres
Em bom português, isso significa que você pode dizer ao seu shell para procurar por um padrão, em vez de uma sequência literal de texto. Geralmente, os usuários do Linux especificam diversos arquivos com um glob em vez de digitar o nome de cada arquivo. Execute os seguintes comandos:
$ cd ~/linux_essentials-2.4/globs $ ls question1 question14 question2012 star10 star2002 question13 question15 question23 star1100 star2013 $ ls star1* star10 star1100 $ ls star* star10 star1100 star2002 star2013 $ ls star2* star2002 star2013 $ ls star2*2 star2002 $ ls star2013* star2013
O shell expande *
para qualquer número de qualquer coisa, e assim ele interpreta star*
como sendo qualquer coisa, dentro do contexto relevante, que comece com star
. Quando você executa o comando ls star*
, o shell não executa o programa ls
com um argumento star*
, mas sim procura por arquivos no diretório atual que correspondam ao padrão star*
(incluindo apenas star
), e transforma cada arquivo correspondente ao padrão em um argumento para ls
:
$ ls star*
No que diz respeito ao ls
, isso é o equivalente a
$ ls star10 star1100 star2002 star2013
O caractere *
não significa nada para ls
. Para comprovar, execute o seguinte comando:
$ ls star\* ls: cannot access star*: No such file or directory
Quando colocamos \
antes de um caractere, estamos instruindo seu shell a não interpretá-lo. Neste caso, queremos que ls
tenha um argumento star*
, em vez da expansão feita pelo glob star*
.
O ?
expande para qualquer caractere único. Experimente os seguintes comandos para ver por si mesmo:
$ ls question1 question14 question2012 star10 star2002 question13 question15 question23 star1100 star2013 $ ls question? question1 $ ls question1? question13 question14 question15 $ ls question?3 question13 question23 $ ls question13? ls: cannot access question13?: No such file or directory
Os colchetes []
são usados para combinar faixas ou classes de caracteres. Os colchetes []
funcionam como nas expressões regulares POSIX, exceto porque, nos globs, o ^
é usado no lugar de !
.
Crie alguns arquivos para experimentar:
$ mkdir brackets $ cd brackets $ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7
Os intervalos entre colchetes []
são expressos usando um -
:
$ ls file1 file2 file3 file4 file5 file6 file7 filea fileb filec $ ls file[1-2] file1 file2 $ ls file[1-3] file1 file2 file3
É possível especificar vários intervalos:
$ ls file[1-25-7] file1 file2 file5 file6 file7 $ ls file[1-35-6a-c] file1 file2 file3 file5 file6 filea fileb filec
Os colchetes também podem ser usados para encontrar um conjunto específico de caracteres correspondentes.
$ ls file[1a5] file1 file5 filea
Também usamos o caractere ^
como o primeiro caractere para encontrar todas as correspondências, exceto determinados caracteres.
$ ls file[^a] file1 file2 file3 file4 file5 file6 file7 fileb filec
A última coisa que abordaremos nesta lição são as classes de caracteres. Para buscar correspondências em uma classe de caracteres, use [:classname:]
. Por exemplo, para usar a classe digit, que corresponde aos números, faríamos algo assim:
$ ls file[[:digit:]] file1 file2 file3 file4 file5 file6 file7 $ touch file1a file11 $ ls file[[:digit:]a] file1 file2 file3 file4 file5 file6 file7 filea $ ls file[[:digit:]]a file1a
O glob file[[:digit:]a]
corresponde a file
seguido por um dígito ou a
.
As classes de caracteres suportadas dependem da sua localidade atual. O POSIX requer as seguintes classes de caracteres para todas as localidades:
[:alnum:]
-
Letras e números.
[:alpha:]
-
Maiúsculas ou minúsculas.
[:blank:]
-
Espaços e tabulações.
[:cntrl:]
-
Caracteres de controle, como backspace, bell, confirmação negativa, escape.
[:digit:]
-
Numerais (
0123456789
). [:graph:]
-
Caracteres gráficos (todos os caracteres, exceto
ctrl
e o caractere de espaço) [:lower:]
-
Letras minúsculas (
a-z
). [:print:]
-
Caracteres imprimíveis (
alnum
,punct
e o caractere de espaço). [:punct:]
-
Caracteres de pontuação, ou seja,
!
,&
,"
. [:space:]
-
Caracteres de espaço em branco, por exemplo, tabulações, espaços, novas linhas.
[:upper:]
-
Letras maiúsculas (
A-Z
). [:xdigit:]
-
Números hexadecimais (geralmente
0123456789abcdefABCDEF
).
Exercícios Guiados
-
Dadas as informações a seguir, selecione os diretórios que seriam criados com o comando
mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today
$ pwd /tmp $ find . ./outfiles ./outfiles/text
/tmp
/tmp/outfiles
/tmp/outfiles/text
/tmp/outfiles/text/today
/tmp/infiles
/tmp/infiles/text
/tmp/infiles/text/today
-
O que
-v
faz emmkdir
,rm
ecp
? -
O que acontece se você acidentalmente tentar copiar três arquivos na mesma linha de comando para um arquivo que já existe em vez de um diretório?
-
O que acontece quando você usa
mv
para mover um diretório para dentro de si mesmo? -
Como você excluiria todos os arquivos no diretório atual que começa com
old
? -
Qual dos seguintes arquivos corresponderia a
log_[a-z]_201?_*_01.txt
?log_3_2017_Jan_01.txt
log_+_2017_Feb_01.txt
log_b_2007_Mar_01.txt
log_f_201A_Wednesday_01.txt
-
Crie alguns globs que correspondam à seguinte lista de nomes de arquivos:
doc100 doc200 doc301 doc401
Exercícios Exploratórios
-
Use a página do manual de
cp
para descobrir como fazer uma cópia de um arquivo com as permissões e a data de modificação correspondentes às do original. -
O que o comando
rmdir -p
faz? Experimente-o e explique como ele difere derm -r
. -
NÃO EXECUTE ESTE COMANDO: O que você acha que
rm -ri / *
pode fazer? (É SÉRIO, NÃO TENTE EXECUTÁ-LO!) -
Além de usar
-i
, é possível impedir que omv
sobrescreva os arquivos de destino? -
Explique o comando
cp -u
.
Resumo
O ambiente de linha de comando do Linux fornece ferramentas para gerenciar arquivos. Algumas das mais usadas são cp
, mv
, mkdir
, rm
e rmdir
. Essas ferramentas, combinadas com globs, permitem realizar tarefas com mais rapidez.
Muitos comandos têm uma opção -i
, que solicita uma confirmação antes de fazer qualquer coisa. Essa confirmação ajuda a evitar muitos aborrecimentos se você digitar algo errado.
Muitos comandos incluem uma opção -r
. A opção -r
normalmente significa recursão. Em matemática e ciência da computação, uma função recursiva é uma função que utiliza a si mesma em sua definição. Quando se trata de ferramentas de linha de comando, geralmente significa aplicar o comando a um diretório e tudo o que está contido nele.
Comandos usados nesta lição:
cat
-
Lê e exibe o conteúdo de um arquivo.
cp
-
Copia arquivos ou diretórios.
echo
-
Exibe um conjunto de caracteres.
find
-
Atravessa uma árvore do sistema de arquivos e procura por arquivos que correspondam a um conjunto específico de critérios.
ls
-
Mostra as propriedades dos arquivos e diretórios e lista o conteúdo de um diretório.
mkdir
-
Cria novos diretórios.
mv
-
Move ou renomeia arquivos ou diretórios.
pwd
-
Exibe o diretório de trabalho atual..
rm
-
Exclui arquivos ou diretórios.
rmdir
-
Exclui diretórios.
touch
-
Cria novos arquivos vazios ou atualiza a data de modificação de um arquivo existente.
Respostas aos Exercícios Guiados
-
Dadas as informações a seguir, selecione os diretórios que seriam criados com o comando
mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today
$ pwd /tmp $ find . ./outfiles ./outfiles/text
Os diretórios marcados seriam criados. Os diretórios
/tmp
,/tmp/outfiles
e/tmp/outfiles/text
já existem, por isso omkdir
os ignora./tmp
/tmp/outfiles
/tmp/outfiles/text
/tmp/outfiles/text/today
X
/tmp/infiles
X
/tmp/infiles/text
X
/tmp/infiles/text/today
X
-
O que
-v
faz emmkdir
,rm
ecp
?Normalmente,
-v
ativa a saída detalhada. Ele faz com que os programas respectivos exibam o que estão fazendo no momento em que o fazem:$ rm -v a b removed 'a' removed 'b' $ mv -v a b 'a' -> 'b' $ cp -v b c 'b' -> 'c'
-
O que acontece se você acidentalmente tentar copiar três arquivos na mesma linha de comando para um arquivo que já existe em vez de um diretório?
cp
se recusará a fazer qualquer coisa e exibirá uma mensagem de erro:$ touch a b c d $ cp a b c d cp: target 'd' is not a directory
-
O que acontece quando você usa
mv
para mover um diretório para dentro de si mesmo?Aparece uma mensagem de erro dizendo que
mv
não pode fazer isso.$ mv a a mv: cannot move 'a' to a subdirectory of itself, 'a/a'
-
Como você excluiria todos os arquivos no diretório atual que começa com
old
?Seria preciso usar o glob
old*
comrm
:$ rm old*
-
Qual dos seguintes arquivos corresponderia a
log_[a-z]_201?_*_01.txt
?log_3_2017_Jan_01.txt
log_+_2017_Feb_01.txt
log_b_2007_Mar_01.txt
log_f_201A_Wednesday_01.txt
X
$ ls log_[a-z]_201?_*_01.txt log_f_201A_Wednesday_01.txt
log_[a-z]
busca porlog_
seguido por qualquer letra minúscula, entãolog_f_201A_Wednesday_01.txt
elog_b_2007_Mar_01.txt
corresponderiam._201?
busca qualquer caractere único, então apenaslog_f_201A_Wednesday_01.txt
corresponderia. Finalmente,*_01.txt
busca qualquer coisa que termine com_01.txt
, o que corresponderia à opção restante. -
Crie alguns globs que correspondam à seguinte lista de nomes de arquivos:
doc100 doc200 doc301 doc401
Existem várias soluções. Eis algumas delas:
doc* doc[1-4]* doc?0? doc[1-4]0?
Respostas aos Exercícios Exploratórios
-
Use a página do manual de
cp
para descobrir como fazer uma cópia de um arquivo com as permissões e a data de modificação correspondentes às do original.Usaríamos nesse caso a opção
-p
. Segundo a página man:$ man cp -p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,time‐ stamps), if possible additional attributes: context, links, xattr, all
-
O que o comando
rmdir -p
faz? Experimente-o e explique como ele difere derm -r
.Ele faz com que
rmdir
se comporte de maneira semelhante amkdir -p
. Se for passado em uma árvore de diretórios vazios, ele removerá todos eles.$ find . ./a ./a/b ./a/b/c $ rmdir -p a/b/c $ ls
-
NÃO EXECUTE ESTE COMANDO: O que você acha que
rm -ri / *
pode fazer? (É SÉRIO, NÃO TENTE EXECUTÁ-LO!)Ele remove todos os arquivos e diretórios com permissão de escrita em sua conta de usuário. Isso inclui quaisquer sistemas de arquivos de rede.
-
Além de usar
-i
, é possível impedir que omv
sobrescreva os arquivos de destino?Sim, a opção
-n
ou--no-clobber
impede quemv
sobrescreva arquivos.$ cat a a $ cat b b $ mv -n a b $ cat b b
-
Explique
cp -u
.A opção
-u
faz com quecp
só copie um arquivo se o destino estiver ausente ou for mais antigo que o arquivo de origem.$ ls -l total 24K drwxr-xr-x 123 emma student 12K Feb 2 05:34 .. drwxr-xr-x 2 emma student 4.0K Feb 2 06:56 . -rw-r--r-- 1 emma student 2 Feb 2 06:56 a -rw-r--r-- 1 emma student 2 Feb 2 07:00 b $ cat a a $ cat b b $ cp -u a b $ cat b b $ cp -u a c $ ls -l total 12 -rw-r--r-- 1 emma student 2 Feb 2 06:56 a -rw-r--r-- 1 emma student 2 Feb 2 07:00 b -rw-r--r-- 1 emma student 2 Feb 2 07:00 c