Ocultar el directorio de trabajo actual en la terminal

112

De manera predeterminada, el mensaje de la terminal muestra algo como:

user@system:/folder1/folder2/folder3/folder4$

cuanto más profundo ingresa al sistema de archivos, menos espacio queda para escribir comandos. ¿Puedo cambiar esto para mostrar solo algo como:

>

Quiero decir, puedo escribir pwd para mostrar dónde estoy. ;)

    
pregunta Theodor 09.12.2010 - 10:16

5 respuestas

129
export PS1='\u@\h: '

Eso da como resultado oli@bert: para mi solicitud.

Si realmente quieres algo tan minimalista como lo pides, prueba esto:

export PS1='> '

Puede adjuntar eso al final de su archivo ~/.bashrc para que persista entre los inicios de sesión.

También puedes ser creativo con algunos colores. Esto es lo que uso en mis servidores:

export PS1='\[3[0;35m\]\h\[3[0;33m\] \w\[3[00m\]: '

Dar (es más fácil ver en un fondo negro completo):

Glosario de caracteres aceptables en PS1

    
respondido por el Oli 09.12.2010 - 10:22
87

Solo para expandir la respuesta de Oli (y para que tenga un marcador para esos símbolos de abreviatura):

El indicador bash ( stefano@linux:~$ ) es solo el primero de un par de instrucciones es posible que vea:

  • PS1 : la solicitud predeterminada que aparece al abrir un shell

    Su valor se almacena en una variable de entorno llamada PS1 . Para ver su valor, tipo

    echo $PS1

    Esto te dará algo como

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w$
    

    Para cambiarlo, puede establecer un nuevo valor para la variable:

    export PS1="\u > "
    

    Esto dará como resultado un mensaje como este:

    stefano > 
    
  • PS2 : es su solicitud secundaria. Esto se muestra cuando un comando no está terminado. Escriba echo "asd y presione enter, el prompt secundario le permitirá ingresar más líneas hasta que cierre las comillas invertidas.

  • PS3 es el indicador utilizado para select (2)

  • PS4 es el mensaje utilizado para stack (por defecto: + )

Para que los cambios sean permanentes, los agrega al final de .bash_profile (o .bashrc , consulte esta pregunta ) en su directorio de inicio.

Aquí hay una lista más o menos completa de taquigrafía que puede usar al componer estos:

  • \a El carácter 'campana'
  • \A 24h Tiempo
  • \d Fecha (por ejemplo, mar 21 de diciembre)
  • \e El carácter 'escape'
  • \h Nombre de host (hasta el primero ".")
  • \H nombre de host
  • \j Número de trabajos actualmente en ejecución (ps)
  • \l Tty actual
  • \n Line feed
  • \t Tiempo (hh: mm: ss)
  • \T Hora (hh: mm: ss, formato 12h)
  • \r Retorno de carro
  • \s Shell (es decir, bash, zsh, ksh ..)
  • \u Nombre de usuario
  • \v versión de Bash
  • \V cadena completa de lanzamiento de Bash
  • \w Directorio de trabajo actual
  • \W última parte del directorio de trabajo actual
  • \! índice actual en la historia
  • \# Índice de comando
  • $ A "#" si eres root, sino "$"
  • \ Barra diagonal inversa
  • \@ hora (formato de 12 horas con am / pm)

Por supuesto, puede insertar cualquier cadena literal y cualquier comando:

export PS1="\u $(pwd) > "

Donde $(pwd) está en lugar de "la salida de" pwd.

  • Si se escapó la sustitución del comando, como en $(pwd) , se evalúa cada vez que se muestra el mensaje; de ​​lo contrario, como en $(pwd) , solo se evalúa una vez cuando se inicia bash.

Si desea que su mensaje muestre colores, puede usar los códigos de color de bash para hacerlo. El código consta de tres partes:

40;33;01
  • La primera parte antes del punto y coma representa el estilo de texto.

    • 00 = ninguno
    • 01 = negrita
    • 04 = guión bajo
    • 05 = parpadear
    • 07 = reverso
    • 08 = oculto
  • La segunda y la tercera parte son el color y el color de fondo:

    • 30 = negro
    • 31 = rojo
    • 32 = verde
    • 33 = amarillo
    • 34 = azul
    • 35 = magenta
    • 36 = cian
    • 37 = blanco

Se puede omitir cada parte, asumiendo que empieza por la izquierda. es decir, "1" significa negrita, "1; 31" significa negrita y rojo. Y obtendría su terminal para imprimir en color escapando de las instrucciones con [ y finalizándolo con un m . 33, o 1B en hexadecimal, es el signo ASCII "ESCAPE" (un carácter especial en el juego de caracteres ASCII). Ejemplo:

"[1;31mHello World[m"

Imprime "Hello World" en rojo brillante.

    
respondido por el Stefano Palazzo 21.12.2010 - 22:57
6

Otra alternativa es acortar la ruta del directorio de trabajo cuando es demasiado larga: recortar el directorio de trabajo del indicador de comandos de la terminal

  

Cree una pequeña secuencia de comandos python que implemente la lógica de recorte deseada.

     

Ejemplo: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)
     

Ahora pruébelo, desde una terminal:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'
     

Si está de acuerdo con el resultado, simplemente agregue el comando en su ~ / .bashrc

    
respondido por el Olivier Lalonde 22.12.2010 - 01:26
4

A menudo quiero hacer esto temporalmente. Esto es lo que hago:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

Espero que esto ayude a alguien.

    
respondido por el Joe Codeswell user601770 27.03.2013 - 23:33
0

Lo que me ayudó fue: exportar PS1 = '$'

Para tener esto cada vez que abra el terminal, escriba el comando al final de .bashrc que puede abrir con 'cd' seguido de 'gedit .bashrc'.

Espero que esto ayude. Funcionó para mí.

    
respondido por el Arka Mitra 05.07.2018 - 21:36

Lea otras preguntas en las etiquetas