Percentuale di caratteri interrotti Terminale

1

Se scrivo il carattere % nel Terminale, interrompe quella shell e ogni nuova shell che apro fino al riavvio:

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

Qualcuno sa perché questo è?

Per espandere ancora un po ', se apro un terminale e echo "100%" , succede:

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

Ogni volta che premo RET dopo aver inserito un carattere percentuale, il Terminale lampeggia e stampa un'istruzione di errore su printf . In realtà stavo lavorando su questo di più dopo aver postato la domanda e una cosa che ho fatto è stata l'aggiornamento bash :

~$ echo $BASH_VERSION 
4.3.30(1)-release

Questo aiuta. In precedenza era Bash 2.qualcosa (se ricordo - qualunque sia l'impostazione predefinita di Mountain Lion). In quella versione di Bash, ogni finestra del Terminale aperta a parte quella in cui ho messo il % era ok, ma ogni nuovo che ho aperto era anch'esso danneggiato e niente poteva riavviare il Terminale ma riavviare.

Ora, con Bash 4.3, posso digitare un comando per riportare il prompt alla normalità. E anche le nuove finestre di terminale sono a posto.

Ma - Non riesco ancora a usare % nei comandi che ho inserito nel terminale. Fortunatamente, non ho bisogno di farlo spesso, ma cose come awk non funzionano per me sul mio Mac.

Quindi, il mio $ PS1 è:

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

Se inizialmente sembra poco chiaro, questi sono i colori che sto impostando nel mio file bash_profile:

# 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}"

Se I echo "100%" con un altro account utente, va bene! Quindi chiaramente, mi sto sparando al piede da qualche parte nel mio .bash_profile . Il che è un peccato, perché fondamentalmente mi piace il mio setup, o almeno così penso, ah!

Se qualcuno vuole guardare i miei file di punti, ora si trovano su GitHub . (Sono un po 'imbarazzato nel mostrarli - c'è un po' di là, haha.)

    
posta Gabriel Perdue 20.11.2014 - 16:01
fonte

2 risposte

2

Guardando il tuo .bash_profile , questa sembra essere la linea più sospetta:

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

Sta facendo un printf sulla cronologia (che conterrà il tuo carattere % ).

Non ho idea di cosa intenda fare (aggiornare il titolo della finestra con l'ultimo comando?), ma suppongo che se lo commentate, l'errore si fermerà.

    
risposta data 22.11.2014 - 19:06
fonte
1

Analizzare questo tipo di problemi è sempre difficile. Generalmente creo un nuovo account senza alcuna configurazione bash per iniziare da una lavagna pulita (supponendo che il problema non si presenti lì) e poi procedo verso l'alto da lì aggiungendo il file di configurazione dal file di configurazione (o riga per riga se necessario).

Oltre ai soliti sospetti ( .bash_profile , .profile o .bashrc ) potresti anche voler guardare .inputrc , /etc/profile e qualsiasi file estratto da uno di questi.

    
risposta data 22.11.2014 - 13:05
fonte

Leggi altre domande sui tag