Porcentaje de saltos de caracteres Terminal

1

Si escribo el carácter % en la Terminal, se rompe ese shell y cada shell nuevo que abro hasta el reinicio:

$ seq 10 | parallel -j50% "echo Hi {}"
-bash: printf: '"': invalid format character

¿Alguien sabe por qué esto es?

Para expandir un poco más, si abro una Terminal y echo "100%" , esto sucede:

Last login: Fri Nov 21 08:28:47 on ttys033
~$ echo "100%"
-bash: printf: '"': invalid format character

0; echo "100~$ 
-bash: printf: '"': invalid format character
7;file://mac-122667.dhcp.fnal.gov/Users/perdue~$ 
-bash: printf: '"': invalid format character
7;file://mac-122667.dhcp.fnal.gov/Users/perdue~$ 
-bash: printf: '"': invalid format character

Cada vez que presiono RET después de poner un carácter de porcentaje, la Terminal parpadea e imprime una declaración de error sobre printf . En realidad estaba trabajando más en esto después de publicar la pregunta y una cosa que hice fue actualizar bash :

~$ echo $BASH_VERSION 
4.3.30(1)-release

Esto ayuda. Anteriormente, era Bash 2. algo (si recuerdo, cualquiera que sea el valor predeterminado de Mountain Lion). En esa versión de Bash, todas las ventanas abiertas de la Terminal, aparte de la que puse % , estaban bien, pero todas las nuevas que abrí también estaban dañadas y nada podía hacer que la Terminal volviera a funcionar pero se reiniciaba.

Ahora, con Bash 4.3, puedo escribir un comando para que el mensaje vuelva a la normalidad. Y las nuevas ventanas de Terminal también están bien.

Pero - todavía no puedo usar % en los comandos que coloco en la Terminal. Afortunadamente, no necesito hacerlo a menudo, pero cosas como awk simplemente no me funcionan en mi Mac.

Entonces, mi $ PS1 es:

~$ echo $PS1
\[\e[0;34m\]\W\[\e[0;31m\]$ \[\e[0m\]

Si eso parece confuso al principio, estos son los colores que estoy configurando en mi perfil de bash:

# colours for use in prompts
RED="\[\e[0;31m\]"
GREEN="\[\e[0;32m\]"
YELLOW="\[\e[0;33m\]"
BLUE="\[\e[0;34m\]"
PURPLE="\[\e[0;35m\]"
CYAN="\[\e[0;36m\]"
export PS1="${BLUE}\W${RED}\$ ${NOCOLOR}"

Si yo echo "100%" con otra cuenta de usuario, ¡está bien! Claramente, me estoy disparando en el pie en algún lugar de mi .bash_profile . Lo cual es muy malo, porque básicamente me gusta mi configuración, o eso creo, ¡ja!

Si alguien quiere ver mis archivos de puntos, ahora están en GitHub . (Me da un poco de vergüenza mostrarles que hay algún crucero allí, jaja).

    
pregunta Gabriel Perdue 20.11.2014 - 16:01

2 respuestas

2

Mirando tu .bash_profile , esta parece ser la línea más sospechosa:

trap 'printf "${OPENTITLEBAR} 'history 1 | cut -b8-' - 'pwd' ${CLOSETITLEBAR}"' DEBUG

Está haciendo un printf en el historial (que contendrá su carácter % ).

No tengo idea de lo que se pretende hacer (¿actualizar el título de la ventana con el último comando?), pero creo que si lo comentas, el error se detendrá.

    
respondido por el beroe 22.11.2014 - 19:06
1

Analizar este tipo de problemas siempre es complicado. Por lo general, creo una nueva cuenta sin ninguna configuración de bash para comenzar desde una pizarra limpia (suponiendo que el problema no se muestre allí) y luego trabajo desde allí agregando el archivo de configuración por el archivo de configuración (o línea por línea si es necesario).

Además de los sospechosos habituales ( .bash_profile , .profile o .bashrc ) es posible que también desee ver .inputrc , /etc/profile y cualquier archivo obtenido de uno de estos.

    
respondido por el nohillside 22.11.2014 - 13:05

Lea otras preguntas en las etiquetas