Prima riga sovrascritta in Bash

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Prima riga sovrascritta in Bash

Messaggioda hashbang » dom gen 30, 2011 9:52

Salve a tutti,
ieri ho modificato il file .bashrc per attivare l'evidenziazione del nome utente e dell'hostname. Il problema è che da quando ho modificato il .bashrc, ogni volta che apro un terminale (anche le console di sistema) e inizio a scrivere del testo, esso sovrascrive la stessa riga non appena si arriva alla metà dello schermo (in proporzione alla grandezza del terminale, in caso di xterm o sakura è la metà della finestra). Inoltre se c'era già del testo in precedenza e provo a cancellare quello che scrivo al momento, noto che esso cancella ciò che era stato precedentemente scritto. Se disattivo il .bashrc, questo problema non si verifica.
Mi sono documentato su Google, ma non ho trovato nulla a riguardo.

Avete qualche consiglio da dare?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2895
Iscritto il: mer feb 13, 2008 16:19
Slackware: 14.2
Kernel: 4.4.19
Desktop: KDE4
Località: Bulagna
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda 414N » dom gen 30, 2011 11:02

Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » dom gen 30, 2011 12:33

414N ha scritto:Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?
Hai ragione.
Ecco il .bashrc

Codice: Seleziona tutto

$ cat .bashrc
# Check for an interactive session
[ -z "$PS1" ] && return

alias ls='ls -al --color=always'
alias grep='grep --color=always'
alias more='more -d'
PS1='\e[1;32m\u\e[1;33m@\e[1;34m\h\e[0m\e[1;33m:\w\e[1;32m$\e[0;0m '

Avatar utente
joseph
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: lun giu 14, 2010 23:50
Slackware: 13.37
Kernel: 3.2.9
Desktop: xfce
Località: Salerno

Re: Prima riga sovrascritta in Bash

Messaggioda joseph » dom gen 30, 2011 13:18

Bahh il bashrc sembra a posto mi verrebbe da pensare di fare due prove.
Prima provare senza il bashrc e vedere se si presenta il problema,
se esso non si verifica proverei a sistemare meglio (senza i vari colori) la variabile PS1
Facci sapere :D

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » dom gen 30, 2011 14:10

joseph ha scritto:Bahh il bashrc sembra a posto mi verrebbe da pensare di fare due prove.
Prima provare senza il bashrc e vedere se si presenta il problema,
se esso non si verifica proverei a sistemare meglio (senza i vari colori) la variabile PS1
Facci sapere :D

L'avevo già detto ;)
Senza il .bashrc il problema non si presenta.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun set 03, 2007 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Prima riga sovrascritta in Bash

Messaggioda Mario Vanoni » dom gen 30, 2011 14:58

atomix600 ha scritto:
414N ha scritto:Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?
Hai ragione.
Ecco il .bashrc

Codice: Seleziona tutto

$ cat .bashrc
# Check for an interactive session
[ -z "$PS1" ] && return

alias ls='ls -al --color=always'
alias grep='grep --color=always'
alias more='more -d'
PS1='\e[1;32m\u\e[1;33m@\e[1;34m\h\e[0m\e[1;33m:\w\e[1;32m$\e[0;0m '

IMVHO manca un export PS1=...

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » dom gen 30, 2011 18:12

Non va. Ho provato il suggerimento di Mario, ma il problema non si risolve.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2895
Iscritto il: mer feb 13, 2008 16:19
Slackware: 14.2
Kernel: 4.4.19
Desktop: KDE4
Località: Bulagna
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda 414N » dom gen 30, 2011 18:40

atomix600 ha scritto:

Codice: Seleziona tutto

PS1='\e[1;32m\u\e[1;33m@\e[1;34m\h\e[0m\e[1;33m:\w\e[1;32m$\e[0;0m '

Forse hai sbagliato il codice finale. Invece di 0;0m, mettici solo 0m.
A cosa serve poi la sequenza \e[0m\e[1;33m? Imposti al colore di default per poi cambiarlo subito in giallo?

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » dom gen 30, 2011 19:29

414N ha scritto:Forse hai sbagliato il codice finale. Invece di 0;0m, mettici solo 0m.
Il comando \e[0;0m mi serve per annullare il colore e il grassetto. Se tolgo il primo zero, l'intero valore del terminale sarà in grassetto.
414N ha scritto:A cosa serve poi la sequenza \e[0m\e[1;33m? Imposti al colore di default per poi cambiarlo subito in giallo?
Quì hai ragione. L'ho tolta.
Comunque ho notato che più riduco il bashrc, più il limite di sovra scrittura diminuisce. Che sia la variabile PS1 troppo lunga?

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » mer apr 27, 2011 15:05

Salve a tutti, riesumo questo vecchio problema perchè ho trovato un palliativo "assurdo" al problema.

Praticamente, se metto le sequenze di escape in delle variabili che poi andrò a richiamare in PS1, questo difetto sparisce. :-k

Lascio comunque il topic aperto, nel caso in cui qualcuno avesse delucidazioni in merito.

EDIT: Posto il bashrc per mostrare meglio il palliativo:

Codice: Seleziona tutto

$ cat .bashrc
BLUE="\[\e[1;34m\]"
NORMAL="\[\e[0;0m\]"

if [ $(whoami) = root ]; then
    RED="\[\e[1;31m\]"
    USER=$RED
else
    GREEN="\[\e[1;32m\]"
    USER=$GREEN
fi

PS1="$USER\u [ $BLUE\w $USER]$ $NORMAL"

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3971
Iscritto il: lun apr 25, 2005 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Re: Prima riga sovrascritta in Bash

Messaggioda Paoletta » mer apr 27, 2011 17:04

la mia e' inizializzata in questo modo:

Codice: Seleziona tutto

\[\033[01;32m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h \[\033[01;31m\]\w \$ \[\033[0;33m\]

magari puo' tornatrti utile...tra l'altro il problema in questione viene dato anche in runlevel 3 (quindi non e' un problema di emulatori di terminali)

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » mer apr 27, 2011 20:19

Paoletta ha scritto:la mia e' inizializzata in questo modo:

Codice: Seleziona tutto

\[\033[01;32m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h \[\033[01;31m\]\w \$ \[\033[0;33m\]

magari puo' tornatrti utile...tra l'altro il problema in questione viene dato anche in runlevel 3 (quindi non e' un problema di emulatori di terminali)
Ma a questo punto non penso sia neanche problema di Bash, in quanto lo stesso "difetto" l'ho trovato in zsh (che ho da poco sostituito a bash come shell di default).
Lì la soluzione è stata addirittura più assurda, in quanto il valore della variabile PS1 risulta essere addirittura più lungo del valore (compreso di sequenze di escape) che avevo messo io.
Io avevo settato la variabile PS1 esattamente allo stesso modo di come settavo Bash, e infatti i colori sulla shell venivano caricati. Il problema era che anche lì si verificava il fastidio presente.
Su zsh ho risolto con:

Codice: Seleziona tutto

$ cat .zshrc | grep PS1
export PS1="$(print '%B%{\e[31m%}%n%{\e[0m%}%b') $(print '%B%{\e[32m%}%~ >%{\e[0m%}%b') "

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6505
Iscritto il: gio nov 03, 2005 14:05
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Prima riga sovrascritta in Bash

Messaggioda targzeta » mer apr 27, 2011 22:13

Scusa, ma se non setti la variabile PS1 tutto funziona? Perché se è così allora è evidente che il problema è lì, sinceramente l'uso del \e non mi torna, io ho sempre usato il carattere di escape usato anche da Paoletta.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà 

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar apr 24, 2007 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda sardylan » mer apr 27, 2011 23:45

Non so come si comporta con altre shell (chiaramente scritto nel modo equivalente), ma ho voluto un po' a sistemare il tutto...
Attualmente ho questo:

Codice: Seleziona tutto

sardylan@achille.thehellnet.org [ ~ ]$ echo $PS1
\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;37m\]\H\[\e[0m\] \[\e[1;36m\][\[\e[0m\] \w \[\e[1;36m\]]\[\e[0m\]$

Viene impostato tutto tramite variabili.

Un problema simile mi si verificava con l'escape finale. Alla fine, dopo varie prove ho trovato che 0m è quello giusto.
Ho anche un export di PS1 e di TERM:

Codice: Seleziona tutto

if [ -z "${TERM}" ]; then
    TERM="linux"
fi

export PS1
export TERM

hashbang
Packager
Packager
Messaggi: 1969
Iscritto il: ven giu 04, 2010 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS
Località: Lecce / Bergamo / Milano
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggioda hashbang » gio apr 28, 2011 0:12

spina ha scritto:Scusa, ma se non setti la variabile PS1 tutto funziona?
Praticamente si. Infatti se evito di usare un .bashrc per caricare la configurazione della bash, tutto funziona perfettamente.


spina ha scritto:Perché se è così allora è evidente che il problema è lì, sinceramente l'uso del \e non mi torna, io ho sempre usato il carattere di escape usato anche da Paoletta.

Emanuele
Guarda io le sequenze di escape le ho applicate seguendo il wiki ufficiale di ArchLinux.
Ti posto il link