La forma en que mi indicador bash está configurado actualmente, muestra la ruta completa al directorio actual. Esto es molesto cuando estoy dentro de un árbol de directorios, ya que el mensaje se vuelve tan largo que cada comando se ajusta a la siguiente línea. ¿Cómo hago que muestre solo la última parte del camino?
Esto es lo que tengo en mi .bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
fuente
case
declaración lo anula cuando estoy en una xterm, y el problema parece estarPWD
en laPROMPT_COMMAND
línea. ¿Sabes lo que debería poner allí?\w
(minúscula) lo establece en la ruta completa,\W
(mayúscula) se recorta al bit final. PROMPT_COMMAND está configurando el título de la ventana en un xterm. verifique su variable TERM; si no comienza con "xterm" o "rxvt", PROMPT_COMMAND ni siquiera se está ejecutando.El comando simple bash replace es
Para mostrar el último directorio que puede hacer
${PWD/*\//}
, es decir, encontrar cualquier cosa antes e incluir el último '/
' y reemplazarlo por nada.En mi máquina ubuntu utilizo:
fuente
Mi solución es mostrar los tres directorios superiores e inferiores 2 cuando hay más de 5
Entonces mi aviso (que también tiene otra información) se ve así:
cuando mi pwd es en realidad
Mi indicador de PS1 se configura de la siguiente manera:
git_branch
es una función que muestra la rama git actual, la guardo en mis archivos de puntos, es:fuente
Mi solución para esto es ligeramente diferente con respecto a cómo lo exporto, así que pensé en compartirlo aquí:
Cree otra variable de cadena de solicitud; PS5 y exporta la siguiente cadena en tu
.profile
/.bash_profile
archivo:Ahora, cada vez que necesite usar la PS abreviada, simplemente ejecute:
eval $PS5
O incluso mejor aún, cree un alias en su
.bash_aliases
archivo: (gracias a @muru )source
nuevamente, y ahora puede escribirPS5
para cambiar.fuente
La mayoría de las otras soluciones no funcionaron para mí en todos mis sistemas operativos que comparten mis archivos de puntos: AIX, Windoze y Linux. Los puertos golpe eran versiones antiguas que no apoyaban ciertas construcciones y no quería que tenedor otro proceso (es decir
sed
,awk
, etc.), que es notablemente más caro bajo cygwin.Lo siguiente es largo pero eficaz:
Quiero que escupe:
Observe la falta de una barra diagonal en la última línea, que es como me gusta. Además, puede escupir los últimos 3 directorios cambiando el argumento a
DIR_LAST
.Además, traté de hacer esto con una expresión regular,
BASH_REMATCH
pero a bash v3 no parecía gustarle los parens y no pude encontrar la manera de escapar adecuadamente de ellos. Suspiro.fuente
Creo que esta opción es mucho más fácil, simplemente haciendo:
Asigne esto a la variable PS1 en su archivo .bashrc:
fuente
agregue el siguiente código al final de su ~ / .bashrc
fuente