English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A maioria dos comandos do sistema UNIX aceita entrada do terminal e envia o output de volta para o seu terminal. Um comando geralmente lê a entrada do local chamado entrada padrão, que, por padrão, é o seu terminal. Da mesma forma, um comando geralmente escreve a saída para o output padrão, que, por padrão, também é o seu terminal.
A lista de comandos de redirecionamento é a seguinte:
Comando | Descrição |
---|---|
command > file | Redirecione a saída para file. |
command < file | Redirecione a entrada para file. |
command >> file | Redirecione a saída para file de forma anexada. |
n > file | Redirecione o arquivo com o descritor de arquivo n para file. |
n >> file | Redirecione o arquivo com o descritor de arquivo n para file de forma anexada. |
n >& m | Combine os arquivos de saída m e n. |
n <& m | Combine os arquivos de entrada m e n. |
<< tag | Use o conteúdo entre as marcas de início tag e a marca de fim tag como entrada. |
É importante notar que o descritor de arquivo 0 é geralmente a entrada padrão (STDIN),1 É a saída padrão (STDOUT),2 É a saída de erro padrão (STDERR).
A redireção geralmente é realizada inserindo símbolos específicos entre os comandos. Em particular, a sintaxe desses símbolos é mostrada a seguir:
comando1 > file1
Este comando executa command1Em seguida, salve o conteúdo da saída no arquivo file1.
Atenção para qualquer file1O conteúdo existente dentro será substituído pelo novo conteúdo. Se você desejar adicionar o novo conteúdo no final do arquivo, use o operador >>.
Execute o comando who a seguir, que redirecionará o comando completo para o arquivo de usuário (users):
$ who > users
Após a execução, não há informações sendo exibidas no terminal, pois a saída foi redirecionada para o dispositivo padrão de saída (terminal) especificado.
Você pode usar o comando cat para visualizar o conteúdo do arquivo:
$ cat users _mbsetupuser console Out 31 17:35 tianqixin console Out 31 17:35 tianqixin ttys000 Dez 1 11:33
A redireção de saída substituirá o conteúdo do arquivo, veja o exemplo a seguir:
$ echo "Base Tutorial: pt.oldtoolbag.com" > users $ cat users Base Tutorial: pt.oldtoolbag.com $
Se você não deseja que o conteúdo do arquivo seja substituído, você pode usar >> para anexar ao final do arquivo, por exemplo:
$ echo "Base Tutorial: pt.oldtoolbag.com" >> users $ cat users Base Tutorial: pt.oldtoolbag.com Base Tutorial: pt.oldtoolbag.com $
Da mesma forma que a redireção de saída, os comandos Unix também podem obter entrada de arquivos, com a sintaxe:
comando1 < file1
Dessa forma, o comando que originalmente precisaria de entrada do teclado será transferido para a leitura de conteúdo do arquivo.
Atenção: a redireção de saída é indicada pelo sinal de maior (>), enquanto a redireção de entrada é indicada pelo sinal de menor (<).
Continuando com o exemplo acima, para contar o número de linhas no arquivo users, execute o seguinte comando:
$ wc -l users 2 users
Também pode redirecionar entrada para o arquivo users:
$ wc -l < users 2
Atenção: os resultados dos dois exemplos acima são diferentes: no primeiro exemplo, o nome do arquivo é exibido; no segundo, não é, porque ele sabe apenas que lê conteúdo do entrada padrão.
comando1 < infile > outfile
Substitui entrada e saída, executando o comando1lê conteúdo do arquivo infile e escreve a saída para outfile.
Geralmente, cada Unix/Os comandos do Linux sempre abrem três arquivos durante a execução:
Arquivo de entrada padrão (stdin): o descritor de arquivo do stdin é 0, e os programas Unix lêem dados do stdin pelo padrão.
Arquivo de saída padrão (stdout): o descritor de arquivo do stdout é1programas Unix输出的默认数据到stdout.
Arquivo de erro padrão (stderr): o descritor de arquivo do stderr é2programas Unix escrevem informações de erro no fluxo stderr.
Pelo padrão, command > arquivo redireciona stdout para o arquivo, e command < arquivo redireciona stdin para o arquivo.
Se desejar redirecionar stderr para o arquivo, pode ser escrito assim:
$ command 2>arquivo
Se desejar que stderr seja anexado ao final do arquivo, pode ser escrito assim:
$ command 2>>arquivo
2 representa o arquivo de erro padrão (stderr).
Se desejar redirecionar stdout e stderr para um arquivo, pode ser escrito assim:
$ command > arquivo 2>&1 ou $ command >> arquivo 2>&1
Se desejar redirecionar stdin e stdout, pode ser escrito assim:
$ command < arquivo1 >arquivo2
o comando 'command' redireciona stdin para o arquivo1redirecionar stdout para o arquivo2.
Here Document é um tipo especial de redirecionamento de entrada no Shell, usado para redirecionar entrada para um script ou programa Shell interativo.
Sua forma básica é a seguinte:
comando << delimitador documento delimitador
Sua função é passar o conteúdo (documento) entre dois delimitadores como entrada para o comando.
Atenção:
O delimiter no final deve estar alinhado à margem, sem nenhum caractere antes ou depois, incluindo espaços e tabulações de recuo.
Os espaços antes e depois do delimiter no início serão ignorados.
No comando de linha de comando, através do wc -O comando l calcula o número de linhas do Here Document:
$ wc -l << EOF Bem-vindo ao Site de Manual Básico pt.oldtoolbag.com EOF 3 # Resultado de saída 3 linha $
Também podemos usar Here Document em scripts, por exemplo:
#!/bin/bash # autor:Site de Manual Básico # url:pt.oldtoolbag.com cat << EOF Bem-vindo ao Site de Manual Básico pt.oldtoolbag.com EOF
Execute o script acima, o resultado é:
Bem-vindo ao Site de Manual Básico pt.oldtoolbag.com
Se quiser executar um comando, mas não quiser exibir o resultado na tela, pode redirecionar a saída para /dev/null:
$ command > /dev/null
/dev/null é um arquivo especial, o conteúdo escrito nele será descartado; se tentar ler conteúdo do arquivo, nada será lido. Mas /dev/null arquivo é muito útil, redirecionar a saída do comando para ele terá o efeito de "proibir a saída".
Se quiser ocultar stdout e stderr, pode ser escrito assim:
$ command > /dev/null 2>&1
Atenção:0 é a entrada padrão (STDIN),1 É a saída padrão (STDOUT),2 É a saída de erro padrão (STDERR).
Aqui 2 e > Entre eles não pode haver espaços,2> Aqui é indicado o erro de saída.