macos - sistemas - software libre online
Apilamiento de texto del terminal OS X encima de sí mismo (5)
Con la guía de hamstergene , pude descifrar cómo hacer que funcionara bien. Usando esta guía Geek Stuff y este tutorial de It''s Me Tommy , pude definir cómo quería que se mostrara mi texto de PS1. Cambiar esto a algo mucho más simplificado eliminó el extraño problema de texto superpuesto con el que me estaba encontrando.
Antes de:
Después:
Simplemente .bash_profile
mi .bash_profile
y agregué la siguiente línea:
export PS1="[/u@/h] > ";
Luego fui y cambié los colores de la ventana para una buena medida porque puedo.
Me encuentro con un problema extraño en la aplicación Terminal en Mac OS X Lion. Cuando ingreso una larga línea de texto que debe pasar a la siguiente línea cuando llega al borde de la ventana del Terminal, continúa escribiendo en la parte superior del texto de la línea que está encima.
Aquí hay algunas capturas de pantalla para ayudar a ilustrar el problema:
Antes de que mi texto llegue al borde de la ventana:
Después de que el texto llegue al borde de la ventana:
También proporcioné capturas de pantalla de mis ajustes de texto y ventana en caso de que pudieran ser útiles.
Configuraciones de texto:
Configuración de ventana:
Gracias de antemano por cualquier ayuda ofrecida. Tuve este problema por un tiempo y nunca lo logré. Ahora me estoy volviendo loco cuando me meto en cosas que requieren grandes comandos grep y largos nombres de ruta.
El problema original era que había una nueva línea en la PS1 (FYI para cualquiera que se encuentre con esto)
Típicamente es un código de color escapado incorrectamente, pero si no es así es que tienes una nueva línea en tu ps1
Solía tener el mismo problema debido al uso incorrecto de códigos de color. Aquí está mi PS1 que resolvió el problema. Además, si usa GIT, esto también será útil para mostrar la rama de git en la que está trabajando y si su árbol de trabajo está sucio o no. Pon esto en tu .profile o .bash_profile
# Git branch in prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)/ (/1)/''
}
parse_git_dirty() {
st=$(git status 2>/dev/null | tail -n 1)
if [[ $st == "" ]]; then
echo ''''
elif [[ $st == "nothing to commit (working directory clean)" ]]; then
echo ''''
elif [[ $st == ''nothing added to commit but untracked files present (use "git add" to track)'' ]]; then
echo ''?''
else
echo ''*''
fi
}
# coloring the terminal comman line
SB_GREEN="/[/033[1;32m/]"
SB_BLUE="/[/033[1;34m/]"
SB_RED="/[/033[1;31m/]"
SB_NOCOLOR="/[/033[0m/]"
export PS1="$SB_GREEN/u@/h$SB_NOCOLOR: $SB_BLUE/w$SB_GREEN/$(parse_git_branch)$SB_RED/$(parse_git_dirty)$SB_NOCOLOR $ "
Espero que esto ayude.
Tengo el mismo problema, encontré si cambias
Avanzado> Emulación > Declarar terminal como: ANSI.
Esto resuelve el problema de PS1 de color. Con Mac Terminal
PERO crea un comportamiento extraño: encontré una solución a mi problema con @koiyu respuesta.
PS1
variable de entorno PS1
determina cómo se verá el mensaje de shell. man bash
da documentación completa sobre él. (En realidad, hay varios de ellos, para diferentes modos).
Hay varios archivos que pueden estar configurándolo, generalmente uno de ~/.profile
, ~/.bashrc
, /etc/profile
o /etc/bashrc
.
Si va a tener códigos de color u otras secuencias de control dentro de él, debe envolverlos con /[
y /]
correctamente (y NO ajustar el texto normal), de lo contrario la edición de la línea podría estropearse como en su caso. Sugiero restablecer PS1
al valor predeterminado y luego agregar cuidadosamente colorear de nuevo elemento por elemento.
Por ejemplo:
PS1=''/[/033[1m/033[32m/]/u@/h /w/[/033[0m/]/$ ''
^^^^^^^^^^^^^^^ ^^^^^^^
Los comandos para colorear están subrayados. Observe cómo están rodeados con /[ /]
.