2011-11-08 10 views

Respuesta

71

Si se refiere al - desnudo al final del comando tar, eso es común en muchos comandos que desean usar un archivo.

Le permite especificar la entrada o salida estándar en lugar de un actual nombre de archivo.

Ese es el caso para su primer y tercer ejemplo. Por ejemplo, el comando cdrecord toma la entrada estándar (la secuencia de imagen ISO producida por mkisofs) y la escribe directamente en /dev/dvdrw.

Con el comando cd, cada vez que cambia de directorio, almacena el directorio desde el que vino. Si hace cd con el "nombre de directorio" - especial, usa ese directorio recordado en lugar de uno real. Puede cambiar fácilmente entre dos directorios rápidamente usando eso.

Otros comandos pueden tratar - como valor diferente especial.

+0

claro para mí, muchas gracias. – chemila

+4

tenga en cuenta que también puede usar '-' para las ramas de git, es decir, puede volver a la rama anterior con' git checkout -' – snappieT

+3

¿Dónde en los documentos tar explica que es compatible? ¿Cómo sé qué comandos lo soportan? –

4

Significa utilizar el flujo de entrada estándar del programa.

En el caso de cd, significa algo diferente: cambie al directorio de trabajo anterior.

11

No es mágico. Algunos comandos interpretan - como el usuario que desea leer de stdin o escribir en stdout; no hay nada especial al caparazón.

+6

Excepto en el caso de 'cd -'; 'bash (1)' maneja 'cd -' como si hubiera escrito' cd $ OLDPWD'. – sarnold

+4

@sarnold Pero el punto es el mismo, 'cd', un comando integrado de shell, interpreta un guion en sí mismo. No hay "magia" :-) –

+1

@pst, seguro, no hay magia (todo es solo código :), pero hay algo especial en el caparazón. – sarnold

5

La magia está en la convención. Durante milenios, las personas han usado '-' para distinguir las opciones de los argumentos, y han usado '-' en un nombre de archivo para indicar stdin o stdout, según corresponda. ¡No subestimes el poder de la convención!

5

- significa exactamente lo que cada comando quiere que signifique. Existen varias convenciones comunes, y usted ha visto ejemplos de la mayoría de ellas en otras respuestas, pero ninguna de ellas es 100% universal.

No hay nada mágico sobre el carácter - en lo que se refiere a la cáscara (excepto que el depósito propiamente dicho, y algunos de sus comandos internos como cd y echo, lo usan de forma convencional). Algunos caracteres, como \, ' y ", son "mágico", que tienen un significado especial donde sea que aparezcan. Estos son "metacaracteres de caparazón". - no es así. Para ver cómo un comando determinado usa -, lea la documentación para ese comando.

Cuestiones relacionadas