2010-05-08 31 views
9

¿Cuáles son exactamente los usos de '-' en bash? Sé que pueden ser utilizados para¿Qué significa '-' en bash?

  1. cd - # que le llevará a la antigua 'directorio de trabajo actual'
  2. some stream generating command | vim - # vim alguna manera se pone el texto.

Mi pregunta es ¿qué es exactamente - en bash? ¿En qué otros contextos puedo usarlo?

Saludos Arun

+4

@Jonas: Bash ** Scripting ** es el nombre. – aviraldg

Respuesta

17

Eso depende de la aplicación.

cd - 

vuelve al último directorio en el que se encontraban.

menudo - representa stdin o stdout. Por ejemplo:

xmllint - 

no comprueba un archivo XML, pero comprueba el código XML en stdin. Muestra:

xmllint - <<EOF 
<root/> 
EOF 

Lo mismo es cierto para cat:

cat - 

lee de stdin. Una última muestra donde - representa stdout:

wget -O- http://google.com 

recibirán google.com mediante HTTP y enviarlo en stdout.

Por cierto: eso no tiene nada que ver con su shell (por ejemplo, bash). Es solo semántica de la aplicación llamada.

1

De tldp:

Esto puede hacerse, por ejemplo utilizando un guión (-) para indicar que un programa debe leer de una tubería

Esto explica cómo su ejemplo vim obtiene sus datos .

3

- en bash no tiene significado como un argumento independiente (yo no iría tan lejos como para decir que no tiene un significado en la cáscara del todo - es por ejemplo utilizado en expansión, por ejemplo ls [0-9]* listas de todos los archivos que comienzan con un dígito).

En cuanto a ser un valor de parámetro independiente, bash no hará absolutamente nada especial con él y pasará a un comando tal como está.

Lo que hace el comando depende de cada programa individual, puede ser casi cualquier cosa.

Existe una convención de uso común que indica que el argumento - indica a un programa que la entrada necesita leerse de STDIN en lugar de un archivo.Una vez más, esto es simplemente cuántos programas están codificados y técnicamente no tiene nada que ver con bash.