Stringhe di comandi su bash

Postate qui per tutte le discussioni legate a Linux in generale.

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 Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
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.
ir0c
Linux 0.x
Linux 0.x
Messaggi: 57
Iscritto il: dom 11 feb 2007, 19:49

Stringhe di comandi su bash

Messaggio da ir0c »

Salve a tutti,
molti di voi magari l'avranno notato sulla shell.
Quando richiamiamo comandi con argomenti particolarmente lunghi (tanto da andare a capo-riga) il testo di "sovrappone"

ES 1:
Sul comando "ls /usr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/ /usr/ /usr/lib/ /usr/lib/alsa-lib/ /mnt/cdrom"

Il risultato è "/oot '~' ~> ls /usr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/ /usr/ /usr/lib/ /usr/lib/alsa-lib/ /mnt/cdrom"
(Notare la prima parte del terminale che dovrebbe essere "root '~' ~>", invece la 'r' viene sovrascritta dall'ultimo / (slash) di "/mnt/cdrom/" che per
motivi di lunghezza è andato a capo.

ES 2:
Devo rieseguire il comando Premo "Freccia SU" e scorro al contrario con "Freccia SX" fino a che devo modificare qualcosa nel comando

Risultato:
4;34mroot '~' ~> ls /usr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/ ssdcusr/ /usr/lib/ /usr/lib/alsaa /usr/lib/alsaasa-lib/ /root asa-lib/ /root /sa-lib/ /root /h
home/ /root/ls /usr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/ ssdcusr/ /usr/lib/ /usr/lib/alsa-lib/ /root /h

ES 3: bash reverse-search

root '~' ~>
(reverse-i-search)`ls': ls /usr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/ ssdcusr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/

se proviamo a scorrere il comando con "Freccia DX" per far diventare ls in ls -l succede cosi

root '~' ~> [0m '~' ~> ls /usr/ /usr/lib/ /usr/lib/alsa-lib/ /root /home/ /root/ ssdcusr/ /usr/lib/ /usr/lib/al/usr/lib/alsa-lib/ /root /home/ /root/home/ /root

Quindi si agganciano solo in echo!! nella realtà qualunque di questi 3 esempi una volta premuto invio funziona...
solo che è illegibile sebbene funzioni...


Ho potuto avere riscontro di questa cosa su Linux / xBSD / Solaris ecc...

Qualcuno di voi ne ha trovato soluzione?

Grazie e Ciao.

albatrosla
Packager
Packager
Messaggi: 1339
Iscritto il: sab 27 mar 2004, 0:00
Slackware: current
Desktop: fluxbox.git
Località: Collegno, but made in Friûl
Contatta:

Re: Stringhe di comandi su bash

Messaggio da albatrosla »

Non so come si possa risolvere questo problema: di certo è fastidioso e talvolta è capitato pure a me. Non mi è mai successo con slackware, tuttavia succede spesso sulla redhat che utilizzo in azienda. Non solo: succede anche "in verticale"; talvolta , dopo aver già riempito una schermata di comandi o output, accedendo ad un'applicazione testuale che occupa tutta l'area visibile del terminale e poi uscendone, mi ritrovo con il cursore in mezzo alla schermata precedente e scrivendo i caratteri vanno a "sovrascrivere" quelli pre-esistenti. Risolvo con un clear, ma è ovvio che non è una soluzione alla radice del problema! Topic interessante...

Avatar utente
aelsantex
Linux 0.x
Linux 0.x
Messaggi: 67
Iscritto il: sab 28 ago 2004, 0:00

Re: Stringhe di comandi su bash

Messaggio da aelsantex »

E' un problema che ognitanto si è verificato anche a me.
Normalmente con il konsole, soprattutto quando partivo con una finestra piccola che poi allargavo.

La butto li (nessuna certezza però vado a naso): credo dipenda dal TERM utilizzato... se vi capita provate con un

$ export TERM=vt100

PS fate sapere se funziona.

Falko
Linux 0.x
Linux 0.x
Messaggi: 16
Iscritto il: lun 23 mag 2005, 0:00
Slackware: Current

Re: Stringhe di comandi su bash

Messaggio da Falko »

E' un problema che ognitanto si è verificato anche a me.
Normalmente con il konsole, soprattutto quando partivo con una finestra piccola che poi allargavo.
Idem, molto probabilmente si tratta di un errore derivato dalle variabili locali che vengono generate all'apertura della finestra che memorizzano dinamicamente la grandezza della stessa; indi per cui nel momento che richiami il comando, scorrendo la cronologia, il terminale genera questo bug rendendo illeggibile il comando stesso anche se perfettamente eseguibile :)

ir0c
Linux 0.x
Linux 0.x
Messaggi: 57
Iscritto il: dom 11 feb 2007, 19:49

Re: Accorgimenti, studio problema e casi critici

Messaggio da ir0c »

Interessante tener conto di alcune cosette:

Se accedo da login testuale (init 3) come root o qualsiasi utente che non ha una sessione grafica avviata il problema non si presenta, anzi addirittura attuando una ricerca inversa una volta premuto una freccetta la scritta "(reverse-i-search)`': " in echo scompare!
Cosi infatti dovrebbe essere!
Infatti noto che TERM=linux (per tutti quelli non affetti da uno "startx").

In KDE il problema si presenta.

Interessante notare anche però che se da ambiente grafico si accede su un'altra linux utilizzando come utente di login chiunque non abbia una sessione grafica avviata il tutto funziona correttamente, altrimenti siamo punto e a capo!

Es.
# Prima di premere una freccetta
> ssh root@xxx.domain
root@xxx.domain password:
Last login: Thu Apr 17 23:12:30 2008

/bin/bash $ >>[ctrl + r]<<
(reverse-i-search)`dhcp': /usr/sbin/dhcpd

# dopo la pressione della freccetta

/bin/bash $ /usr/sbin/dhcpd

A questo punto mi viene da pensare a qualche impostazione in X.org

Avatar utente
algol
Linux 3.x
Linux 3.x
Messaggi: 969
Iscritto il: gio 7 set 2006, 1:19
Slackware: 12.1
Kernel: 2.6.26.1
Desktop: xfce4.4.2

Re: Stringhe di comandi su bash

Messaggio da algol »

A proposito di stranezze in bash: a volte mi capita che mi si autocancelli la history.
Ad esempio, digito un comando, poi un altro, e così via, poi quando faccio freccia su per ripescare quelli vecchi a volte mi riappare un'altra cronologia più vecchia con tutt'altri comandi!

Che significa? E' forse finito il buffer in memoria della shell? :oops:

Tutto ciò in vari emulatori di terminale all'interno di sessione grafica.

ir0c
Linux 0.x
Linux 0.x
Messaggi: 57
Iscritto il: dom 11 feb 2007, 19:49

Re: Stringhe di comandi su bash

Messaggio da ir0c »

Si l'ho notato anch'io...
A me succede però se accidentalmente premo qualche tasto che non ho ben chiaro quale sia.

L'impressione è che ci siano varie history (tipo una per ogni shell aperta) ...

Magari non ci si fa caso.. (perchè si usa sempre la finestra principale) Ctrl + Alt + F1

ma a volte riscontro che history(Ctrl + Alt + F1) != history(Ctrl + Alt + F2) .... != history(Ctrl + Alt + F6)


In KDE (konsole)
Scheda 1
> qwerty
bash: qwerty: command not found
(reverse-i-search)`qwe': qwerty
>>>[freccia SX]<<<
> qwerty

Scheda 2 (Ctrl + Alt + n)
> (reverse-i-search)`': (battendo 'q') non appare nulla.

-----------------------------------------------

Però ad esempio su questa macchina (basata su ubuntu) i caratteri in Konsole non si accavallano sebbene

> echo $TERM
xterm
>

Strano no?

Avatar utente
carocco
Linux 0.x
Linux 0.x
Messaggi: 49
Iscritto il: gio 12 apr 2007, 15:31

Re: Stringhe di comandi su bash

Messaggio da carocco »

Il problema delle stringhe di comando in bash (la sovrapposizione) avviene solo in un caso:

se viene lanciato un comando da una console e successivamente questa viene allargata a tutto schermo. Infatti se si scrive in un terminale appena aperto, l'a capo funziona correttamente.
Analogamente, se si apre un terminale e PRIMA di confermare qualunque comando con invio si allarga la finestra alla larghezza massima, la continuazione sulla riga successiva funziona.

Forse quando si apre una shell, viene inizializzata la lunghezza ad un valore che non viene aggiornato quando si allarga la finestra, creando una discrepanza tra valore memorizzato e lunghezza effettiva della riga.

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

Re: Stringhe di comandi su bash

Messaggio da Mario Vanoni »

carocco ha scritto:Il problema delle stringhe di comando in bash (la sovrapposizione) avviene solo in un caso:

se viene lanciato un comando da una console e successivamente questa viene allargata a tutto schermo. Infatti se si scrive in un terminale appena aperto, l'a capo funziona correttamente.
Analogamente, se si apre un terminale e PRIMA di confermare qualunque comando con invio si allarga la finestra alla larghezza massima, la continuazione sulla riga successiva funziona.

Forse quando si apre una shell, viene inizializzata la lunghezza ad un valore che non viene aggiornato quando si allarga la finestra, creando una discrepanza tra valore memorizzato e lunghezza effettiva della riga.
Ogni shell guarda alla partenza i valori, controllabili con set | less
COLUMNS=nnn
LINES=nn
cambiando shell senza login ... attaccati al tram

Mario Vanoni

Zeros
Linux 1.x
Linux 1.x
Messaggi: 107
Iscritto il: dom 5 mar 2006, 2:22
Slackware: 12.1
Kernel: 2.6.24.5
Desktop: Kde
Località: Roma

Re: Stringhe di comandi su bash

Messaggio da Zeros »

ir0c ha scritto: Magari non ci si fa caso.. (perchè si usa sempre la finestra principale) Ctrl + Alt + F1

ma a volte riscontro che history(Ctrl + Alt + F1) != history(Ctrl + Alt + F2) .... != history(Ctrl + Alt + F6)
Questo è normale perchè ogni sessione che viene aperta, ti carica tutta l'history memorizzata che solitamente è all'interno ~/.bash_history e in aggiunta avrai i comandi lanciati in quella determinata sessione. Solamente dopo la corretta chiusura della sessione quest'ultimi vengono salvati e successivamente li ritroverai.

Avatar utente
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 5.4.43 x86_64
Desktop: i3
Località: Siderno (RC)
Contatta:

Re: Stringhe di comandi su bash

Messaggio da danix »

Mario Vanoni ha scritto:Ogni shell guarda alla partenza i valori, controllabili con set | less
COLUMNS=nnn
LINES=nn
cambiando shell senza login ... attaccati al tram

Mario Vanoni
A proposito di questo problema, ho notato che in debian qualsiasi terminale all'interno di gnome ridimensiona la riga del testo quando io ridimensiono la finestra, e nel .bashrc di default di debian ho trovato queste righe, magari possono tornare utili:

Codice: Seleziona tutto

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
Non mi sono soffermato più di tanto sulla funzione che hanno, mi sono tornate in mente perchè le avevo lette qualche giorno fa, se serve altro chiedete... :)

Ciau
danix
myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Stringhe di comandi su bash

Messaggio da conraid »

Apri una console, mettila a tutto schermo e dai

Codice: Seleziona tutto

$ set | grep COLUMNS
poi ridimensionala e dai nuvoamente

Codice: Seleziona tutto

$ set | grep COLUMNS
senza fare login o altro
Poi fai lo stesso con LINES

dopo se vuoi dai quel comando di Debian e ripeti la procedura.

IMHO il problema, che ho sempre avuto anche io, è altrove.

Avatar utente
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 5.4.43 x86_64
Desktop: i3
Località: Siderno (RC)
Contatta:

Re: Stringhe di comandi su bash

Messaggio da danix »

conraid non credo di aver capito cosa fa quel comando... ho fatto come dici tu ma il risultato prima di dare il comando e dopo averlo dato sono uguali...

mi dispiace di non essere stato d'aiuto... speravo servisse a qualcosa... :(
danix
myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Stringhe di comandi su bash

Messaggio da conraid »

danix85 ha scritto:conraid non credo di aver capito cosa fa quel comando... ho fatto come dici tu ma il risultato prima di dare il comando e dopo averlo dato sono uguali...

mi dispiace di non essere stato d'aiuto... speravo servisse a qualcosa... :(
Quel risultato non cambia niente, ti mostra solamente il valore della variabile

ir0c
Linux 0.x
Linux 0.x
Messaggi: 57
Iscritto il: dom 11 feb 2007, 19:49

Re: Stringhe di comandi su bash

Messaggio da ir0c »

Oggi operavo su un computer sul quale abbiamo installato slackware.
Ho provato a vedere se questo "bug" persisteva e con piacere mi sono accorto che non si presentava.
A differenza mia (che ho una schera ATI) quel pc ha una GeForce (ho dovuto solo settare driver "nv" in xorg.conf per far partire kde..)

Ora quindi la mia domanda è per quelli con scheda NVIDIA:
A voi funziona tutto bene o vi siete riconosciuti in tutta questa discussione?
Anche dopo aver installato i driver ufficiali?

ir0c.

Rispondi