GNU/Linux >> Tutoriales Linux >  >> Linux

Mostrar solo el nombre del directorio actual (no la ruta completa) en el indicador de bash

Cambia el \w (minúsculas) a \W (mayúsculas):

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
                                                                                       ^^
           this one waaaaaay over here ------------------------------------------------+    

Eche un vistazo al CÓMO de Bash Prompt para obtener muchos detalles divertidos. ejemplo:

[email protected]:/usr/local/bin$ echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ 

[email protected]:/usr/local/bin$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]\$ '

[email protected]:bin$

El PROMPT_COMMAND variable, si se establece, es un comando que se ejecuta antes de mostrar el indicador especificado en PS1 . En tu caso, PROMPT_COMMAND ejecuta un echo declaración con ciertas secuencias de escape ANSI que manipulan la barra de título de un Xterm.

Si sospechas que tu PROMPT_COMMAND está anulando tu PS1 solicitud, puede unset y probar cosas:

$ unset PROMPT_COMMAND

Finalmente, asegúrese de cambiar el PS1 definición que realmente se utiliza. Las ubicaciones comunes son /etc/bash.bashrc , /etc/profile , ~/.bashrc , ~/.bash_profile , ~/.profile . Los archivos del sistema generalmente (pero no siempre) se ejecutan antes que los archivos del usuario.


El comando bash replace simple es

${VAR/pattern_to_find/pattern_to_replace}

Para mostrar el último directorio, solo puede hacer ${PWD/*\//} , es decir, encontrar cualquier cosa antes e incluyendo el último '/ ' y reemplazarlo con nada.

En mi máquina ubuntu uso:

export PS1='$(whoami):${PWD/*\//}#'. 

Mi solución es mostrar los tres directorios superiores y los 2 inferiores cuando hay más de 5

Así que mi aviso (que también tiene otra información) se ve así:

08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote

cuando mi pwd es en realidad

/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote

Mi aviso de PS1 está configurado de la siguiente manera:

HOST='\[\033[02;36m\]\h'; HOST=' '$HOST
TIME='\[\033[01;31m\]\t \[\033[01;32m\]'
LOCATION=' \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH

git_branch es una función que muestra la rama actual de git, la guardo en mis archivos de puntos, es:

git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
  }

Linux
  1. Comando no encontrado en Bash arreglado

  2. ¿Resaltar separadores de ruta en Ps1?

  3. Cómo ejecutar el comando "buscar" solo en el directorio actual y no en los subdirectorios

  4. ¿Núcleo volcado, pero el archivo principal no está en el directorio actual?

  5. Eliminar solo archivos en el directorio en linux NO directorios

¿Directorio actual abreviado en el indicador de Shell?

¿Cómo configurar el símbolo del sistema en Linux para mostrar el directorio actual?

El indicador de bash de Docker no muestra la salida de color

¿Cómo mostrar la ruta actual en el símbolo del sistema en sh (no bash) de Linux?

Rsync copiando el directorio actual con nombre

¿Cómo acorto la ruta del directorio actual que se muestra en la terminal?