2010-09-26 18 views
6

¿Es "-" un atajo para stdout in bash? Si no, ¿qué significa? Por ejemplo,¿"-" significa stdout en bash?

wget -q -O - $line 

¿Qué tal stdin?

¡Gracias y saludos!

+1

Para aquellos que votaron cerrar: wget y otras utilidades son aplicaciones de usuario, pero en realidad se usan en la programación de shell, que se analiza en SO. En mi humilde opinión, este tipo de pregunta está al límite entre SO y SU, así que para mí es mejor dejarlos en el sitio donde están abiertos. –

Respuesta

13

Por lo que sé, bash no está involucrado con el uso de dash. Es solo una convención de muchas utilidades de línea de comandos de UNIX aceptar - como marcador de posición para stdin o stdout cuando se coloca en lugar de un nombre de archivo de entrada o salida en la línea de comando.


Editar: encontró, este comportamiento se especifica en el POSIX Utility Syntax Guidelines, §12.2.13 de Especificaciones La Base Open Group:

Para las compañías que utilizan operandos para representar los archivos se abra para lectura o escritura, la '- 'operando debe usarse solo para significar entrada estándar (o salida estándar cuando está claro desde el contexto que se está especificando un archivo de salida).
1

Depende del programa. Usualmente, - significa "enviar a la salida".

Uso read:

#!/bin/bash 

echo -n "What's your name? " 
read var1 
echo "hello $var1" 
8

- es sólo una convención utilizada por wget (y un buen número de otras herramientas) para indicar la salida se va a enviar a la salida estándar. No es parte de bash, pero es un caso especial tratado por el comando mismo (algunos comandos terminarán creando un archivo "-" si supone que es así). Puede reemplazarlo por /dev/stdout (y generalmente puede usar /dev/stdin como archivo de entrada cuando corresponda).

+1

Como han dicho otros, "' -' "también se usa a veces para indicar'/dev/stdin' cuando el parámetro espera una entrada en su lugar. – Bruno

2

- no es especial en bash, simplemente se da como un parámetro para el programa. Luego depende del programa cómo interpreta ese -.

Comúnmente denota que se debe usar stdin o stdout, dependiendo del contexto.

Cuestiones relacionadas