Linux - Trabalhando com Arquivos
Criando Arquivos
Para criar um arquivo, utilizamos o comando touch
. Por exemplo, para criar um arquivo chamado hello.txt
na pasta Documents:
programicio@Programicio:~$ touch ~/Documents/hello.txt
Removendo Arquivos
Para remover arquivos (e também diretórios), usamos o comando rm
. Por exemplo, para remover o arquivo hello.txt
criado anteriormente na pasta Documents
:
programicio@Programicio:~$ rm ~/Documents/hello.txt
O comando rm
também pode ser usado para remover diretórios. Nesse caso, é necessário usar a opção -r
. Por exemplo, para remover a pasta test
:
programicio@Programicio:~$ rm -r ~/Documents/test
Copiando Arquivos e Diretórios
Para copiar arquivos ou diretórios, utilizamos o comando cp
. Ele tem a seguinte forma:
cp source destination
O primeiro argumento do comando, source
, representa o nome do diretório, arquivos ou padrão de arquivos que devem ser copiados. O segundo argumento, destination
, representa o caminho para onde devem ser copiados. Por exemplo, para copiar o arquivo Documents/test/hello.txt
para a pasta Documents
:
programicio@Programicio:~$ cp ~/Documents/test/hello.txt ~/Documents/hello.txt
Outro exemplo seria copiar o arquivo Documents/test/hello.txt
para a pasta Documents/test2
:
programicio@Programicio:~$ mkdir ~/Documents/test2 programicio@Programicio:~$ cp ~/Documents/test/hello.txt ~/Documents/test2
Neste caso, é importante que a pasta test2
já exista antes da cópia. Caso contrário, será criado um arquivo de texto chamado test2
com o conteúdo do arquivo hello.txt
.
Para copiar diretórios, usamos a opção -r
. Por exemplo, para copiar o conteúdo da pasta Documents/test
para a pasta Documents/test4
:
programicio@Programicio:~$ cp -r ~/Documents/test/ ~/Documents/test4
Nesse caso, a pasta test4
será criada automaticamente.
O padrão de arquivo pode utilizar o símbolo asterisco *
para indicar todos os arquivos. Por exemplo, o comando cp ~/* /tmp
copia todos os arquivos do diretório home
para o diretório /tmp
.
Para copiar arquivos ocultos, usamos o símbolo asterisco seguido por um ponto. Por exemplo, o comando:
programicio@Programicio:~$ mkdir ~/Documents/test5 programicio@Programicio:~$ cp .* ~/Documents/test5
copiará todos os arquivos ocultos do diretório atual para a pasta Documents/test5
, já que o primeiro argumento se refere a todos os arquivos cujo nome começa com um ponto (a pasta test5
deve ser criada previamente).
Se for necessário copiar também os diretórios ocultos e seu conteúdo, utilizamos a opção -r
:
cp -r .* ~/Documents/test5
Opções
O comando cp
aceita várias opções. Aqui estão algumas delas:
-a
: preserva os atributos dos arquivos copiados, como permissões e timestamps.-b
: realiza backup. Se o comando cp substituir um arquivo de destino existente, essa opção garante que um backup do arquivo de destino seja criado primeiro.-f
: força a cópia, mesmo que o arquivo de destino proíba a cópia. Isso significa que o arquivo de destino será sobrescrito.-i
: solicita confirmação antes de sobrescrever arquivos de destino existentes.-p
: preserva atributos do arquivo, como proprietários e permissões.-r
: copia diretórios de forma recursiva.-u
: copia apenas se o arquivo de destino for mais antigo que o arquivo de origem ou se o arquivo de destino não existir.
Movendo Arquivos e Diretórios
O comando mv
move arquivos e diretórios para um novo local. A sua forma é:
mv source destination
O primeiro argumento, source
, representa os diretórios ou arquivos que devem ser movidos. O segundo argumento, destination
, representa o caminho para onde devem ser movidos. Por exemplo, para mover o arquivo Documents/test/hello.txt
para a pasta Documents/test6
:
programicio@Programicio:~$ mkdir ~/Documents/test6 programicio@Programicio:~$ mv ~/Documents/test/hello.txt ~/Documents/test6
Neste exemplo, a pasta test6
é criada antes de mover o arquivo. No entanto, se a pasta test6
não existir, será criado um arquivo test6
com o conteúdo do arquivo Documents/test/hello.txt
.
Da mesma forma, podemos mover diretórios. Por exemplo:
programicio@Programicio:~$ mkdir ~/Documents/test7 programicio@Programicio:~$ touch ~/Documents/test7/helworld.txt programicio@Programicio:~$ mv ~/Documents/test7 ~/Documents/test8
Aqui, criamos a pasta test7
e nela um arquivo helworld.txt
. Depois movemos a pasta Documents/test7
para Documents/test8
. O que ocorre depende da existência do diretório test8
. Se test8
existir, ele conterá um subdiretório test7
com todo o conteúdo de Documents/test7
. Se test8
não existir, será criado um diretório test8
com todo o conteúdo de Documents/test7
.
Esse último caso mostra que podemos usar o comando mv
para renomear. Por exemplo:
programicio@Programicio:~$ mv ~/Documents/test8 ~/Documents/test9
Se test9
não existir, test8
será renomeado para test9
.
Contando Palavras em um Arquivo
O comando wc
permite contar o número de palavras em um arquivo:
programicio@Programicio:~$ wc ~/Documents/test/hello.txt 32 274 1572 /home/programicio/Documents/test/hello.txt
Este comando exibe, respectivamente, o número de linhas, palavras e caracteres.
Links
No Linux, um link é um ponteiro para um arquivo. Um link facilita a localização de arquivos desejados. Um link simbólico refere-se ao nome de um arquivo e pode ser usado para referenciar um arquivo localizado em qualquer lugar. No entanto, um link simbólico depende do arquivo original. Por exemplo, se o arquivo original for excluído, o link simbólico deixará de funcionar.
Para criar um link simbólico, utilizamos o comando ln
com a opção -s
. Por exemplo, para criar um link chamado myhost
no diretório pessoal que aponta para o arquivo /etc/hosts
, usamos o seguinte comando:
ln -s /etc/hosts ~/myhost
Como resultado, um atalho chamado myhost
será criado no diretório pessoal, referindo-se ao arquivo /etc/hosts
. Cada vez que o arquivo myhost
for aberto, o arquivo /etc/hosts
será acessado.
Para visualizar informações sobre o link, podemos usar o comando ls -l
:
programicio@Programicio:~$ ls -l ~/myhost lrwxrwxrwx 1 programicio programicio 10 Mar 11 20:15 /home/programicio/myhost -> /etc/hosts
A primeira letra l
indica que se trata de um link. Além disso, a expressão /home/programicio/myhost -> /etc/hosts
mostra para qual arquivo o link aponta.