Voltar a Posts

Entendendo comandos aninhados em linux

Postado em linux

Uma das coisa mais bacanas e eficientes quer dá para fazer em Linux é conectar comandos, ou seja você pode digitar comandos em sequência ou mesmo retirar dados de saída de um comando como entrada para outro comando.

Tudo isso é realizado através dos chamados meta caracteres que seriam os seguintes símbolos ( o pipe | , os parênteses ( ) , o ampersand & , o ponto e virgula ; e os sinais de mais e de menos < >), que são símbolos que representam significados especiais para o Linux.

Vou exemplificar as diversas situações desses caracteres:


  $ cat /etc/passwd | sort | less

O pipe pode ser usado para pegar o resultado de saída de um comando e concatená-lo com outros comandos, o exemplo acima usa o comando cat para copiar a entrada do arquivo no endereço etc/passwd e ordenar a saída com sort e finalmente dessa ordenação criar uma paginação usando o comando less.

O mais( > ) e menos( < ) são geralmente usados para direcionar o conteúdo de saída de comandos para algum arquivo ou algum arquivo para um comando, Um exemplo simples é o de baixo, onde uso o comando echo para escrever a palavra “vazio” como saída no terminal, contudo direciono o resultado para um arquivo que crio imediatamente:


  $ echo "vazio" > novo.txt

É possível alocar comandos de forma sequencial, basta colocar ponto e vírgula depois de cada comando.


  $ date; echo "vazio" > novo.txt; date

O comando acima realiza a mesma ação anterior exceto que agora uso do ponto virgula adcionar ações antes e depois do comando echo para pegar o tempo da tarefa. Aqui tá de forma bem simples, contudo caso você precise realizar uma tarefa mais longa, essa é uma boa forma de você capturar o tempo gasto na ação.

Com o & é possível deixar o comando no modo background, é bem útil para aqueles comandos bem longos, só lembre de deixar um comando para avisar o seu término como no exemplo abaixo, e fica de aviso, se você fechar o shell o comando será morto se não tiver terminado ainda.


 $ find /home | grep novo &

Eu cheguei a dizer que o pipe ele conecta ( concatena) o resultado de um comando ao outro, contudo se você está interessado em transformar a saída de um comando como o próprio argumento, talvez o melhor para você é o uso dos parênteses, basicamente o que eles fazem é transformar a saída em um argumento para o outro comando com as opções e tudo. Os parênteses são conhecidos como comandos de substituição.


  $ find (/home | grep novo)

Estou usando o resultado da ação dentro dos parenteses como argumento para o comando find. Logo o que está dentro dos parenteses é substituído pelo resultado em si da ação.

Com os meta caracteres a vinculação de diversos comandos como blocos com diferentes tipos de símbolos para retornar uma exigência direta, é excelente e extremamente útil, em vez de digitar comando um por um pode-se resumi-los em uma sequencia de comandos e ainda em background.

Bom espero que tenham desfrutado do artigo e até próxima.

Jefferson Abreu é estudante de Analise e Desenvolvimento de Sistemas no instituto Infnet, pode ser descrito em poucas palavras: Estudante, programador, autodidata e criativo.

Leia Próximo

Básico de Shell linux