No muestre la pila pushd / popd en varios scripts de bash (pushd / popd silencioso)


95

Cada vez que utilizo pushd o popd, imprime la pila en la salida estándar. ¿Cómo no hacerlo?

No quiero hacer pushd > /dev/null cada vez porque tengo muchos guiones llamándose entre sí.

Tal vez una buena anulación lo haga, pero necesitaré anular estas incorporaciones solo en mis scripts y luego restaurar el comportamiento correcto.


2
Si alguien se encontró con esta pregunta y deseaba silenciar una sola ocurrencia, puede reemplazar pushdy popdcon cdy cd ~-. ~-es una expansión de tilde que se establece en $ OLDPWD .
— Agustín Lado

@ AgustínLado cd -también trabaja. No estoy seguro de qué versión es más compatible con una amplia gama de sistemas.
— Shiplu Mokaddim

1
@ShipluMokaddim: Sin tilde, imprime el nombre de la carpeta (al menos en Ubuntu 18.04 que se ejecuta en WSL).
— Astraujums

Si usted tiene una secuencia de comandos entre una cd some/pathy una cd -o cd "${return_wd}"o algo similar, tenga en cuenta la agrupación de los comandos en el medio en una función y utilizar un subnivel como (cd some/path; your_commands_here). La navegación del directorio de regreso al antiguo PWD está implícita al final de la subcapa. También funciona para sustituciones de comandos.
— user4642212

Respuestas:


136

Podrías agregar

pushd () {
    command pushd "$@" > /dev/null
}

popd () {
    command popd "$@" > /dev/null
}

al principio de cada guión. Esta es probablemente la cantidad mínima de trabajo que se necesitará para resolver su problema.


Exactamente lo que necesitaba ... ¡Gracias!
— RonzyFonzy

Si también desea silenciar los errores (por ejemplo, no existe ese directorio), puede usar en &>lugar de>
— MattSturgeon

4
Tenga cuidado al silenciar errores: podría crear una falla difícil de diagnosticar en una fecha posterior. Asegúrese de verificar si hay un código de retorno incorrecto y responda en consecuencia.
— David Spillett

1
@ xdevs23 || exit $?es equivalente a solo || exit. Lo mismo para return.
— user4642212

1
@bmacnaughton No tiene ningún argumento requerido ; acepta -nuna familia completa de argumentos -Ny +N(para un número entero N).
— chepner

3

En su archivo .profile (como se llame en su sistema) agregue:

pushd () {
    command pushd "$@" > /dev/null
}

popd () {
    command popd "$@" > /dev/null
}

export pushd popd

13
Esto afecta a todo el sistema ... personalmente, no recomiendo de esta manera. .
— Sean83

3

En zsh puedes setopt PUSHDSILENT. Pon esto en tu ~/.zshrc.


1
O use popd -q(silencioso).
— rxw

5
popd no tiene -qopción
— MarekN

2
@MarekN: el comentario anterior de "popd -q" se refería a zsh, no a bash, a pesar de que la pregunta original estaba etiquetada como que quería respuestas de bash, no zsh.
— b-jazz

Este es un buen comentario o una tangente a una respuesta, pero no pertenece como una respuesta independiente a una pregunta sobre la que no se está preguntando zsh.
— chepner
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.