TRABALHANDO COM DIRETÓRIOS NO LINUX – básico

Tux

Neste post você verá o conhecimento básico para utilização do sistema operacional via shell por navegar e alterar seus diretórios.

  •  NAVEGAÇÃO PELOS DIRETÓRIOS E VISUALIZANDO ARQUIVOS

Para utilizar linux, você deve saber se locomover por todo diretório de arquivos. O formato do diretório
segue modelo hierárquico, onde o ponto inicial é considerado raiz. Portanto visualizar uma idéia de uma
árvore de cabeça para baixo.

Normalmente para você se localizar, quando o prompt do shell não diz para você qual o diretório corrente, ou
seja, aquele que você está situado no momento, utilizamos o comando “pwd

# pwd

Quando você utiliza este comando, verá diretório corrente talvez separado por uma ou duas barras “/”. O
diretórios ao lado “esquerdo”, estão em uma hierarquia acima do diretório corrente, mesmo que seja apenas uma
barra “/”. Esta barra irá representar o diretório root (raiz).

Quando você precisa saber  o que está agrupado neste diretório corrente, utiliza o comando LS para gerar uma
lista. Nesta lista você verá um ou mais arquivos e um ou mais diretórios.

O LS em si sem parâmetros já lhe traz algum resultado, mas para você ter um melhor aproveitamento, será necessário acostumar com alguns parâmetros básicos. Abaixo segue uma lista:

  • -l  gera uma lista apresentando as permissões (se você quiser saber mais sobre permissões clique aqui), mostra usuário proprietário do arquivo e seu grupo, bem como a data de modificação.
  • -a lista o conteúdo da pasta corrente em forma de colunas.
  •  -t lista o conteúdo organizando por data de modificação, o mais recente vem primeiro.
  • -r lista o conteúdo em ordem reversa
  • -s lista por ordem de tamanho, o maior vem primeiro.
  • -1 lista um arquivo por linha, criando uma única coluna.
  • -h apresenta dados de tamanhos dos arquivos de forma “humanamente legíveis”, ou seja em K, KB, MB . . . etc.
  • -d vai listar os subdiretórios, se você adicionar a frente $PWD/* serão apresentados os caminhos completos para cada subdiretórios.
  • -g gera uma lista omitindo o proprietário do Arquivo
  • -G gera uma lista omitindo o grupo do proprietário do arquivo
  • -R mostra os subdiretórios
  • -m lista o conteúdo separado por vírgulas

Estes parâmetros podem ser combinados, ou seja, você pode utilizar mais de um ao mesmo tempo assim como acontece com outros utilitários do Linux. Além disso você não precisa usar o hífen para cada um deles. Note:

Não é correto desta forma:

# ls -l -t

Mas sim desta forma:

# ls -lt

O comando acima gera a listagem do conteúdo no diretório corrente, organizado por data de modificação.

Então você pode explorar a utilização deste comando:

# ls -lht

Vai gerar uma lista organizada por data de modificação e além disso, apresenta o tamanho de cada arquivo de forma humanamente legível. Mas você pode inverter a organização da data:

# ls -lhtr
Utilizando LS com parâmetros lhtr
Utilizando LS com parâmetros lhtr

Talvez o modo como você está gerando a lista, ultrapasse os limites do screen, que irá rolar para cima muita
informação incluído exatamente aquela que você pode estar procurando! Então combinando o comando LS com
more“, ajudará e muito!

Para utilizar more no comando ls, você deve utilizar o pipe “|” que adiciona um filtro.

# ls -lhtr | more
Utilizando ls com more
Utilizando ls com more

Para acessar estes diretórios listados, utiliza-se normalmente o comando “cd“. Como vimos, os diretórios são
apresentados na tela, separados por barras “/”. Assim podemos usar este caractere para dizer ao comando “cd“,
para onde de fato queremos seguir. Mas antes de tudo você precisa entender que além da “/”, o sistema também
utiliza o ponto “.” e dois pontos “..” para representar diretórios.
O ponto “.” representa o diretório corrente, aquele que você têm acesso ao conteúdo no momento. Quero dizer
que se você digitar:

# cd .

O comando parecerá não fazer nada, pois você diz ao Linux que quer ser direcionado ao diretório corrente. Mas
se você digitar:

# cd ..

O comportamento será diferente! Será direcionado ao diretório imediatamente superior em na hierarquia em
relação ao diretório corrente, um nível acima. E é exatamente isso que estes dois pontos “..” querem dizer
“diretório um nível acima”. Isso ajuda muito, pois você não precisa dizer ao Linux o nome de um diretório
acima. Mas como já dito, a barra é uma ferramenta importante nesta maratona! Por isso você pode combinar a
solicitação da seguinte forma:

# cd ../..

E o linux vai entender que você quer subir dois níveis acima na hiearquia. Mas pode combinar com nomes de
diretórios:

# cd ../etc

Dessa forma você solicita ao Linux que suba um nível acima e siga para o diretório “etc”. A barra “/” também
informa ao Linux que deve voltar ao diretório raiz:

# cd /

Mas além destes, saiba que existe ainda o diretório til “~” que representa o diretório home do usuário logado
no momento.

# cd ~

O comando “cd” ainda conta com três parâmetros adicionais:

  • -L
  • -P
  • -e

Entretanto, imagino que em muitos momentos poderá ser muito útil a visualização de algum diretório que seja
subdiretório de algum diretório e por aí vai . . ., mas você não se lembra por onde começar, então começa a
utilizar um monte de comandos, tais como find, cd isso e cd aquilo . . . 🙂

Por isso, a utilização de um mapa de diretórios, poderá ser extremamente útil nesse caso, acredite!
Então para isso, utilizamos o aplicativo “tree“.

Para instalar este aplicativo em distribuições baseados RHEL, utilize yum:

# yum install tree

Ou para distribuições baseadas no Debian:

# sudo apt-get install tree
Instalação do Tree no Linux
Instalação do Tree no Linux

Feito isso você contará com uma sintaxe simples: tree [parâmetros] <diretório>
Este comando vai gerar uma árvore a partir do diretório apontado.

Alguns Parâmetros:

  • -a Listar arquivos e diretórios
  • -d Listar apenas diretórios
  • -t  listar arquivos por ordem de data de modificação
  • -s  O tamanho de cada arquivo em bytes.
  • -A Utilizar linhas de identação com gráficos ASCII
  • -C Listar conteúdo com cores
Utilizando tree no linux
Utilizando tree no linux

Você pode visualizar mais parâmetros com “–help”

Agora suponhamos que você queira utilizar um comando para encontrar um arquivo pelo disco, lhe o apresento o famoso “find“!

A sintaxe deste comando também é simples: find <diretório> [parâmetros / expressão]

O diretório será ponto de partida para a busca que incluíra os seus subdiretórios, logo adiante apresento alguns parâmetros. As expressões são mais abrangentes e não veremos neste tópico.

Se você pretender localizar um arquivo que no diretório corrente ou nos subdiretórios a partir dele, utilize:

# find -name texto.txt

Entretanto, se você quiser expandir isso para uma pesquisa em todos os diretórios, informe antes dos parâmetros, o diretório “raiz” com o caractere barra “/”:

# find / -name texto.txt

Mas este comando é sensitível, ou seja, o nome que o utilitário irá buscar é exatamente como você descreveu com as letras maiúsculas e minúsculas. Enfim, para que ele possa ignorar a forma como você digitou, utilize:

# find / -iname TEXto.txt

Se você quiser inverter a forma de pesquisa do find utilize o parâmetro -inot, ou seja serão mostrado todos os arquivos exceto aquile que você está deixando explícito no comando:

# find / -inot -iname TExto.txt

Mas outros parâmetros interessantes pode ser a definição de até quantos subníveis a busca deve percorrer abaixo ou a partir de que nível deve se iniciar. Dessa forma você pode trabalhar com a profundidade da busca. Isso se torna especialmente útil quando você têm ciência de que um determinado arquivo se encontra em mais de um nível de diretório e que a busca pode demorar muito para alcançar até o último nível. Principalmente se você apontou como diretório raiz como ponto de partida.

Os parâmetros -maxdepth para definir um máximo de níveis que a busca poderá alcançar e -mindepth para um nível mínimo inicial:

# find / -maxdepth 5 -iname script.sh
# find / -mindepth 2 -iname script.sh

Já o parâmetro -empty permite a você procurar por arquivos vazios:

# find / -mindepth 2 -empty

Mas e se você quiser procurar pelo tamanho? Utilize o parâmetro -size.

# find / -maxdepth 10 -size 2k

Evidentemente exitem mais opções e inclusive expressões que aumentam e muito a funcionalidade do find. Experimente utilizar:

# man find
  • ALTERANDO ARQUIVOS E DIRETÓRIOS

Para criar novos diretórios, utilize o comando mkdir:

# mkdir diretorio_teste

Você criar vários diretórios por vez, utilizando a opção -p e inserindo o nomes entre chaves e separados por vírgulas. Note a saída do comando:

# mkdir -p {teste1, teste2, teste3}
Criando vários diretórios de uma vez
Criando vários diretórios de uma vez

Esta opção “parent” permite a você ainda pode criar vários diretórios com vários subdiretórios por vez. Para isso, lembre-se que precisamos indicar níveis diferentes separando com a barra “/” e então, na frente da barra você deve abrir novamente chaves e inserir nomes separando por virgulas. Pode fazer isso para vários níveis. Note:

# mkdir -p {testeA/{testeA-1,testeA-2},testeB/{testeB-1,testeb-2}}

Utilizamos o nosso novo amigo “tree” para mostrar o resultado! 🙂

Criando vários diretórios e subdiretórios por vez
Criando vários diretórios e subdiretórios por vez

Mas já que conseguimos criar diretórios devemos também poder excluí-los e fazemos isso utilizando o comando rmdir. Este comando remove diretórios vazios. Você pode remover o subdiretórios utilizando a opção -R de recursiva.

# rmdir -R testeA

Mas se o diretório contém arquivos você poderá excluí-los utilizando o comando rm.

# rm texto.txt

Há ainda opções para este comando:

  • -f  não solicita confirmação para excluir arquivos.
  • -i  solicita confirmação para efetuar exclusão.
  • -r exclui arquivos e subdiretórios.
  • -v gera uma lista com os arquivos deletados.

Algo que posso explicar a partir daqui é a utilização de coringas para atuar sobre mais de um arquivo ou diretório por vez. Ao menos quatro caracteres podem ser utilizados nesta façanha o asterisco “*”, interrogação “?” e os colchetes “[” e “]”. Cada um destes têm uma forma de ser utilizada, porém muito simples e serão muito eficientes nos comandos seguintes.

  • Interrogação “?” informa ao comando que no lugar daquele caractere, qualquer outro poderá ser combinado com os caracteres informado. Para tornar fácil a compreensão note a utilização do comando abaixo e perceba a utilização do caractere coringa:
# rm -f arquivo?.txt
Utilizando coringa interrogação
Utilizando coringa interrogação

Conforme se vê na imagem acima, foram excluídos cinco arquivos, embora existiam dez. Note que o coringa combinou os caracteres do nome informado no arquivo com caracteres diferentes no lugar do interrogação “?” e foram encontrados cinco combinações diferentes. Fácil?

Asterisco “*” é mais abrangente e combina qualquer quantidade de caracteres com os que são informados. Note agora se no lugar do caractere interrogação “?” tivesse sido utilizado “*”:

# rm -fv arquivo*.txt
Utilizando caractere coringa asterisco
Utilizando caractere coringa asterisco

Todas as combinações possíveis em relação aos caracteres informados teriam sido encontradas, permitindo a exclusão de todos arquivos que coincidissem com “arquivo” e “.txt“. Ah mas se você gostou desse, veja o próximo!

Colchetes “[” e “]” permitem determinar o que será combinado com os caracteres informados. Este lhe dá um controle. Note só dua situações:

# rm -fv arquivo[1-3].txt
# rm -fv arquivo[A,B,C].txt
Utilizando caractere coringa colchetes
Utilizando caractere coringa colchetes

Haviam nove arquivos no diretório e foram utilizados os comandos para excluir apenas duas vez. No primeiro determinamos que no lugar do coringa seria uma sequencia de um até três, informando o primeiro número um hífen e o ultimo número. No segundo informamos as letras A,B e C separadas por vírgulas. Resultado? Sobraram apenas três arquivos, porque os coringas encontraram as coincidências! Notou como podemos ter controle sobre o que excluiríamos? Esses conceitos também são validos para comandos já vistos anteriormente (find e ls) e serão úteis com os próximos.

Uma vez que você saiba como criar ou excluir diretório, acredido que possa ser muito útil saber como mover arquivos entre diretórios diferentes, e esta é a função do comando mv.

# mv Arquivo1.txt ~/

Este comando moverá o arquivo do diretório corrente para o diretório home do usuário corrente. Mas por incrível que pareça mv pode ser usado para renomear arquivos!

# mv Arquivo1.txt Arquivo1BKP.txt

Este comando não moverá o arquivo para local algum, mas renomeará o arquivo para o segundo nome informado.

As opções para mv são:

  • b   vai gerar uma cópia de segurança do arquivo que está sendo movido, cado existir um arquivo com mesmo nome no diretório de destino.
  • -f   move o arquivo sem pedir confirmação e mesmo se já existir outro arquivo com mesmo nome no destino.
  • -i   move o arquivo, mas pede confirmação se for encontrado algum  arquivo no destino com o mesmo nome.
  • -v  exibirá os nomes dos arquivos que serão movidos ou renomeados.
  • –help  mostra as opções do comando.
  • –version  exibe informações sobre o comando.

Abaixo segue um exemplo de utilização de mv com coringa:

# mv Arquivo*.txt ~/

Assim como o comando mv, outro comando que tem uma utilização semelhante é o cp utilizado para copiar arquivos. Note que a sintaxe é semelhante:

# cp Arquivo*.txt ~/

Estas são algumas das opções mais usadas com cp:

  • -b  gerará uma cópia de segurança se existir um arquivo com mesmo nome no diretório destino.
  • -f  força substituição dos arquivos existentes com  mesmo nome no diretório destino sem pedir confirmação.
  • -i  pede confirmação antes de substituir arquivos existentes com mesmo nomo no diretório destino.
  • -r copia arquivos e subdiretórios (modo recursivo).
  • -u copia arquivo e substitui o arquivo no diretório destino, que tenha o mesmo nome, quando a data de alteração do arquivo no diretório destino indicar que ele é mais recente.
  • -v  lista os arquivos copiados.

Imagino que estas informações ajudaram muito!

[]’s

2 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.