¿Qué hace la opción which's --tty-only?

¿Qué hace la opción which's --tty-only?

Me acabo de dar cuenta de que mi administrador de sistemas ha creado un alias global para which:

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

La whichpágina de manual simplemente dice:

Detenga las opciones de procesamiento a la derecha si no están en tty.

¿Qué quiere decir esto?

Respuesta1

Configuración:

$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a

Si desea la .versión cuando se ejecuta de forma interactiva, pero la ~versión cuando se redirige, puede usar esto como alias:

/usr/bin/which --show-tilde --tty-only --show-dot

Manifestación:

# interactive / on a tty
$ /usr/bin/which --show-tilde --tty-only --show-dot a
./a
# not interactive / redirected to a file
$ /usr/bin/which --show-tilde --tty-only --show-dot a > output
$ cat output 
~/a

Todas las opciones que especifique después --tty-onlyse tienen en cuenta solo cuando la salida es un tty.

Respuesta2

Eso significaría que si la salida para whichnonoconsulte una terminal, luego haganoproceso --read-alias, --show-doty --show-tilde.

Normalmente si se trata de una tubería, una lima normal, etc.

which watch | foo # not a tty
which watch > foo # not a tty
which watch       # tty
which watch >&2   # tty

Las opciones no se reconocen en, por ejemplo,debian:

información relacionada