Linux para leigos: mais comandos básicos

Agora que você já aprendeu os comandos básicos de manipulação de arquivos no artigo anterior, vamos ver alguns detalhes adicionais e mais uns comandos.

No MS-DOS e no Windows, para ocultar um arquivo altera-se um atributo. No Linux, qualquer arquivo que seu nome comece com um ponto é um arquivo oculto, que não será listado com um simples ls e nem aparecerá por padrão nos gerenciadores de arquivos gráficos. Em se tratando de linha de comando podemos ver como isso funciona da seguinte forma:

mkdir exercicios
cd exercicios
touch arquivo_visivel.txt
touch .arquivo_oculto.txt
ls
ls -a

Saída do ls -a

.  ..  .arquivo_oculto.txt  arquivo_visivel.txt

Após criar e entrar no diretório de trabalho, criamos dois arquivos, um normal e um oculto. Com o ls sem parâmetros só é listado o arquivo normal. Com o parâmetro -a são listados os dois. Mas o que é aquele . e aquele .. que apareceram antes dos nomes dos arquivos? São entradas especiais que referenciam o diretório atual (.) e o diretório pai (..) do atual, ou um nível acima, na árvore de diretórios. Assim é possível voltar para o diretório pai com o comando cd ..

Experimente.

Entre novamente no diretório exercicios para criarmos um link simbólico.

cd exercicios
ln -s .arquivo_oculto.txt link_visivel.txt
ls -l

Saída do ls -l

-rw-r--r-- 1 daniel daniel 0 Jun 20 19:33 arquivo_visivel.txt
lrwxrwxrwx 1 daniel daniel 19 Jun 20 19:35 link_visivel.txt -> .arquivo_oculto.txt

O comando ln com o parâmetro -l cria o link simbólico. Veja que o o comando ls com o parâmetro -l mostra a relação entre o link e o arquivo original. E pra que serve esse tal de link simbólico? Pense nele como um atalho para o arquivo ou diretório. É uma referência. Vamos exemplificar. Como o .arquivo_oculto.txt está vazio vamos preenchê-lo, redirecionando o conteúdo de outro arquivo para ele.

cat /etc/passwd > .arquivo_oculto.txt
cat .arquivo_oculto.txt
cat link_visivel.txt

Conclui-se que tanto faz listar o conteúdo do arquivo propriamente, quanto o link que aponta para ele, que será exibido a mesma coisa.

O que acontece com o link se nós apagarmos o arquivo ao qual ele se referencia? Dizemos que o link ficou quebrado. Veja:

rm .arquivo_oculto.txt
cat link_visivel.txt

O cat não encontrará o arquivo para o qual o link aponta e apresentará uma mensagem de erro. Se apagarmos o link, nada acontece com o arquivo ao qual ele está associado.

Vamos aprender um comando para pesquisar uma palavra (ou sequência) em um arquivo e retornar apenas as linhas que contenham essa palavra. O grep.

cp /etc/passwd .
ls
cat passwd
grep root passwd

Exemplo de saída do comando grep

root:x:0:0:root:/root:/bin/bash

Lembram que eu disse que o . representa o diretório corrente? Pois é. Copiamos o arquivo passwd do diretório /etc para o diretório atual. Com o ls verificamos que ele foi realmente copiado. O cat mostra na tela todo o conteúdo do arquivo e o grep filtra apenas as linhas que possuam a palavra root. Provavelmente só aparecerá uma linha na saída.

E se eu quiser ver apenas a primeira coluna de todas as linhas do arquivo? Para isso temos o comando cut.

cut -f 1 -d : passwd

Exemplo de saída do comando cut

root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
nobody
sshd
man

Nesse caso estamos dizendo que queremos que o cut mostre a primera coluna, considerando que o separador entre elas é o caractere :, que no caso do arquivo passwd separa os campos.

Ok. E se eu quiser apenas a primeira coluna das linhas que contenham a palavra root?

Eu poderia usar um arquivo intermediário para conseguir isso, assim:

grep root passwd > arquivo_intermediario
cut -f 1 -d: arquivo_intermediario

Mas existe uma maneira mais elegante de obter o mesmo retorno sem precisar criar um arquivo. Podemos lançar mão de um recurso poderoso, herdado do Unix, que são os dutos ou pipes. Na prática significa que a saída de um comando será a entrada de outro comando. Vamos ver como funciona.

grep root passwd | cut -f 1 -d :

Estamos pegando o resultado do primeiro comando (grep) e enviando para ser tratado pelo segundo (cut), usando o pipe |.

Tente ao contrário:

cut -f 1 -d : passwd | grep root

E compare o resultado.

Comandos novos aprendidos:

ln = cria links
grep = filtra linhas baseado em sequências
cut = filtra colunas por separadores ou blocos

além do pipe |

Por enquanto é só. Até a próxima pessoal!

Deixe uma resposta

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