Operadores de redirecionamento são fundamentos essenciais no mundo *NIX, tanto que quase todo shell script mais avançado usa e abusa desse recurso. Para descobrir o que cada um dos operadores faz, você pode dar uma olhadinha neste artigo.
Os operadores > e >> são usados para redirecionar a saída de um programa para um arquivo. A sintaxe é muito simples que dá pena:
comando > arquivo
comando >> arquivo
O operador >
O operador > é usado para sobrescrever um arquivo com a saída do comando. Por exemplo:
$ ls > arqs
A saída não será nenhuma se tudo ocorreu bem. Agora ao dar "ls" normalmente você verá um arquivo a mais que é o 'arqs'. Tente dar um cat:
$ cat arqs
(saída do cmd 'ls')
Você pode usar o comando echo para escrever mensagens personalizadas. Veja como:
$ echo "É só um teste" > arqs
$ cat arqs
É só um teste
Algumas características:
O arquivo será sobrescrito! Cuidado para não fazer nenhuma m...
Caso não se tenha permissão para escrever no arquivo, vai dar erro (o que tu esperava?).
Caso o arquivo não exista, ele será criado.
O operador >>
Seria a mesma coisa que o >, mas com uma diferença: ele não sobrescreve o arquivo. Neste caso você poderá escrever mais. Dê uma olhada:
$ rm teste
-> É bom, caso o arquivo exista poderá nos atrapalhar um pouco
$ echo "Os arquivos são:" >> teste
$ ls ~ >> teste
$ echo "Fim dos arquivos:" >> teste
$ cat teste
Os arquivos são:
(os arquivos do diretório $HOME)
Fim dos arquivos:
Tente fazer com o operador > e compare o resultado. Você consegue explicar porque?
As características são a mesmas, com a diferença que o arquivo não será sobrescrito.
[3] Comentário enviado por pop_lamen em 18/11/2004 - 14:48h
Bom o artigo, mas faltou muita coisa....
Por exemplo faltou cobrir o redirecionamento de fluxo para devices,
exemplo:
echo fuck > /dev/null
dentre outors.
Mas mesmo assim ta valendo, t+!
[4] Comentário enviado por jllucca em 19/11/2004 - 13:31h
Olá,
cara o artigo ta excelente. Só discordo do "2>" ser um operador. No mundo *nux, nós temos normalmente três arquivos abertos(não tenho certeza da ordem stdin e stdout): 0(stdin), 1(stdout), 2(stderr). Assim, quando fazemos "2>algo" estamos fazendo o dispositivo "/dev/stderr" enviar suas mensagens para algo. Essa parte teria sido uma ótima ancora pra voce falar de redirecionamento para dispositivos como o pop_lamen já comentou. Assim, voce, ao inves de stderr, poderia usar:
[7] Comentário enviado por Stuani255 em 27/05/2016 - 11:30h
Alguem pode dar um exemplo usando redirecionamento criando um arquivo txt? Estou começando agora a aprender shell script e pra mim esses comandos são meio vagos.