¿Cuál es el nombre correcto para el comando ">"

38

Estaba tratando de encontrar cómo pasar texto a un archivo sin sobrescribir lo que ya está usando el >comando y me di cuenta de que no sé cómo se llama. La búsqueda de la flecha derecha o el galón derecho o más que el comando no mostró nada. Siempre lo he llamado pase a .

blarg
fuente

Respuestas:

53

>no es un comando sino una redirección de descriptor de archivo. Esto significa que el shell analiza esta asignación, la elimina de la línea de comando y cambia el entorno para el nuevo proceso en el que se inicia. El nuevo proceso no nota esta parte de la línea de comando. Esa es la razón por la que puedes ponerlo en todas partes: al principio, al final o en el medio.

Busque el REDIRECTIONbloque adentro man bash.

Para adjuntar a un archivo existente que necesita usar >>.

Hauke ​​Laging
fuente
Si la opción noclobberestá configurada, >|anulará y permitirá bloquear el archivo.
bsd
30

>es un operador de redireccionamiento . Tenga en cuenta que el uso >para redirigir a un archivo normal sobrescribirá lo que ya está allí, a menos que no se configure noclobber . >>se agregará al final del archivo.

Josh Jolly
fuente
Y no se sobrescribe si noclobberse ha establecido (bash).
Hauke ​​Laging
Actualicé mi respuesta, gracias por las aclaraciones.
Josh Jolly
55
@HaukeLaging noclobberno es solo un bashismo. Es parte de POSIX
kojiro
6

Como han respondido otras personas, >no es un comando, sino un operador de redireccionamiento. Sin embargo, el término "operador de redireccionamiento" no se refiere específicamente a >, sino a varios operadores de redireccionamiento posibles. La dashpágina de manual enumera lo siguiente como operadores de redirección:

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

No estoy seguro de que haya un nombre individual válido para cada uno. Tal vez si buscas en algunos viejos manuales de shell encontrarás algo interesante. Esta fuente , correcta o incorrecta, sin duda tiene una oportunidad para nombrar algunos de ellos:

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

Pero también:

2> - 'standard error redirection operator'

Sin embargo, no creo que esto sea realmente correcto ya 2que técnicamente es un argumento más que parte del operador.

Una referencia rápida (en caso de que no reconozca ninguno de los anteriores):

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

En bashti también tienes:

<<< - here string, a one line here file. Eg <<<"foo bar"
Graeme
fuente
Muy buena lista de referencia rápida, pero ¿no <<-elimina las pestañas y espacios iniciales?
iconoclasta
@iconoclast, no, definitivamente solo pestañas.
Graeme
0

> redirige la salida a un archivo (o dispositivo) sobrescribiendo cualquier cosa que ya exista allí

>> redirige la salida a un archivo (o dispositivo) que se agrega a cualquier cosa que ya exista allí

< dirige datos desde un archivo (o dispositivo) a un programa o dispositivo

<< un documento aquí

les
fuente
1
<<es un documento aquí
Graeme
1
@ Graeme, edité mi respuesta. Gracias por la ayuda
les