¿Qué significan los argumentos '-v' y '-x' para golpear?

17

He visto un par de scripts de shell con el siguiente shebang:

#!/bin/bash -x -v 

Sin embargo, man bashno explica por qué estos argumentos -xy -vreposar, si son pertenecen a bashen absoluto.

Entonces, ¿qué significan esos -xy -v(y otros posibles argumentos)?

Alex
fuente

Respuestas:

26

De man bash(sí, es una gran página de manual, generalmente la búsqueda de Google es más rápida):

-x Después de expandir cada comando simple, para comando, comando de caso, comando de selección o aritmética para comando, muestre el valor expandido de PS4, seguido del comando y sus argumentos expandidos o la lista de palabras asociadas.

Efectivamente: cuando ejecuta un script, mostrará todas las acciones realizadas en ese script. Entonces todos los ifs, loops y comandos se ejecutan. Muy útil para depurar.

-v Imprima líneas de entrada de shell a medida que se leen. Cuando se ejecuta un script, imprimirá todo el script mientras lee el archivo. Cuando usa el shell de forma interactiva, mostrará cada comando después de presionar enter.

Las citas anteriores son de la explicación del setcomando incorporado en el man bash, que también explica que las opciones para settambién se pueden pasar como argumentos (en la línea shebang):

Las opciones están desactivadas por defecto a menos que se indique lo contrario. El uso en + lugar de -hace que estas opciones se desactiven. Las opciones también se pueden especificar como argumentos para una invocación del shell. El conjunto actual de opciones se puede encontrar en $-. El estado de devolución siempre es verdadero a menos que se encuentre una opción no válida.

mtak
fuente
Ok, entonces es un argumento simple para bash, y ¿podría tener una versión diferente sin estos argumentos?
Alex
Si está hablando de bash: creo que todos los lanzamientos de bash de la última década respaldarán estos argumentos. Si está hablando de la página de manual: es enorme y necesita saber lo que está buscando, pero está allí (al menos en Ubuntu 13.04). Por lo general, una búsqueda en Google es más rápida.
mtak
66
+1 "La búsqueda de Google es más rápida" -> /-xun par de veces lo llevará allí man( en realidad, es less). Puede repetir la última búsqueda con /la flecha + hacia arriba, pero tiene que desplazarse hacia abajo para obtener cualquier resultado de búsqueda actual de la pantalla ( /es búsqueda hacia adelante, ?es hacia atrás).
Ricitos
2
@ TAFKA'goldilocks 'Supongo que depende de tu distribución. En la página del manual de Ubuntu 13.04 bash, el número 43 es el correcto. Es más fácil buscar el siguiente resultado en menos utilizando la nbúsqueda hacia adelante y la búsqueda Nhacia atrás.
mtak
Vaya, de hecho estaba mirando test -xbajo EXPRESIONES CONDICIONALES (el tercer golpe), no set -x. -xen man bashes un caso bastante malo así que conseguir ayuda más específica: si utiliza /^\s+-x\b, (= inicio de la línea + espacio en blanco + -x+ límite de palabra) se llega a la correcta en 5 golpes ... habría sido 4, pero por el hecho de xpartidos X... lo que me lleva a una pregunta que he querido hacer . De todos modos, con la mayoría de las páginas man, el ^\s+-x\bpatrón debería funcionar primero intente con los interruptores.
Ricitos
2

La página del manual de bash hace indicio de que estas opciones se explican más abajo, en realidad, pero se pasa por alto fácilmente.

Por lo tanto, su problema debería leer: La sección OPCIONES de la página del manual de bash está incompleta. La respuesta sería duplicarlos o resaltar la primera sección de la sección OPCIONES:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

Finalmente, para completar esto: son opciones estándar para cualquier shell POSIX para mostrar el código del script cuando se lee ( -v) y cuando se ejecuta ( -x). La salida aparecerá en stderr.

Henk Langeveld
fuente