Qual é o nome correto para o comando ">"

38

Eu estava tentando descobrir como passar algum texto para um arquivo sem substituir o que já está usando o >comando e percebi que não sabia como ele se chama. Procura de seta para a direita ou chevron direita ou mais de comando não apareceu nada. Eu sempre chamei de passagem para .

blarg
fonte

Respostas:

53

>não é um comando, mas um redirecionamento de descritor de arquivo. Isso significa que o shell analisa essa atribuição, a remove da linha de comando e altera o ambiente para o novo processo no qual é iniciado. O novo processo não percebe essa parte da linha de comando. Essa é a razão pela qual você pode colocá-lo em qualquer lugar: no começo, no final ou no meio.

Procure o REDIRECTIONbloco man bash.

Para anexar a um arquivo existente, você precisa usar >>.

Hauke ​​Laging
fonte
Se a opção noclobberestiver configurada, >|substituirá e permitirá que o arquivo fique acumulado.
BSD
30

>é um operador de redirecionamento . Observe que o uso >para redirecionar para um arquivo regular substituirá o que já está lá, a menos que o noclobber esteja definido. >>será anexado ao final do arquivo.

Josh Jolly
fonte
E não substitui se noclobberfoi definido (bash).
precisa saber é o seguinte
Atualizei minha resposta, obrigado pelos esclarecimentos.
Josh Jolly
5
@HaukeLaging noclobbernão é apenas um basismo. É parte do POSIX
kojiro /
6

Como outras pessoas responderam, >não é um comando, mas um operador de redirecionamento. No entanto, o termo 'operador de redirecionamento' não se refere especificamente ao >, mas a vários operadores de redirecionamento possíveis. A dashpágina de manual lista o seguinte como operadores de redirecionamento:

 < > >| << >> <& >& <<- <>

Não tenho certeza se existe um nome individual válido para cada um. Talvez se você pesquisar alguns manuais antigos de shell, encontrará algo interessante. Esta fonte , correta ou incorreta, certamente pode nomear alguns deles:

>  - 'output redirection operator'
<  - 'input redirection operator'
>> - 'output append operator'

Mas também:

2> - 'standard error redirection operator'

No entanto, eu não acho que isso esteja realmente correto, já que 2tecnicamente é um argumento e não parte do operador.

Uma referência rápida (caso você não reconheça nenhum dos itens acima):

>   - redirect output stream to a file, eg >somefile (for stdout) or 2>somefile
>|  - as above but overwrite the file even if the noclobber shell option is set
>>  - append output stream to file
<   - redirect input stream from file, n defaults to 0 for stdin
<>  - open file for reading and writing on stdin
>&  - redirect output stream to another stream (eg >&1) or close with - (eg 2>&-)
<<  - here document - see http://en.wikipedia.org/wiki/Here_document
<<- - here document with leading tabs removed.

Em bashvocê também tem:

<<< - here string, a one line here file. Eg <<<"foo bar"
Graeme
fonte
Lista de referência rápida muito boa, mas não <<-remove as guias e os espaços principais?
Iconoclasta
@iconoclast, não, definitivamente apenas guias.
Graeme
0

> redireciona a saída para um arquivo (ou dispositivo) substituindo tudo o que já existe lá

>> redireciona a saída para um arquivo (ou dispositivo) anexado a qualquer coisa que já exista lá

< direciona dados de um arquivo (ou dispositivo) para um programa ou dispositivo

<< um documento aqui

les
fonte
1
<<é um documento aqui
Graeme
1
@ Graeme editei minha resposta. Obrigado pela ajuda
les