shell – ¿Por qué muchos comandos ofrecen una opción "silenciosa"?

Pregunta:

¿Por qué muchos comandos proporcionan la opción -q o --quiet para suprimir la salida cuando puede lograr fácilmente lo mismo al redirigir la salida estándar al archivo nulo?

Respuesta:

  • Si bien puede redirigir fácilmente en un shell, hay otros contextos en los que no es tan fácil, como cuando se ejecuta el comando en otro idioma sin usar una línea de comandos de shell. Incluso en un caparazón:

     find . -type f -exec grep -q foo {} \; -printf '%s\n'

    para imprimir el tamaño de todos los archivos que contienen foo . Si redirige a /dev/null , pierde tanto la salida de find como la de grep . -exec sh -c 'exec grep foo "$1" > /dev/null' sh {} \; recurrir a -exec sh -c 'exec grep foo "$1" > /dev/null' sh {} \; (es decir, genera un caparazón adicional).

  • grep -q foo es más corto de escribir que grep foo > /dev/null
  • Redirigir a /dev/null significa que la salida aún se escribe y luego se descarta, eso es menos eficiente que no escribirla (y no asignar, preparar esa salida para ser escrita)
  • que permite mayores optimizaciones. En el caso de grep por ejemplo, dado que con -q , grep sabe que la salida no es necesaria, sale tan pronto como encuentra la primera coincidencia. Con grep > /dev/null , todavía intentaría encontrar todas las coincidencias.
  • tranquila, no significa necesariamente silencioso. Para algunos comandos, significa reducir la verbosidad (lo contrario de -v|--verbose ). Por ejemplo, mplayer tiene un --quiet y un --really-quiet . Con algunos comandos, puede usar -qqq para disminuir el -qqq de -qqq 3 veces.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım