Newsgroup: it.comp.os.linux.sys
Titolo: [semi-OT] Curiosità: cat file binari

Ciao a tutti,
Credo sia capitato a tutti di fare per sbaglio il cat di un file binario,
con conseguente "sminchiamento" dei caratteri della shell. Facilemente
rimediabile con un reset, ma...
...un collega mi ha fatto notare che facendo un cat di /bin/ls magicamente
i caratteri tornano a posto. Qualcuno sa dirmi perche'?
ciao
Luca

 i caratteri tornano a posto. Qualcuno sa dirmi perche'?
Forse perche' una delle sequenze di ls e' il reset?
Davide
-- 
It might not be practical, it might not be a good idea, but it could
work. Sort of like Windows.
--berry


non sulla mia distribuzione ....
gentoo bin # file ls
ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for 
GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped
gentoo bin # qpkg -l sys-apps/coreutils
sys-apps/coreutils-5.2.1-r2 *
--
massimiliano.

 i caratteri tornano a posto. Qualcuno sa dirmi perche'?
  Prova a fare:
$ echo -ne \\016
(caratteri illeggibili)
$ echo -ne \\017
(caratteri normali)
  Perche` succede questo? Da  man 7 ascii (oppure man 7 iso-8859-1) si
vede che i caratteri ottali 016 e 017 corrispondono, rispettivamente,
ai segnali di controllo SO e SI.  Ho fatto una ricerca su google per
"ASCII control characters history and meaning" ed ho trovato varie
tabelle utili una delle quali, tra l'altro, riporta:
EX DEC  CHR Ctrl Meaning
0E  14   SO   ^N  Shift Out; start use of alternate character set
0F  15   SI   ^O  Shift In; resume use of default character set
  I caratteri ottali 016 (=14 decimale, 0x0e esadecimale) e 017 (=15
decimale e 0x0f esadecimale) servono, ma guarda un po', proprio a
cambiare il set caratteri della console.
Infatti, nei miei computer, edito di solito il file $HOME/.inputrc
per far si che il tasto F8 effettui "echo -e \\017": basta
aggiungere questa riga:
"\e[19~": " echo -e \\\\017\r"
I caratteri di controllo SO, "shift Out" e SI, "Shift In": si riferiscono
alle console in stile "Baudot", quello del baud, le cui telescriventi
avevano dei tasti "Shift" che cambiavano i caratteri inviati
dai tasti disponibili sulla tastiera.  Lo standard ASCII, promulgato
nel 1968, anno in cui sono nato e quindi molto vecchio :-) , avrebbe
dovuto fare a meno di questa possibilita`, ma fu invece lo stesso
prevista la capacita` di usare lo "shift" per, credo, mantenere la
compatibilita` con i sistemi piu` vecchi e per non traumatizzare i
terminalisti dell'epoca, presumo.  Come riportato infatti
nell'esauriente testo che ho trovato all'indirizzo:
http://tronweb.super-nova.co.jp/characcodehist.html
di cui riporto queste poche righe:
Moreover, in spite of the fact that ASCII was devised to avoid shifting,
it included control characters for shifting, i.e., SHIFT IN (SI) for
SHIFT OUT (SO) for Baudot-style locking shift, and ESCAPE (ES) for
non-locking shift. These control characters were later used to extend
ASCII code into 8-bit codes with 190 printing characters.
  Alessandro Selli
-- 
Alessandro Selli
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

   Perche` succede questo? Da  man 7 ascii (oppure man 7 iso-8859-1)
  Scusate, errore: man 7 iso-8859-1 (e compagnia) tratta solamente
le estensioni ad otto bit del set caratteri ASCII a sette bit.
I caratteri di controllo SO e SI fanne parte del set a sette bit.
