Qual è il nome corretto per il comando “>”


38

Stavo cercando di trovare come passare un po 'di testo a un file senza sovrascrivere cosa c'è già usando il >comando e mi sono reso conto che non so come si chiama. La ricerca della freccia destra o del gallone destro o più del comando non ha mostrato nulla. L'ho sempre chiamato pass a .

Risposte:


53

>non è un comando ma un reindirizzamento del descrittore di file. Ciò significa che la shell analizza questo compito, lo rimuove dalla riga di comando e cambia l'ambiente per il nuovo processo in cui viene avviato. Il nuovo processo non nota questa parte della riga di comando. Questo è il motivo per cui puoi metterlo ovunque: all'inizio, alla fine o nel mezzo.

Cerca il REDIRECTIONblocco in man bash.

Per aggiungere un file esistente è necessario utilizzare >>.


Se l'opzione noclobberè impostata, >|sostituirà e consentirà di bloccare il file.
bsd

30

>è un operatore di reindirizzamento . Si noti che l'utilizzo >per reindirizzare a un file normale sovrascriverà ciò che è già lì, a meno che non sia impostato noclobber . >>verrà aggiunto alla fine del file.


E non sovrascrive se noclobberè stato impostato (bash).
Hauke ​​Laging,

Aggiornato la mia risposta, grazie per i chiarimenti.
Josh Jolly,

5
@HaukeLaging noclobbernon è solo un bashismo. Fa parte di POSIX
kojiro

6

Come altre persone hanno risposto, >non è un comando, ma piuttosto un operatore di reindirizzamento. Tuttavia, il termine "operatore di reindirizzamento" non si riferisce specificamente a >, ma a un numero di diversi operatori di reindirizzamento possibili. La dashpagina man elenca i seguenti come operatori di reindirizzamento:

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

Non sono sicuro che esista un nome individuale valido per ognuno. Magari se si sfogliano alcuni vecchi manuali di shell troverai qualcosa di interessante. Questa fonte , corretta o errata, ha sicuramente un vantaggio nel nominarne alcune:

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

Ma anche:

2> - 'standard error redirection operator'

Tuttavia, non penso che questo sia veramente corretto, dal momento che 2tecnicamente è un argomento piuttosto che parte dell'operatore.

Un riferimento rapido (nel caso in cui non riconoscessi nessuno di quelli sopra):

>   - 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.

In bashte hai anche:

<<< - here string, a one line here file. Eg <<<"foo bar"

Elenco di riferimento rapido molto bello, ma non <<-rimuove le schede e gli spazi iniziali?
iconoclasta,

@iconoclast, no, sicuramente solo schede.
Graeme,

0

> reindirizza l'output su un file (o dispositivo) sovrascrivendo qualsiasi cosa già esistente lì

>> reindirizza l'output su un file (o dispositivo) accodando a qualsiasi cosa già esistente lì

< dirige i dati da un file (o dispositivo) a un programma o dispositivo

<< un documento qui


1
<<è un documento qui
Graeme,

1
@ Graeme ho modificato la mia risposta. Grazie per l'aiuto
les
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.