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. Nesse artigo veremos como utilizar os direcionadores do Linux para facilitar a vida do administrador de sistemas.
Por fim, temos o último direcionador, o |, 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 todo tipo de tarefas e procedimentos.
Um dos usos mais comuns do | é com os comandos ls e more (ou less), 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 possamos ver todos os arquivos, direcionamos a saída do ls para o more, que faz a paginação do conteúdo:
Agora, basta pressionar Enter para rolar a lista, de forma que podemos ver todos os arquivos. O | pode usado também para diversas tarefas. Veja esse uso avançado do |, onde direcionamos vários comandos para instalar o OpenOffice.org e todos os seus pacotes para o português brasileiro (pt-br), através do APT, no Debian:
Primeiramente, rodamos o comando apt-cache search openoffice. A saída desse comando é a seguinte:
# apt-cache search openoffice
boxshade - [Biology] Pretty-printing of multiple sequence alignments
dictionaries-common - Common utilities for spelling dictionary tools
dmake - make utility used to build OpenOffice.org
extract - displays meta-data from files of arbitrary type
fig2sxd - convert XFig files to OpenOffice.org format
gkrellm-hdplop - A hard drive activity monitor GKrellM plugin
gramps - Genealogical Research and Analysis Management Program
libaltlinuxhyph-dev - ALTLinux hyphenation library development files
libextractor1 - extracts meta-data from files of arbitrary type
libooolib-perl - Perl library for creating OpenOffice.org documents (calc/writer)
libspreadsheet-writeexcel-perl - create Excel spreadsheets
myspell-bg - The Bulgarian dictionary for myspell
myspell-ca - Catalan dictionary for myspell
myspell-de-at - Austrian (German) dictionary for myspell
myspell-de-ch - Swiss (German) dictionary for myspell
myspell-de-de - German dictionary for myspell
myspell-de-de-oldspell - German dictionary for myspell (old orthography)
myspell-el-gr - Greek (el_GR) dictionary for myspell
myspell-en-gb - English (GB) dictionary for myspell
myspell-en-us - English (US) dictionary for myspell
myspell-eo - The Esperanto dictionary for myspell
myspell-es - The Spanish dictionary for myspell
myspell-fi - The Finnish dictionary for myspell
myspell-fr-gut - The French dictionary for myspell (GUTenberg version)
myspell-ga - An Irish (Gaeilge) dictionary for OpenOffice and Mozilla
myspell-gd - Scots Gaelic dictionary for myspell
myspell-gl-es - Galician dictionary for myspell
myspell-gv - Manx Gaelic dictionary for myspell
myspell-he - Hebrew dictionary for myspell
myspell-hu - The Hungarian dictionary for myspell
myspell-it - Italian dictionary for myspell
myspell-lt - myspell dictionary for Lithuanian (LT)
myspell-lv - Latvian MySpell dictionary
myspell-nb - Norwegian bokm�¥l dictionary for myspell
myspell-nl - Dutch dictionary for myspell
myspell-nn - Norwegian nynorsk dictionary for myspell
myspell-pl - The Polish dictionary for myspell
myspell-pt-br - The Brazilian Portuguese dictionary for myspell
myspell-ru - The Russian dictionary for myspell
myspell-sl - Slovenian dictionary for myspell
myspell-sv-se - Swedish (SE) dictionary for myspell
myspell-uk - Ukrainian dictionary for myspell
oooqs-kde - OpenOffice.org QuickStarter applet for KDE
ooqstart-gnome - OpenOffice.org QuickStarter applet for GNOME 2
openoffice.org - high-quality office productivity suite
openoffice.org-bin - OpenOffice.org office suite binary files
openoffice.org-debian-files - Debian specific parts of OpenOffice.org
openoffice.org-dev - OpenOffice.org SDK - development files
openoffice.org-dev-doc - OpenOffice.org SDK - documentation and examples
openoffice.org-evolution - Evolution 2 Addressbook support for OpenOffice.org
openoffice.org-gnomevfs - GNOME VFS support for OpenOffice.org
openoffice.org-gtk-gnome - Gtk UI Plugin and GNOME File Picker for OpenOffice.org
openoffice.org-help-de - OpenOffice.org office suite help (German)
openoffice.org-help-el - OpenOffice.org office suite help (Greek)
openoffice.org-help-en - OpenOffice.org office suite help (English)
openoffice.org-help-es - OpenOffice.org office suite help (Spanish)
openoffice.org-help-fr - OpenOffice.org office suite help (French)
openoffice.org-help-it - OpenOffice.org office suite help (Italian)
openoffice.org-help-ja - OpenOffice.org office suite help (Japanese)
openoffice.org-help-ko - OpenOffice.org office suite help (Korean)
openoffice.org-help-pt-br - OpenOffice.org office suite help (Brazilian Portuguese)
openoffice.org-help-sv - OpenOffice.org office suite help (Swedish)
openoffice.org-help-tr - OpenOffice.org office suite help (Turkish
openoffice.org-help-zh-cn - OpenOffice.org office suite help (simplified Chinese)
openoffice.org-help-zh-tw - OpenOffice.org office suite help (traditional Chinese)
openoffice.org-kde - KDE UI Plugin and KDE File Picker for OpenOffice.org
openoffice.org-l10n-af - Afrikaans language package for OpenOffice.org
openoffice.org-l10n-ar - Arabic language package for OpenOffice.org
openoffice.org-l10n-ca - Catalan language package for OpenOffice.org
openoffice.org-l10n-cs - Czech language package for OpenOffice.org
openoffice.org-l10n-cy - Welsh language package for OpenOffice.org
openoffice.org-l10n-da - Danish language package for OpenOffice.org
openoffice.org-l10n-de - German language package for OpenOffice.org
openoffice.org-l10n-el - Greek language package for OpenOffice.org
openoffice.org-l10n-en - English (US) language package for OpenOffice.org
openoffice.org-l10n-es - Spanish language package for OpenOffice.org
openoffice.org-l10n-et - Estonian language package for OpenOffice.org
openoffice.org-l10n-eu - Basque language package for OpenOffice.org
openoffice.org-l10n-fi - Finnish language package for OpenOffice.org
openoffice.org-l10n-fr - French language package for OpenOffice.org
openoffice.org-l10n-gl - Galician language package for OpenOffice.org
openoffice.org-l10n-he - Hebrew language package for OpenOffice.org
openoffice.org-l10n-hi - Hindi language package for OpenOffice.org
openoffice.org-l10n-hu - Hungarian language package for OpenOffice.org
openoffice.org-l10n-it - Italian language package for OpenOffice.org
openoffice.org-l10n-ja - Japanese language package for OpenOffice.org
openoffice.org-l10n-kn - Kannada language package for OpenOffice.org
openoffice.org-l10n-ko - Korean language package for OpenOffice.org
openoffice.org-l10n-lt - Lithuanian language package for OpenOffice.org
openoffice.org-l10n-nb - Norwegian Bokmal language package for OpenOffice.org
openoffice.org-l10n-nl - Dutch language package for OpenOffice.org
openoffice.org-l10n-nn - Norwegian Nynorsk language package for OpenOffice.org
openoffice.org-l10n-ns - Northern Sotho language package for OpenOffice.org
openoffice.org-l10n-pl - Polish language package for OpenOffice.org
openoffice.org-l10n-pt - Portuguese language package for OpenOffice.org
openoffice.org-l10n-pt-br - Portuguese (Brazil) language package for OpenOffice.org
openoffice.org-l10n-ru - Russian language package for OpenOffice.org
openoffice.org-l10n-sk - Slovak language package for OpenOffice.org
openoffice.org-l10n-sl - Slovenian language package for OpenOffice.org
openoffice.org-l10n-sv - Swedish language package for OpenOffice.org
openoffice.org-l10n-th - Thai language package for OpenOffice.org
openoffice.org-l10n-tn - Tswana language package for OpenOffice.org
openoffice.org-l10n-tr - Turkish language package for OpenOffice.org
openoffice.org-l10n-zh-cn - Chinese Simplified language package for OpenOffice.org
openoffice.org-l10n-zh-tw - Chinese Traditional language package for OpenOffice.org
openoffice.org-l10n-zu - Zulu language package for OpenOffice.org
openoffice.org-mimelnk - OpenOffice.org MIME bindings for KDE
openoffice.org-thesaurus-de - German Thesaurus for OpenOffice.org
openoffice.org-thesaurus-en-us - English (US) Thesaurus for OpenOffice.org
openoffice.org-thesaurus-it - Italian Thesaurus for OpenOffice.org
tex4ht - LaTeX and TeX for Hypertext (HTML)
ttf-opensymbol - The OpenSymbol TrueType font
wmhdplop - A hard drive activity monitor dockapp
wpd2sxw - WordPerfect to OpenOffice.org converter
zope-textindexng2 - full text index for Zope
mozilla-mplayer - MPlayer-Plugin for Mozilla, Konqueror and OpenOffice.org
openoffice.org-hyphenation-da - Danish hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-de - German hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-en-gb - English (GB) hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-en-us - English (US) hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-it - Italian hyphenation pattern for OpenOffice.org
openoffice.org-hyphenation-ru - Russian hyphenation pattern for OpenOffice.org
Realmente, uma lista muito grande. Temos muitos pacotes específicos para outros idiomas. Como estamos no Brasil, interessa-nos somente os pacotes para o português brasileiro. Para isso, utilizamos o comando grep, para só exibir as linhas onde aparecer o padrão "pt-br", sigla de "português brasileiro":
# apt-cache search openoffice | grep pt-br
myspell-pt-br - The Brazilian Portuguese dictionary for myspell
openoffice.org-help-pt-br - OpenOffice.org office suite help (Brazilian Portuguese)
openoffice.org-l10n-pt-br - Portuguese (Brazil) language package for OpenOffice.org
A lista já está consideravelmente menor. Agora, vamos filtrar essa lista para que ela possa ser utilizada pelo apt-get. Primeiramente, usamos o comando cut para excluir a descrição do arquivo, deixando somente o nome do pacote:
Agora, temos somente os nomes dos pacotes. Precisamos agora colocá-los em seqüência, separados por espaços. Para isso, vamos usar o comando tr, para substituir os caracteres de novas linhas (\n) por espaços:
Dessa forma, o direcionador | nos poupou um enorme trabalho. Imagine se você tivesse que procurar em toda a lista gerada pelo apt-cache search openoffice pelos pacotes que você quer, anotar seus nomes e depois utilizar o apt-get install -y, digitando o nome de cada pacote. Muito mais trabalho. Com o | fazemos a mesma coisa com apenas um comando!
[3] Comentário enviado por davidsonpaulo em 26/06/2006 - 11:21h
Salve, jllitvay!
Bom, você pode fazer o seguinte:
$ [comando] &> /dev/tty2 &
Onde:
* comando: o comando que você quer executar, com todos os parâmetros;
* &> /dev/tty2: envia todas a saída do programa para o tty2 (você tem ue ter permissão de escrita no tty2);
* &: roda o programa em plano de fundo, para que o tty atual fique livre para executar mais comandos.
Eu testei aqui. Abri um terminal gráfico e executei o comando:
# ls -R / &> /dev/tty6 &
O terminal ficou livre e, ao ir para o /dev/tty6, eis que lá estava aparecendo a saída do comando ls -R /.
[5] Comentário enviado por wanderleihuttel em 27/06/2006 - 09:13h
Cara muito bom mesmo este artigo. Não conhecia o "tr", para excluir caracteres. Agora acho que vu conseguir fazer um relatório no meu arquivo secure, bem legal.
[7] Comentário enviado por JuNiOx em 20/07/2006 - 02:29h
algumas partes estão muito parecidas com o guiafoca, a descrição do ">>" está idêntica.
creio que poderia ter citado também nos "créditos" caso tenha retirado de lá também.
[8] Comentário enviado por davidsonpaulo em 20/07/2006 - 17:19h
Descrição do direcionador >>, de acordo com o Guia Foca Linux Iniciante, versão online:
"Redireciona a saída de um programa/comando/script para algum dispositivo ou final de arquivo ao invés do dispositivo de saída padrão (tela). A diferença entre este redirecionamento duplo e o simples, é se caso for usado com arquivos, adiciona a saída do comando ao final do arquivo existente ao invés de substituir seu conteúdo. .
Por exemplo, você pode acrescentar a saída do comando ls ao arquivo listagem do capítulo anterior usando ls / >>listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem."
Sinto muito desapontá-lo, JuNiOx, mas eu não extraí nada do que está nesse artigo do Guia Foca Linux, as diferenças entre os dois textos são gritantes e as semelhanças são coisa da sua cabeça.
[9] Comentário enviado por volcom em 26/08/2009 - 10:52h
Ahhhhh!!
Eu já estava usando tooooodos os direcionadores, mas o tee me salvou a pele pra executar um Script enviando as mensagens para a tela e para o arquivo de log ao mesmo tempo...
Ops, mas o tee sobrescreve o arquivo anterior...para resolver isso usei a opção tee -a para ele adicionar/concatenar o conteúdo!
[13] Comentário enviado por crivellari em 22/07/2014 - 09:08h
Olá tenho uma pequena dúvida
O direcionador 2>&1 é igual a &> (pelo menos fazem a mesma função)
Pelo que vejo nos exemplos e descrição que procurei na net. Quando usar um e quando usar ou outro?
Agradeço antecipadamente pela ajuda.
Um grande abraço
Crivellari