Pregunta

Me gustaría poner mi fiesta de inmediato a un ancho fijo, y compensar la diferencia en el espacio antes de que el $, por lo que sea largo o corto, mis restos con prontitud el mismo ancho:

[name@host] ~/Directory/Dir...Another/LastDir $ 
[name@host] ~/Directory(branch)               $ 

En la actualidad, en una ruta de directorio corto mi miradas rápidas algo como esto:

[name@host] ~/Directory(branch) $ 

Un profundas ruta de directorio es similar al siguiente:

[name@host] ~/Directory/Dir...Another/LastDir $ 

Se puede ver que he truncada de la PWD en el medio para que pueda ver donde comienza la ruta, y donde termina. Me gustaría hacer la diferencia antes de que el $.

Aquí está mi actual línea de comandos:

# keep working directory to 30 chars, center tuncated
prompt_pwd() {
  local pwd_symbol="..."
  local pwd_length=30
  newPWD="${PWD/#$HOME/~}"
  [ ${#newPWD} -gt ${pwd_length} ] && newPWD=${newPWD:0:12}${pwd_symbol}${newPWD:${#newPWD}-15}
}
# set prompt
prompt_color() {
  PROMPT_COMMAND='prompt_pwd;history -a;title_git'
  PS1="${WHITEONMAGENTA}[\u@\h]${MAGENTA} \w\$(parse_git_branch) ${MAGENTABOLD}\$${PS_CLEAR} "
  PS1=${PS1//\\w/\$\{newPWD\}}
    PS2="${WHITEONTEAL}>${PS_CLEAR} "
}

En mi búsqueda, he encontrado un símbolo de la anchura de su término lo que hace hacer un poco de relleno, pero no pudo conseguir que funcione para este particular del sistema.

¿Fue útil?

Solución

Si la ruta es demasiado corto ([ ${#newPWD} -le ${pwd_length} ]), puede utilizar printf (1) para extenderla.

printf -v newPWD "%-*s" $pwd_length "$newPWD"

Esto izquierda justificar la cadena en $newPWD con un ancho campo de la $pwd_length.

printf (1) está integrado en fiesta por lo que no es demasiado caro de mantener cada pregunta.

Otros consejos

Se puede configurar la variable de entorno BASH_COMMAND, lo que le permite definir el manual del sistema. Es posible utilizar expand -t conseguirlo a la longitud deseada.

Lo que he hecho es mi posición directorio y como encima mi sistema, por lo que no tiene que preocuparse de que:

myusername@mybox:/home/myusername/some/directory
$ 

De esta manera, puedo también tienen el beneficio añadido de la copia de la línea por encima de SCP y los comandos SSH sin tener que anteponer el usuario @ host:. Ejemplo / directorio

Aquí está mi variable $ PS1, en caso de que gustaría probarlo:

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top