¿Cómo puedo acortar mi línea de comando (bash)?

Respuestas:

242

Para cambiarlo solo para la instancia de terminal actual

Simplemente ingrese PS1='\u:\W\$ 'y presione enter.


Para cambiarlo "permanentemente"

En tu ~/.bashrc, encuentra la siguiente sección:

if ["$ color_prompt" = yes]; entonces
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $ '
más
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $'
fi

Elimine el @\hy reemplace el \wcon una mayúscula \W, para que se convierta en:

if ["$ color_prompt" = yes]; entonces
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ W \ [\ 033 [00m \] \ $ '
más
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u: \ W \ $'
fi

Guarde, salga, cierre la terminal y comience otra para ver el resultado.


Toneladas más opciones!

  • Vea aquí un tutorial más extenso, con muchas más opciones.
  • Vea esta respuesta para usar una pequeña secuencia de comandos de Python para configurar la solicitud de modo que el acortamiento solo ocurra cuando se encuentre en una estructura de directorio profunda.
ish
fuente
1
También puede tener mucha información ... y luego un retorno de carro al final como en unix.stackexchange.com/q/88780/10043
Michael Durrant
¿Hay alguna manera de hacer esto global? En otras palabras, si sudo a otro usuario, ¿esta configuración se transfiere, pero solo para mí (es decir, no para el usuario cuando normalmente usa su cuenta)?
ctote
Para tener un .bashrc compartido que funcione tanto en Linux como en OSX, desde entonces he cambiado a unix.stackexchange.com/a/127800/10043
Michael Durrant
es decir, HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } 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\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
Michael Durrant
pero vea la respuesta para usar el código real.
Michael Durrant
104

Ejecute este código en la terminal actual

PROMPT_DIRTRIM=3

Ahora el indicador bash mostrará solo los últimos 3 nombres de directorio. Puede elegir 1 para mostrar solo el directorio actual. Más información está disponible en la documentación de GNU .

El efecto:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

Si desea hacerlo permanentemente, agregue la siguiente línea al ~/.bashrcprincipio:

PROMPT_DIRTRIM=3

u otro número mayor que cero.

santosh Mahto
fuente
77
Solo una nota al margen: Esto requiere Bash 4.
Stefan Lasiewski
Agradable ... agregué un bach_alias para esto (con una función) promptdir() { PROMPT_DIRTRIM=$1; }solo para hacer la vida más fácil ...
dgoosens
18

Esta es mi configuración de solicitud preferida:

añadido en ~/.bashrc

PS1='[\u@\h \W]\$ '    

se parece a esto:

[user@hostname dirname]$

(con un espacio después del $letrero)

no lavable
fuente
¿Cómo agregaría un espacio entre cada palabra? Además, ¿puedo colorearlo?
Daniel Springer
6

Personalmente prefiero ver solo la carpeta actual en el indicador de bash. Puedo hacer esto con el siguiente comando:

PS1='\W\$ '

Si desea que surta efecto después de cada inicio, agregue el comando anterior en su ~ / .bashrc.

Rajeev Jayaswal
fuente
1

Me doy cuenta de que esto es muy antiguo, pero como nadie sugirió crear un alias, pensé que lo publicaría. Usando secuencias de escape de Bash Prompt hice un aliasshorten

En ~/.bash_aliasesaquí se dará cuenta de la var $ azul para establecer el color indicador que se puede omitir o cambiar basada en la preferencia también puedo borrar el terminal cuando se llama a acortarse.

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

Para lograr la cadena de solicitud deseada del OP:

alias shorten='PS1="$USER:\W$ "'

Tengo colores definidos en ~/.bashrccopia y pegados desde https://wiki.archlinux.org/index.php/Color_Bash_Prompt . En una nota al margen, ¿qué pasa con los colores del código ansi? Estoy confundido solo de mirarlo.

Blue='\e[0;34m'         # Blue
Allie Carver
fuente
Una guía paso a paso para esto sería muy útil ya que no tengo idea de cómo llegar a .bash_aliases. Gracias
Kayote
2
"." el prefijo indica un directorio o archivo oculto. La tilde "~" es una forma corta de la variable $ HOME. Entonces, "~ / .bash_aliases" es solo una forma corta de "/home/$USER/.bash_aliases". Para abrir ".bash_aliases" puede abrir un terminal y escribir "gedit /home/$USER/.bash_aliases" o "gedit ~ / .bash_aliases" o en su directorio de inicio escriba ctrl-h para mostrar archivos ocultos y abrir archivos directamente . Espero que ayude. Es posible que desee hacer una búsqueda en Google de alias útiles también.
Allie Carver
0

Yo escribí una función se puede modificar para que se adapte a sus necesidades:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

Coloque esta función en o cerca de la parte inferior ~/.bashrcdespués de que la PS1línea se haya calculado completamente.

Debería escribir termpromptcada vez que quiera acortar su solicitud o, si ha termpromptllamado desde la parte inferior de su ~/.bashrcpermanencia.

La ventaja de esta técnica sobre muchas otras respuestas es que se .bashrcpuede configurar PS1de cuatro maneras diferentes (xterm + sin color, xterm + color, no-xterm + no-color, no-xterm + color). Esta respuesta admite los cuatro métodos actuales y probablemente también métodos futuros.

Otra ventaja es que este método tiene códigos de control menos complejos para atravesar para insertar sus cambios.

WinEunuuchs2Unix
fuente