• Nenhum resultado encontrado

Aviso de comando (prompt), é a linha mostrada na tela para digitação de comandos que serão passados ao interpretador de comandos para a sua execução. A posição onde o comando será digitado é marcado por um traço piscante chamado cursor. Tanto em shells texto como em gráficos é necessário o uso do cursor para sabermos onde iniciar a digitação de textos e nos orientarmos quanto a posição na tela. O aviso de comando do usuário root é identicado pela caractere “#” (tralha, cerquilha), e o aviso de comando de usuários é identificado pelo caractere “$”. Isto é padrão em sistemas Unix.

6.3

- Curingas (Wildcards)

Curingas (ou referência global) é um recurso usado para especificar e potencializar pesquisas feitas para um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux:

*

- Faz referência a qualquer nome completo/restante, qualquer número de vezes, de um arquivo/diretório.

Exemplo:

$ ls /home/curso/teste/*.txt

teste10.txt teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste11.txt teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt testeF.txt

Lista todos os arquivos que tiverem a extensão .txt no diretório /home/curso/teste.

$ ls teste*

teste10.txt teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste11.txt teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt

Lista todos os arquivos que tiverem o prefixo teste.

$ ls teste*txt

teste10.txt teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste11.txt teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt

Lista todos os arquivos que tiverem o prefixo teste e terminarem com a string txt.

$ ls *5* teste5.txt

?

- Faz referência a um caracter em uma posição específica. Exemplo:

$ ls teste?.txt

teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt testeF.txt

Lista todos os arquivos que tiverem um único caracter depois da string teste, e que tiverem a extensão .txt.

$ ls teste??.txt

teste10.txt teste11.txt

Lista todos os arquivos que tiverem dois caracteres depois da string teste, e que tiverem a extensão .txt.

$ ls /bin/??

/bin/cp /bin/dd /bin/df /bin/ed /bin/ln /bin/ls /bin/mt /bin/mv /bin/ps /bin/rm /bin/sh /bin/su

Lista todos os arquivos que tiverem nome com apenas dois caracteres no diretório /bin.

$ ls /etc/???.conf

/etc/fam.conf /etc/ntp.conf /etc/pam.conf /etc/ucf.conf /etc/vnc.conf /etc/xmp.conf

Lista todos os arquivos que tiverem nome com três caracteres e a extensão .conf no diretório /etc.

[]

- O curinga "[...]" define um padrão que casa com o conjunto de caracteres entre "[" e "]". O conjunto ainda pode conter intervalos de caracteres, como por exemplo "1-2" ou "a-z" e também caracteres que não podem fazer parte do conjunto, indicados por "^" ou "!".

Exemplo:

$ ls teste[0-9].txt

teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Lista todos os arquivos que tiverem o intervalo de número de 0 até 9 entre o prefixo teste, com a extensão .txt.

$ ls teste[5-9].txt teste5.txt teste6.txt

Lista todos os arquivos que tiverem o intervalo de número de 5 até 9 entre o prefixo teste, com a extensão .txt.

$ ls teste[0-9].txt

teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Lista todos os arquivos que tiverem o intervalo de número de 0 até 9 entre o prefixo teste, com a extensão .txt.

$ ls teste[A-Z].txt

testeA.txt testeB.txt testeC.txt testeD.txt testeE.txt testeF.txt

Lista todos os arquivos que tiverem o intervalo de A até Z entre o prefixo teste, com a extensão .txt.

$ ls teste[B-D].txt

testeB.txt testeC.txt testeD.txt

Lista todos os arquivos que tiverem o intervalo de B até D entre o prefixo teste, com a extensão .txt.

$ ls [a-z][0-9]*

t1.txt t2.txt t3.txt

Lista todos os arquivos que tiverem em seu nome na primeira posição um caracter no intervalo de a à z, e na segunda posição um número no intervalo de 0 à 9, com qualquer sufixo ou extensão.

$ ls t[a-d,0-9]*.txt

t1.txt t2.txt t3.txt ta1.txt ta2.txt

Lista todos os arquivos que tiverem o prefixo t, seguido por um caracter no intervalo de a à d, ou um número no intervalo de 0 à 9, e que tenham qualquer valor antes de .txt.

$ ls teste[0-9][^0-9]*

teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Lista todos os arquivos que tiverem o prefixo teste, seguido por um número no intervalo de 0 à 9, e que não contenham um outro número na sequência, com qualquer extensão. o carater ^ significa negação.

{}

- O curinga "{...}" define um padrão que casa com o conjunto de caracteres entre "{" e "}", separados por vírgula.

Exemplo:

$ ls teste{[0-9],[A-Z]}.txt

teste1.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste2.txt teste4.txt teste6.txt testeB.txt testeD.txt testeF.txt

Lista todos os arquivos que tiverem o prefixo teste, seguido por um conjunto composto por um número no intervalo de 0 à 9, ou, caracteres no intervalo de A à Z, e que terminam com a extensão .txt.

$ ls teste*.{txt,log}

teste10.txt teste1.log teste2.log teste3.log teste4.txt teste6.txt testeB.txt testeD.txt testeF.txt teste11.txt teste1.txt teste2.txt teste3.txt teste5.txt testeA.txt testeC.txt testeE.txt teste.log

Lista todos os arquivos que tiverem o prefixo teste, seguido por qualquer conjunto de caracteres, e que contenham as extensões .txt ou .log.

6.4

- Direcionadores

Uma boa parte dos programas executados no terminal possuem alguma saída. Essas saídas são enviadas por padrão para o terminal, sendo impressas na tela. Assim, consideremos o exemplo abaixo:

$ ls teste[0-9].txt

teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Nesse caso, têm-se:

entrada: ls teste[0-9].txt

saída: teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

A entrada foi enviada pelo teclado (stdin), e a saída foi enviada para o terminal, que é a saída padrão (stdout). Mas então, o que fazer se o usuário quiser gravar a saída do comando ls em um arquivo de texto, por exemplo? Para isso existem os direcionadores de fluxo, de grande utilidade no GNU/Linux e essenciais para a realização de diversas tarefas de manutenção do sistema. Direcionadores de fluxo fazem o que o nome sugere: direcionam o fluxo da saída dos programas, enviando-as para locais diferentes da saída padrão. Esses locais podem ser arquivos, dispositivos, processos e outros programas. O direcionadores utilizados no GNU/Linux são:

O Direcionador

>

: O direcionador > envia a saída padrão de um comando para um arquivo. Caso o arquivo exista, o seu conteúdo é substituído. Veja então a saída do comando ls que utilizou-se agora à pouco:

$ ls teste[0-9].txt

teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Para gravar essa lista em um arquivo chamado ls_out, utiliza-se o direcionador, da seguinte forma:

$ ls teste[0-9].txt > ls_out

Agora, nada é impresso no terminal. Por que? Porque a saída foi direcionada para o arquivo ls_out. Veja o conteúdo desse arquivo com o comando cat, que concatena e envia arquivos para a saída padrão:

$ cat ls_out teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Como visto, o conteúdo do arquivo ls_out é exatamente a saída do comando ls.

O Direcionador 2

>

: Uma restrição ao uso do direcionador > é que ele não funciona para mensagens de erro (stderr). No exemplo abaixo, usa-se o comando ls, e como parâmetro, um diretório que não existe:

$ ls dir_fantasma > ls_out

ls: dir_fantasma: Arquivo ou diretório não encontrado

Observe que mesmo usando o direcionador >, a mensagem de erro foi exibida. Se o usuário visualizar o conteúdo do arquivo ls_out, verá que nada foi gravado. Para gravar as mensagens de erro, deve-se usar o direcionador 2>:

$ ls dir_fantasma 2> ls_out

Agora sim, nenhuma mensagem de erro foi exibida na tela, porque ela foi enviada para o arquivo ls_out, como pode-se verificar:

$ cat ls_out

ls: dir_fantasma: Arquivo ou diretório não encontrado

O Direcionador &

>

: Podemos usar os direcionadores > e 2> em conjunto, para gerar um arquivo com a saída padrão e outro com a saída de erros, dessa forma:

$ ls teste[0-9].txt dir_fantasma > ls_out 2> ls_error

O comando acima pede para listar todos os arquivos que contenham o nome teste, seguido por um intervalo de 0 à 9, com a extensão .txt, e o conteúdo do diretório dir_fantasma. Ao ver o conteúdo dos arquivos ls_out e ls_error, têm-se:

$ cat ls_out teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt $ cat ls_error

ls: dir_fantasma: Arquivo ou diretório não encontrado

Mas, e se for necessário gravar todas as mensagens em um arquivo apenas? Para isso existe o direcionador &>, que direciona tanto as mensagens padrão quanto as mensagens de erro para um arquivo. Repetindo o teste anterior:

$ ls teste[0-9].txt dir_fantasma &> ls_out

Nenhuma mensagem é exibida no terminal, e o conteúdo do arquivo ls_out é o seguinte:

$ cat ls_out

ls: dir_fantasma: Arquivo ou diretório não encontrado teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Como visto, têm-se tanto a saída normal quanto as mensagens de erro.

Os Direcionadores

>>, 2>> e &>>

: Todos os direcionadores acima citados substituem o conteúdo do arquivo caso ele já exista. Se você quiser gravar a saída de vários comandos num mesmo arquivo, então precisará adicionar o conteúdo ao arquivo ao invés de substitui-lo. Para fazer isso, usa-se >> ao invés de >, >>, 2>> e &>>.

O Direcionador

<

: Direciona a entrada padrão de arquivo/dispositivo para um comando. Este direcionador faz o contrário de < , enviando os dados para a entrada padrão, que no caso, é o comando. Por exemplo:

$ cat < ls_out

ls: dir_fantasma: Arquivo ou diretório não encontrado teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Você pode usar o comando acima para enviar o conteúdo do arquivo ls_out ao comando cat, que mostrará seu conteúdo. É claro que o mesmo resultado pode ser obtido com cat teste.txt, mas este exemplo serviu para mostrar a funcionalidade do <.

O Direcionador

<<

: O direcionador << é utilizado para marcar o fim de exibição de um bloco. Um dos usos mais freqüentes desse direcionador é em conjunto com o comando cat. O comando abaixo termina o comando cat quando for digitada a palavra "fim".

$ cat << fim > arq_teste

> Meu nome é Fabio Santos e estou ministrando > o Curso GNU/Linux Módulo 1 - Introdução.. > ele tem a duração de 24 horas....

> Este teste é com o comando cat em conjunto com > o direcionador "<<"

> fim

Neste exemplo, o direcionador << foi usado para enviar o texto digitado para o arquivo arq_teste, logo que a palavra “fim” foi inserida ao texto.

O Direcionador

|

(pipe) : O direcionador | , também conhecido como pipe (duto, cano), é utilizado para direcionar a saída de um comando para outro comando, e utilizado todo o tempo para a realização de diversos tipos de tarefas e procedimentos. Um dos usos mais comuns do | é com os comandos ls e more, para ver o conteúdo de um diretório, quando este não cabe na tela, como o diretório /usr/bin, por exemplo. Para que se possa ver todos os arquivos, direciona-se a saída do ls para o more, que faz a paginação do conteúdo:

$ ls /usr/bin | more 411toppm 822-date a2p aaxine abcde abiword AbiWord-2.2

--Mais--Agora, basta pressionar Enter para rolar a lista, de forma que podemos ver todos os arquivos. Pode-se utilizar o pipe para contar o número de linhas de um arquivo, em conjunto com os comandos cat e wc:

$ cat /etc/profile | wc -l 24

O comando wc é utilizado para contar número de linhas, palavras e bytes do fluxo, que neste caso, é um arquivo texto. Um outro exemplo é em conjunto com o gerenciador de pacotes apt, e com o comando grep, que é utilizado para selecionar linhas que contém uma determinada expressão. Por exemplo, para procurar os pacotes relacionados à documentação do bash shell, utiliza-se a seguinte linha de comando:

$ apt-cache search bash | grep doc

bash-doc - Documentation and examples for the The GNU Bourne Again SHell bash3-doc - Documentation and examples for the The GNU Bourne Again SHell optcomplete-common - common scripts and documentation for python-optcomplete

6.5

- Alias

Permite criar um apelido a um comando ou programa. Por exemplo, se você quiser otimizar o nome do comando ls -lh para ver uma listagem longa e com todos os atributos dos arquivos, você pode usar o comando alias para facilitar as coisas digitando:

$ alias lista='ls -lh'

Detalhe: (não se esqueça da meia aspa 'para identificar o comando'). Agora quando você digitar lista, a listagem será mostrada de forma completa. Para apagar uma alias, utilize o comando unalias:

$ unalias lista

6.6

Documentos relacionados