https://guide.debianizzati.org/api.php?action=feedcontributions&user=Skizzhg&feedformat=atomGuide@Debianizzati.Org - Contributi dell'utente [it]2024-03-29T13:46:02ZContributi dell'utenteMediaWiki 1.39.5https://guide.debianizzati.org/index.php?title=Utente:Skizzhg&diff=33196Utente:Skizzhg2013-08-25T02:04:24Z<p>Skizzhg: Pagina svuotata</p>
<hr />
<div></div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Editing&diff=31890VimCS: Editing2013-03-02T00:36:43Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
== Sostituzione ==<br />
entra in modalità sostituzione - '''R''' <br/><br />
sostituisce singolo carattere e torna in modalità comando - '''r''' (seguito dal carattere)<br />
<br />
maiuscole in minuscole e viceversa - '''~''' <br/><br />
tutta la riga minuscola - '''guu''' (oppure '''vu''') <br/><br />
solo una parola minuscola - '''vEu''' <br/><br />
tutta la riga maiuscola - '''gUU''' (oppure '''VU''') <br/><br />
solo una parola maiuscola - '''vEU''' <br/><br />
inverte maiuscole e minuscole di una parola - '''vE~''' <br/><br />
inverte maiuscole e minuscole di una riga - '''g~~''' <br/><br />
intero file minuscolo - '''ggguG''' <br/><br />
intero file maiuscolo - '''gggUG'''<br />
<br />
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo/''' <br/><br />
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/><br />
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/><br />
sostituzione in tutto il documento - ''':%s/vecchio/nuovo/g''' <br/><br />
<br />
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''<br />
<br />
elimina le terminazioni di riga in stile DOS, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/><br />
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>Ctrl-v</code> e <code>Ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/><br />
'''<nowiki>:</nowiki>%s/^M//g'''<br />
<br />
<br />
dato un file con tante righe nella forma di ''foo bar baz <nowiki>http://bla</nowiki>'',<br />
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:<br />
'''<nowiki>:</nowiki>%s/^.\{-}\zehttp//g'''<br />
<br />
<br />
data una riga nella forma '11. foo' sostituisce il punto con un tab<br />
'''<nowiki>:</nowiki>s/\(^[0-9]\+\)\. /\1\t/'''<br />
<br />
<br />
cancella tutto ciò che c'è dopo le virgolette<br />
'''<nowiki>:</nowiki>%s/".*//'''<br />
<br />
<br />
cancella spazi non voluti a fine riga (trailing whitespace); <br />
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:<br />
'''<nowiki>:</nowiki>%s/\s\+$//'''<br />
<br />
cerca soltanto:<br />
'''/\s\+$'''<br />
<br />
<br />
seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata<br />
'''Ctrl-v I # <Esc>'''<br />
<br />
<br />
Inserisce contenuto di un registro all'inizio di ogni riga selezionata.<br />
Data una lista di voci come segue:<br />
* foo uno<br />
* due<br />
* tre<br />
* quattro<br />
* cinque<br />
* sei<br />
* sette<br />
<br />
supponiamo di voler inserire 'foo', compreso lo spazio che segue, all'inizio delle successive quattro righe.<br />
<br />
copiamo: '''vely''' <br/><br />
selezioniamo l'inizio delle altre righe: '''j Ctrl-v 3j''' <br/><br />
passiamo alla modalità inserimento visuale: '''I''' <br/><br />
incolliamo e torniamo alla modalità comando: '''Ctrl-r " <Esc>'''<br />
<br />
La sequenza completa è dunque: '''velyj Ctrl-v 3jI Ctrl-r " <Esc>''' <br/><br />
Appare macchinoso ma è un'ottima alternativa alla modalità comando quando c'è bisogno di copiare stringhe complesse che, a causa di caratteri speciali e necessità di escape, risulterebbero scomode da inserire con il classico '''Ctrl-v :'<,'>s/^/foo /'''<br />
<br />
'''<nowiki>:</nowiki>help v_b_I''' <br/><br />
'''<nowiki>:</nowiki>help i_CTRL-R'''<br />
<br />
<br />
manda a capo in corrispondenza di ogni tag <br><br />
'''<nowiki>:g,<br>,s,<br>,<br>\r,g</nowiki>'''<br />
<br />
<br />
in una riga con molteplici 'foo' sostituisce solo il secondo<br />
'''<nowiki>:</nowiki>s/\(.*\)foo/\1bar/'''<br />
<br />
<br />
ordina testo alfabeticamente - ''':sort'''<br />
<br />
elimina righe uguali - ''':sort u'''<br />
<br />
<br />
mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto<br />
'''<nowiki>:</nowiki>3p|45p|180p'''<br />
<br />
<br />
Alcuni semplici esempi di cosa si può fare con ex:<br />
<br />
cancella terza riga di un file<br />
<pre>$ ex file.txt <<< $'3d\nw'</pre><br />
cancella righe commentate<br />
<pre>$ ex file.txt <<< $'g/^#/d\nw'</pre><br />
<br />
dato un file contenente una sequenza di numeri (uno per riga) cancella tutto tranne 1 e 7<br />
<pre>$ printf '%s\n' 1 2 3 4 5 6 7 > file.txt; ex file.txt <<< $'v/[17]/d\nw'</pre><br />
<br />
''v'' è l'opposto di ''g'', come ''grep -v''<br />
<br />
<br />
== Selezione e inserimento ==<br />
Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre. <br/><br />
Come accennato all'inizio, la modalità visuale seleziona il testo. <br />
<br />
inizia selezione - '''v''' <br/><br />
seleziona intera riga - '''V''' <br/><br />
seleziona blocco (per colonne) - '''Ctrl-v''' <br/><br />
seleziona tutto - '''ggVG''' <br/><br />
<br />
<br />
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre sopra, basterà premere '''o''' e il cursore si sposterà alla prima riga della selezione corrente quindi muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/><br />
'''Vjok'''<br />
<br />
<br />
Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio. <br/><br />
Ecco ad esempio come copiare del testo salvandolo in altro file: <br/><br />
'''v''' <br/><br />
'''<nowiki>:</nowiki>'<,'>w nome_file'''<br />
<br />
Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il cursore: <br/><br />
'''<nowiki>:</nowiki>r nome_file'''<br />
<br />
<br />
Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una [[shell]] in una porzione di finestra e lo esegue: <br/><br />
'''<nowiki>:</nowiki>!ls'''<br />
<br />
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/><br />
'''<nowiki>:</nowiki>r !ls'''<br />
<br />
In caso servisse una shell con piena funzionalità: <br/><br />
'''<nowiki>:</nowiki>shell'''<br />
<br />
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)<br />
<br />
<br />
== Indentazione ==<br />
inserisce un'indentazione su riga - ''':>''' <br/><br />
inserisce due indentazioni su riga - ''':>>''' <br/><br />
toglie un'indentazione su riga - :<''' <br/><br />
toglie due indentazioni su riga - ''':<<''' <br/><br />
inserisce un'indentazione su 3 righe - ''':>3''' <br/><br />
inserisce un'indentazione sulla terza riga - ''':3>''' <br/><br />
<br />
inserisce - '''>>'''<br />
toglie - '''<<'''<br />
inserisce su tre righe - '''3>>'''<br />
toglie su tre righe - '''3<<'''<br />
inserisce sulla terza riga partendo da dove è posizionato il cursore - '''2j>>'''<br />
<br />
rimuove indentazione all'intero file - '''gg=G'''<br />
<br />
<br />
== Copia, taglia, incolla, cancella ==<br />
Questo funziona solo all'interno della sessione corrente di Vim. <br/><br />
copia testo selezionato - '''y''' <br/><br />
copia prima parola di una riga - '''yw''' <br/><br />
copia intera riga - '''yy'''<br />
<br />
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/><br />
incolla testo tagliato sopra la riga dove è il cursore - '''P'''<br />
<br />
mette la riga sottostante in coda alla corrente - '''J'''<br />
<br />
<br />
cancella carattere - '''x''' <br/><br />
cancella tre caratteri - '''3x''' <br/><br />
cancella dal cursore all'inizio della parola seguente - '''dw''' <br/><br />
cancella dal cursore alla fine della parola corrente - '''de''' <br/><br />
cancella dal cursore all'inizio della parola corrente - '''db''' <br/><br />
cancella la parola che si trova sotto al cursore - '''daw''' <br/><br />
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - '''caw''' <br/><br />
cancella dal cursore alla fine della riga - '''D''' <br/><br />
cancella dal cursore alla fine della riga - '''d$''' <br/><br />
cancella intera riga compreso spazio occupato - '''dd''' <br/><br />
cancella tre righe - '''3dd''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - '''df''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - '''dt''' (seguito dal carattere) <br/><br />
cancella tutte le righe dello schermo sotto il cursore - '''dL''' <br/><br />
cancella dalla riga in cui si trova il cursore alla fine del documento - '''dG''' <br/><br />
cancella dalla riga in cui si trova il cursore all'inizio del documento - '''dg''' <br/><br />
cancella intero documento - '''ggdG''' <br/><br />
cancella parola e passa alla modalità inserimento - '''cw''' <br/><br />
cancella riga e passa alla modalità inserimento - '''cc''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla<br />
modalità inserimento - '''cf''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla<br />
modalità inserimento - '''ct''' (seguito dal carattere)<br />
<br />
cancella ogni riga che inizia con una certa parola - ''':g/^parola/d''' <br/><br />
cancella ogni riga che termina con una certa parola - ''':g/parola$/d''' <br/><br />
cancella ogni riga che contiene una certa parola - ''':g/parola/d''' <br/><br />
cancella le righe commentate - ''':g/^#/d''' <br/><br />
cancella le righe vuote - ''':v/\S/d'''<br />
<br />
inserisce commento (#) ad inizio riga - ''':s/^/#/'''<br />
<br />
<br />
== Annulla, ripeti, cronologia e ricerca ==<br />
Per annullare o ripetere una modifica si userà: <br/><br />
undo - '''u''' <br/><br />
undo di una riga - '''U'''<br />
<br />
redo - '''Ctrl-r'''<br />
<br />
<br />
Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po'<br />
le ripetizioni si usa il punto: <br/><br />
'''.'''<br />
<br />
<br />
Per la modalità comando: <br/><br />
ripete ultima operazione - '''@:''' <br/><br />
mostra la history dei comandi - ''':history''' <br/><br />
mostra la history con comandi selezionabili - '''q:''' <br/><br />
mostra la history di ricerca con comandi selezionabili - '''q/''' (successivo) <br/><br />
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/><br />
<br />
mostra la lista dei comandi interni che iniziano per a - ''':a Ctrl-d'''<br />
<br />
La ricerca funziona come per tante altre applicazioni: <br/><br />
cerca parola in avanti - '''/parola''' <br/><br />
ripete ricerca in avanti - '''n''' <br/><br />
cerca indietro - '''N'''<br />
<br />
cerca parola indietro - '''?parola''' <br/><br />
ripete ricerca indietro - '''n''' <br/><br />
cerca in avanti - '''N'''<br />
<br />
disabilita l'evidenziazione delle parole dopo la ricerca - ''':noh'''<br />
<br />
== Autocompletamento ==<br />
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate precedentemente. <br/><br />
'''Ctrl-x''' <br/><br />
scorrimento tra i risultati - '''Ctrl-n''' / '''Ctrl-p''' <br/><br />
annulla - '''Ctrl-e''' <br/><br />
accetta parola selezionata - '''Ctrl-y''' (oppure Enter)<br />
<br />
<br />
== Clipboard ==<br />
Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono utilizzate. <br/><br />
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1 (sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).<br />
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menù delle applicazioni o le classiche scorciatoie Ctrl-c / Ctrl-x / Ctrl-v. <br/><br />
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]<br />
<br />
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.<br />
:PRIMARY: <br/><br />
copia - '''"*y''' <br/><br />
taglia - '''"*x''' <br/><br />
incolla - '''"*p'''<br />
<br />
:CLIPBOARD: <br/><br />
copia - '''"+y''' <br/><br />
taglia - '''"+x''' <br/><br />
incolla - '''"+p'''<br />
<br />
Allo stesso modo, per copiare una riga senza prima selezionarla si useranno '''"*yy''' e '''"+yy'''<br />
<br />
Il '''"''' (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo.<br/><br />
'''*''' (asterisco) e '''+''' (più) fanno parte dei registri di selezione e rilascio del testo da e verso la clipboard di Xorg.<br />
Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard.<br />
Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.<br />
<br />
cancella riga - '''"_dd''' <br/><br />
cancella tre righe - '''"_3dd'''<br />
<br />
Per approfondire e sapere di più sugli altri sette registri consultare la documentazione: <br/><br />
'''<nowiki>:</nowiki>help "''' <br/><br />
'''<nowiki>:</nowiki>help :registers'''<br />
<br />
<br />
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/><br />
'''<nowiki>:</nowiki>version'''<br />
<br />
cercando <code>clipboard</code> e <code>xterm_clipboard</code> nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà '''1''' se presente o '''0''' se non lo è: <br/><br />
'''<nowiki>:</nowiki>echo has('clipboard')''' <br/><br />
'''<nowiki>:</nowiki>echo has('xterm_clipboard')'''<br />
<br />
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/><br />
* vim-gtk<br />
* vim-gnome<br />
* vim-athena<br />
<br />
[[Categoria: Elaborazione_testi]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Editing&diff=31889VimCS: Editing2013-03-02T00:34:45Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
== Sostituzione ==<br />
entra in modalità sostituzione - '''R''' <br/><br />
sostituisce singolo carattere e torna in modalità comando - '''r''' (seguito dal carattere)<br />
<br />
maiuscole in minuscole e viceversa - '''~''' <br/><br />
tutta la riga minuscola - '''guu''' (oppure '''vu''') <br/><br />
solo una parola minuscola - '''vEu''' <br/><br />
tutta la riga maiuscola - '''gUU''' (oppure '''VU''') <br/><br />
solo una parola maiuscola - '''vEU''' <br/><br />
inverte maiuscole e minuscole di una parola - '''vE~''' <br/><br />
inverte maiuscole e minuscole di una riga - '''g~~''' <br/><br />
intero file minuscolo - '''ggguG''' <br/><br />
intero file maiuscolo - '''gggUG'''<br />
<br />
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo/''' <br/><br />
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/><br />
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/><br />
sostituzione in tutto il documento - ''':%s/vecchio/nuovo/g''' <br/><br />
<br />
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''<br />
<br />
elimina le terminazioni di riga in stile DOS, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/><br />
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>Ctrl-v</code> e <code>Ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/><br />
'''<nowiki>:</nowiki>%s/^M//g'''<br />
<br />
<br />
dato un file con tante righe nella forma di ''foo bar baz <nowiki>http://bla</nowiki>'',<br />
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:<br />
'''<nowiki>:</nowiki>%s/^.\{-}\zehttp//g'''<br />
<br />
<br />
data una riga nella forma '11. foo' sostituisce il punto con un tab<br />
'''<nowiki>:</nowiki>s/\(^[0-9]\+\)\. /\1\t/'''<br />
<br />
<br />
cancella tutto ciò che c'è dopo le virgolette<br />
'''<nowiki>:</nowiki>%s/".*//'''<br />
<br />
<br />
cancella spazi non voluti a fine riga (trailing whitespace); <br />
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:<br />
'''<nowiki>:</nowiki>%s/\s\+$//'''<br />
<br />
cerca soltanto:<br />
'''/\s\+$'''<br />
<br />
<br />
seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata<br />
'''Ctrl-v I # <Esc>'''<br />
<br />
<br />
Inserisce contenuto di un registro all'inizio di ogni riga selezionata.<br />
Data una lista di voci come segue:<br />
* foo uno<br />
* due<br />
* tre<br />
* quattro<br />
* cinque<br />
* sei<br />
* sette<br />
<br />
supponiamo di voler inserire 'foo', compreso lo spazio che segue, all'inizio delle successive quattro righe.<br />
<br />
copiamo: '''vely''' <br/><br />
selezioniamo l'inizio delle altre righe: '''j Ctrl-v 3j''' <br/><br />
passiamo alla modalità inserimento visuale: '''I''' <br/><br />
incolliamo e torniamo alla modalità comando: '''Ctrl-r " <Esc>'''<br />
<br />
La sequenza completa è dunque: '''velyj Ctrl-v 3jI Ctrl-r " <Esc>''' <br/><br />
Appare macchinoso ma è un'ottima alternativa alla modalità comando quando c'è bisogno di copiare stringhe complesse che, a causa di caratteri speciali e necessità di escape, risulterebbero scomode da inserire con il classico '''Ctrl-v :'<,'>s/^/foo /'''<br />
<br />
'''<nowiki>:</nowiki>help v_b_I''' <br/><br />
'''<nowiki>:</nowiki>help i_CTRL-R'''<br />
<br />
<br />
manda a capo in corrispondenza di ogni tag <br><br />
'''<nowiki>:g,<br>,s,<br>,<br>\r,g</nowiki>'''<br />
<br />
<br />
in una riga con molteplici 'foo' sostituisce solo il secondo<br />
'''<nowiki>:</nowiki>s/\(.*\)foo/\1bar/'''<br />
<br />
<br />
ordina testo alfabeticamente - ''':sort'''<br />
<br />
elimina righe uguali - ''':sort u'''<br />
<br />
<br />
mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto<br />
'''<nowiki>:</nowiki>3p|45p|180p'''<br />
<br />
<br />
Alcuni semplici esempi di cosa si può fare con ex:<br />
<br />
cancella terza riga di un file<br />
<pre>$ ex file.txt <<< $'3d\nw'</pre><br />
cancella righe commentate<br />
<pre>$ ex file.txt <<< $'g/^#/d\nw'</pre><br />
<br />
dato un file contenente una sequenza di numeri (uno per riga) cancella tutto tranne 1 e 7<br />
<pre>$ printf '%s\n' 1 2 3 4 5 6 7 > file.txt; ex file.txt <<< $'v/[17]/d\nw'</pre><br />
<br />
''v'' è l'opposto di ''g'', come ''grep -v''<br />
<br />
<br />
== Selezione e inserimento ==<br />
Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre. <br/><br />
Come accennato all'inizio, la modalità visuale seleziona il testo. <br />
<br />
inizia selezione - '''v''' <br/><br />
seleziona intera riga - '''V''' <br/><br />
seleziona blocco (per colonne) - '''Ctrl-v''' <br/><br />
seleziona tutto - '''ggVG''' <br/><br />
<br />
<br />
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre sopra, basterà premere '''o''' e il cursore si sposterà alla prima riga della selezione corrente quindi muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/><br />
'''Vjok'''<br />
<br />
<br />
Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio. <br/><br />
Ecco ad esempio come copiare del testo salvandolo in altro file: <br/><br />
'''v''' <br/><br />
'''<nowiki>:</nowiki>'<,'>w nome_file'''<br />
<br />
Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il cursore: <br/><br />
'''<nowiki>:</nowiki>r nome_file'''<br />
<br />
<br />
Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una [[shell]] in una porzione di finestra e lo esegue: <br/><br />
'''<nowiki>:</nowiki>!ls'''<br />
<br />
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/><br />
'''<nowiki>:</nowiki>r !ls'''<br />
<br />
In caso servisse una shell con piena funzionalità: <br/><br />
'''<nowiki>:</nowiki>shell'''<br />
<br />
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)<br />
<br />
<br />
== Indentazione ==<br />
inserisce un'indentazione su riga - ''':>''' <br/><br />
inserisce due indentazioni su riga - ''':>>''' <br/><br />
toglie un'indentazione su riga - :<''' <br/><br />
toglie due indentazioni su riga - ''':<<''' <br/><br />
inserisce un'indentazione su 3 righe - ''':>3''' <br/><br />
inserisce un'indentazione sulla terza riga - ''':3>''' <br/><br />
<br />
inserisce - '''>>'''<br />
toglie - '''<<'''<br />
inserisce su tre righe - '''3>>'''<br />
toglie su tre righe - '''3<<'''<br />
inserisce sulla terza riga partendo da dove è posizionato il cursore - '''2j>>'''<br />
<br />
rimuove indentazione all'intero file - '''gg=G'''<br />
<br />
<br />
== Copia, taglia, incolla, cancella ==<br />
Questo funziona solo all'interno della sessione corrente di Vim. <br/><br />
copia testo selezionato - '''y''' <br/><br />
copia prima parola di una riga - '''yw''' <br/><br />
copia intera riga - '''yy'''<br />
<br />
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/><br />
incolla testo tagliato sopra la riga dove è il cursore - '''P'''<br />
<br />
mette la riga sottostante in coda alla corrente - '''J'''<br />
<br />
<br />
cancella carattere - '''x''' <br/><br />
cancella tre caratteri - '''3x''' <br/><br />
cancella dal cursore all'inizio della parola seguente - '''dw''' <br/><br />
cancella dal cursore alla fine della parola corrente - '''de''' <br/><br />
cancella dal cursore all'inizio della parola corrente - '''db''' <br/><br />
cancella la parola che si trova sotto al cursore - '''daw''' <br/><br />
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - '''caw''' <br/><br />
cancella dal cursore alla fine della riga - '''D''' <br/><br />
cancella dal cursore alla fine della riga - '''d$''' <br/><br />
cancella intera riga compreso spazio occupato - '''dd''' <br/><br />
cancella tre righe - '''3dd''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - '''df''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - '''dt''' (seguito dal carattere) <br/><br />
cancella tutte le righe dello schermo sotto il cursore - '''dL''' <br/><br />
cancella dalla riga in cui si trova il cursore alla fine del documento - '''dG''' <br/><br />
cancella dalla riga in cui si trova il cursore all'inizio del documento - '''dg''' <br/><br />
cancella intero documento - '''ggdG''' <br/><br />
cancella parola e passa alla modalità inserimento - '''cw''' <br/><br />
cancella riga e passa alla modalità inserimento - '''cc''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla<br />
modalità inserimento - '''cf''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla<br />
modalità inserimento - '''ct''' (seguito dal carattere)<br />
<br />
cancella ogni riga che inizia con una certa parola - ''':g/^parola/d''' <br/><br />
cancella ogni riga che termina con una certa parola - ''':g/parola$/d''' <br/><br />
cancella ogni riga che contiene una certa parola - ''':g/parola/d''' <br/><br />
cancella le righe commentate - ''':g/^#/d''' <br/><br />
cancella le righe vuote - ''':v/\S/d'''<br />
<br />
inserisce commento (#) ad inizio riga - ''':s/^/#/'''<br />
<br />
<br />
== Annulla, ripeti, cronologia e ricerca ==<br />
Per annullare o ripetere una modifica si userà: <br/><br />
undo - '''u''' <br/><br />
undo di una riga - '''U'''<br />
<br />
redo - '''Ctrl-r'''<br />
<br />
<br />
Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po'<br />
le ripetizioni si usa il punto: <br/><br />
'''.'''<br />
<br />
<br />
Per la modalità comando: <br/><br />
ripete ultima operazione - '''@:''' <br/><br />
mostra la history dei comandi - ''':history''' <br/><br />
mostra la history con comandi selezionabili - '''q:''' <br/><br />
mostra la history di ricerca con comandi selezionabili - '''q/''' (successivo) <br/><br />
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/><br />
<br />
mostra la lista dei comandi interni che iniziano per a - ''':a Ctrl-d'''<br />
<br />
La ricerca funziona come per tante altre applicazioni: <br/><br />
cerca parola in avanti - '''/parola''' <br/><br />
ripete ricerca in avanti - '''n''' <br/><br />
cerca indietro - '''N'''<br />
<br />
cerca parola indietro - '''?parola''' <br/><br />
ripete ricerca indietro - '''n''' <br/><br />
cerca in avanti - '''N'''<br />
<br />
disabilita l'evidenziazione delle parole dopo la ricerca - ''':noh'''<br />
<br />
== Autocompletamento ==<br />
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate precedentemente. <br/><br />
'''Ctrl-x''' <br/><br />
scorrimento tra i risultati - '''Ctrl-n''' / '''Ctrl-p''' <br/><br />
annulla - '''Ctrl-e''' <br/><br />
accetta parola selezionata - '''Ctrl-y''' (oppure Enter)<br />
<br />
<br />
== Clipboard ==<br />
Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono utilizzate. <br/><br />
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1 (sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).<br />
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menù delle applicazioni o le classiche scorciatoie Ctrl-c/Ctrl-x/Ctrl-v. <br/><br />
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]<br />
<br />
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.<br />
:PRIMARY: <br/><br />
copia - '''"*y''' <br/><br />
taglia - '''"*x''' <br/><br />
incolla - '''"*p'''<br />
<br />
:CLIPBOARD: <br/><br />
copia - '''"+y''' <br/><br />
taglia - '''"+x''' <br/><br />
incolla - '''"+p'''<br />
<br />
Allo stesso modo, per copiare una riga senza prima selezionarla si useranno '''"*yy''' e '''"+yy'''<br />
<br />
Il '''"''' (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo.<br/><br />
'''*''' (asterisco) e '''+''' (più) fanno parte dei registri di selezione e rilascio del testo da e verso la clipboard di Xorg.<br />
Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard.<br />
Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.<br />
<br />
cancella riga - '''"_dd'''<br />
cancella tre righe - '''"_3dd'''<br />
<br />
Per approfondire e sapere di più sugli altri sette registri consultare la documentazione: <br/><br />
'''<nowiki>:</nowiki>help "''' <br/><br />
'''<nowiki>:</nowiki>help :registers'''<br />
<br />
<br />
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/><br />
'''<nowiki>:</nowiki>version'''<br />
<br />
cercando <code>clipboard</code> e <code>xterm_clipboard</code> nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà '''1''' se presente o '''0''' se non lo è: <br/><br />
'''<nowiki>:</nowiki>echo has('clipboard')''' <br/><br />
'''<nowiki>:</nowiki>echo has('xterm_clipboard')'''<br />
<br />
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/><br />
* vim-gtk<br />
* vim-gnome<br />
* vim-athena<br />
<br />
[[Categoria: Elaborazione_testi]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Fluxbox,_un_Window_Manager_per_Computer_con_poche_risorse&diff=31822Fluxbox, un Window Manager per Computer con poche risorse2013-02-07T19:27:01Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
==Introduzione==<br />
Questa guida mostra come installare il Window Manager Fluxbox su un PC in cui sia stata fatta un'installazione base di Debian, senza server grafico X. Fluxbox è un Window Manager leggero, che consuma poche risorse di sistema e che può dare nuova vita a macchine obsolete<br />
<br />
==Installazione==<br />
Come al solito in Debian l'installazione consta di pochi comandi:<br />
<pre><br />
# aptitude install xorg fluxbox<br />
</pre><br />
<br />
==Programmi utili==<br />
Sebbene Fluxbox e il nostro server grafico X siano già funzionanti, abbiamo bisogno ancora di alcuni programmi, prima di poter utilizzare con profitto il nostro nuovo Window Manager:<br />
<br />
# aptitude install xterm feh<br />
<br />
Per apprendere come aggiungere programmi al menù di Fluxbox vedere la sezione apposita più avanti.<br />
<br />
==Avvio di Fluxbox==<br />
Notare che in questa installazione di Fluxbox non è stato installato alcun Login Manager; pertanto sarà necessario effettuare il login in maniera testuale da shell e poi avviare Fluxbox.<br/><br />
<br />
Prima di poterlo fare, però, è necessario creare il file di avvio per <code>startx</code>:<br />
<br />
$ echo "exec startfluxbox" > ~/.xinitrc<br />
<br />
Se preferite, è possibile installare un Login Manager come <code>xdm, gdm, kdm</code>.<br/><br />
<br />
L'avvio di fluxbox dal gestore di login avviene andando a leggere il file '''<code>/usr/share/xsessions/fluxbox.desktop</code>''' il cui contenuto è il seguente:<br />
<br />
<pre><br />
[Desktop Entry]<br />
Name=Fluxbox<br />
Comment=Highly configurable and low resource X11 Window manager<br />
Exec=/usr/bin/startfluxbox<br />
Terminal=false<br />
TryExec=/usr/bin/startfluxbox<br />
Type=Application<br />
<br />
[X-Window Manager]<br />
SessionManaged=true<br />
</pre><br />
<br />
==Abbellimento del Desktop==<br />
Prima di installare altre applicazioni ci dedicheremo a rendere più gradevole l'ambiente di lavoro, installando:<br />
<br />
# aptitude install conky<br />
<br />
Per fare in modo che conky appaia sul desktop di Fluxbox è necessario creare il suo file di configurazione:<br />
<br />
$ conky -C > $HOME/.conkyrc<br />
<br />
modificando poi al suo interno la linea '''own_window yes''' in '''own_window no'''<br />
<br />
Per avere conky che si avvia insieme a Fluxbox modificate invece il file:<br />
<br />
$ nano $HOME/.fluxbox/startup<br />
<br />
aggiungendo la linea<br />
<br />
conky &<br />
<br />
'''prima''' della linea<br />
<br />
exec /usr/bin/fluxbox<br />
<br />
che deve essere sempre l'ultima.<br />
<br />
==Software per vecchi Laptop==<br />
Installiamo adesso alcuni software leggeri, adatti per notebook non proprio giovanissimi:<br />
<br />
# aptitude install wifi-radar cpufreqd<br />
<br />
Quindi avviamo il demone appena installato:<br />
<br />
# /etc/init.d/cpufreqd start<br />
<br />
Se il demone non partisse, occorre caricare il corretto modulo:<br />
<br />
* AMD Sempron/Athlon/MP ( K7 )<br />
<br />
# modprobe powernow-k7<br />
<br />
* AMD Duron/Sempron/Athlon/Opteron 64 ( K8 )<br />
<br />
# modprobe powernow-k8<br />
<br />
* Intel Core Duo and Intel Pentium M<br />
<br />
# modprobe speedstep-centrino<br />
<br />
* Intel Pentium IV<br />
<br />
# modprobe acpi-cpufreq<br />
<br />
==Software applicativo==<br />
# aptitude install iceweasel icedove centericq htop vim gftp abiword gnumeric<br />
<br />
==Dove trovare i temi GTK==<br />
È possibile ottenere i temi GTK da [http://xfce-look.org/index.php?xcontentmode=100 xfce-look.org],<br />
[http://gnome-look.org/index.php?xcontentmode=100 gnome-look.org], [http://browse.deviantart.com/?qh=&section=&q=GTK+theme deviantart.com]<br />
<br />
Per installare i temi c'è solo bisogno di decomprimere questi file in <code>~/.themes</code>. Quindi:<br />
<br />
<pre><br />
$ mkdir ~/.themes<br />
$ cd ~/.themes<br />
$ tar -zxvf theme-name-here.tar.gz<br />
$ tar -jxvf theme-name-here.tar.bz2<br />
</pre><br />
<br />
Alcuni temi sono installabili anche via <code>aptitude</code>:<br />
<br />
# aptitude install gtk2-engines-pixbuf<br />
<br />
oppure<br />
<br />
# aptitude install gtk2-engines-*<br />
<br />
Per utilizzare i temi scaricati, basta installare:<br />
<br />
# aptitude install gtk-theme-switch<br />
<br />
oppure<br />
<br />
# aptitude install gtk-chtheme<br />
<br />
==Il menù di Fluxbox==<br />
Il file di configurazione del menù di fluxbox di default è <code>~/.fluxbox/menu</code>. <br/><br />
<br />
Il file ha una struttura molto elementare. Di seguito è riportato uno stralcio del file di configurazione del menù di default su debian (/etc/X11/fluxbox/fluxbox-menu):<br />
<br />
<pre><br />
[begin] (Fluxbox)<br />
# Automatically generated file. Do not edit (see /usr/share/doc/menu/html/index.html)<br />
[submenu] (Aiuto) {}<br />
[exec] (Debian Reference) {/usr/bin/debian-reference} <br />
[exec] (Info) { x-terminal-emulator -T "Info" -e info} <br />
[exec] (Xman) {xman} <br />
[end]<br />
[submenu] (Applicazioni) {}<br />
[submenu] (Editor) {}<br />
[exec] (Nano) { x-terminal-emulator -T "Nano" -e /bin/nano} <br />
[end]<br />
[submenu] (Emulatori di terminale) {}<br />
[exec] (XTerm) {xterm} <br />
[exec] (XTerm (Unicode\)) {uxterm} <br />
[end]<br />
[submenu] (Grafica) {}<br />
[exec] (X Window Snapshot) {xwd | xwud} <br />
[end]<br />
[submenu] (Navigazione web) {}<br />
[exec] (w3m) { x-terminal-emulator -T "w3m" -e /usr/bin/w3m /usr/share/doc/w3m/MANUAL.html} <br />
[end]<br />
[end] <br />
</pre><br />
<br />
Le principali caratteristiche di questo file di testo sono:<br />
# Ogni riga ha una sintassi molto intuitiva e semplice;<br />
# L'indentatura del codice permette di "immaginarsi" il risultato finale.<br />
# Ogni riga ha una sintassi di questo tipo:<br />
<br />
<pre><br />
[tag] (label o nome del file) {comando o nomefile}<br />
</pre><br />
<br />
L'indentatura del file è una caratteristica molto importante che semplfica l'operazione di generazione del menù e della sua successiva modifica, perciò è bene mantenere questa struttura gerarchica ogni volta che si mette mano al menù.<br />
<br />
===Sintassi generica delle righe del file ===<br />
Ciascuna riga del file di configurazione del menù di fluxbox ha una struttura di questo tipo:<br />
[tag] (label o nome del file) {comando o nomefile}<br />
<br />
Perciò a ciascuna coppia di parentesi corrisponde un significato ben preciso e questo aiuta molto a far risparmiare tempo in fase di modifica del file. <br/><br />
<br />
Il menù inizia sempre con una riga di codice simile alla seguente:<br />
[begin] (Titolo_menù)<br />
<br />
il tag <code>[begin]</code> deve essere presente nel file, altrimenti fluxbox cerca il file di configurazione di default del sistema, mentre (Titolo_menù) può essere omesso. Titolo_menù è il testo che verrà visualizzato in cima al menù di fluxbox. <br/><br />
<br />
Per la chiusura del menù viene utilizzata il tag <code>[end]</code>. Questo può essere utilizzato sia per chiudere un menù che un sottomenù. In ogni menù deve essere presente un tag <code>[end]</code> per ogni tag <code>[submenu]</code> più uno che comunque è presente e che corrisponde al tag <code>[begin]</code>. Quindi un menù ha la seguente struttura:<br />
<pre><br />
[begin] (Titolo Menu)<br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
Per creare un sottomenù nel menù principale si usa il tag <code>[submenu]</code>. Ogni sottomenù viene chiuso dal tag <code>[end]</code>. Il tag <code>[submenu]</code> deve essere seguito dagli attributi (label) e . Il secondo attributo è opzionale e se omesso viene assunto uguale a (label). Riassumendo un sottomenù avrà il seguente aspetto:<br />
<pre><br />
[submenu] (label) <br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
dove tra <code>[submenu]</code> e <code>[end]</code> vengono incluse tutte le voci del menù. <br/><br />
<br />
Dal momento che fluxbox legge i menù in maniera ricorsiva non c'è limite al numero di sottomenù che possono essere annidati, vi consiglio però di non esagerare per non complicare troppo la ricerca di una applicazione.<br />
<br />
===Elemento del menù (Eseguibili)===<br />
Per popolare ciascun menù di voci che corrispondono all'esecuzione di un programma si utilizza la seguente istruzione:<br />
[exec] (label) {command}<br />
<br />
A questa riga viene associata nel menù una voce che viene chiamata "label" e che esegue il comando "command".<br />
<br />
===Elemento del menù (file e directory)===<br />
Per inserire il collegamento ad un file o ad una directory all'interno del menù di fluxbox si usa la seguente riga:<br />
[include] (nome_file_o_dir)<br />
<br />
===Separatore===<br />
A volte, per aumentare la chiarezza del menù può essere utile inserire un separatore. Questo può essere aggiunto inserendo una riga contenente l'istruzione <code>[separator]</code>:<br />
[separator]<br />
<br />
===Istruzioni aggiuntive===<br />
Fluxbox mette a disposizione una serie di istruzioni addizionali per personalizzare ulteriormente il menù. Le principali sono:<br />
* Inserimento di una voce che permette la chiusura e l'uscita da fluxbox<br />
[exit] (label)<br />
<br />
* Inserimento di una voce "estetica nel menù". In altre parole: inserimento di una voce che se selezionata non comporta l'esecuzione di nessun comando. La sintassi è:<br />
[nop] (label)<br />
<br />
se label viene omessa di default viene inserita una voce vuota.<br />
<br />
* Rilettura di tutti i file di configurazione di fluxbox<br />
[reconfig] (label)<br />
<br />
Questa voce è utile per creare nuovi temi e stili e non dover rilanciare fluxbox tutte le volte che è necessario testare il tema.<br />
* Riavvio del solo eseguibile di fluxbox, X e gli eventuali programmi rimarranno in esecuzione<br />
[restart] (label) {command}<br />
<br />
Verrà creata una voce nel menù con il nome "label" e una volta selezionata fluxbox verrà arrestato e all'uscita da fluxbox verrà eseguito il comando "command". Comunemente il comando fornito è quello necessario ad avviare un altro windows manager. Il parametro "command" è opzionale.<br />
* Voce per la configurazione di fluxbox<br />
[config] (label)<br />
<br />
Viene inserita una voce nel menù chiamata "label" che permette di accedere a numerose opzioni di configurazione riguardanti il comportamento delle finestre.<br />
* Directory dei wallpaper<br />
<br />
È possibile inserire una voce all'interno del menù che permetta di cambiare rapidamente lo sfondo di fluxbox attraverso la seguente riga:<br />
[wallpapers] (directory) {command}<br />
<br />
Cliccando su una immagine questa viene immediatamente impostata come sfondo. Ovviamente <code>directory</code> è la directory contenente le immagini.<br />
<br />
==Windowmenu==<br />
Windowmenu è il menù che si ottiene con un click destro del mouse sulla barra del titolo di una finestra, premere il tasto menù sulla barra del titolo, utilizzare il comando '':WindowMenu'' tramite tastiera o anche dal menù delle aree di lavoro. Di default ha opzioni per massimizzare, minimizzare, nascondere la finestra ecc, impostare le finestre su diversi livelli o inviare ad aree di lavoro e ricordare le opzioni delle finestre.<br />
<br />
===Modificare il menù===<br />
Windowmenu è come il rootmenu, eccetto alcune voci speciali che il menù normale non ha, il file di configurazione è ~/.fluxbox/windowmenu.<br />
<br />
Il menù dovrebbe iniziare con [begin] e finire con [end].<br />
<br />
Si possono usare i normali elementi del menù oppure quelli speciali della lista sottostante. Notare che (label) è facoltativo, senza di esso sarà utilizzato quello di default:<br />
<br />
[shade] (label)<br />
Questa opzione riduce la finestra alla sola barra del titolo "arrotolandola".<br />
<br />
Lo stesso effetto cliccando due volte sul titolo, scegliendo "Riduci a barra", utilizzando una scorciatoia da tastiera o la rotellina del mouse (comandi :Shade :ShadeOn :ShadeOff).<br />
<br />
[close] (label)<br />
Chiude la finestra. Proprio come premendo il tasto X nell'angolo.<br />
<br />
[stick] (label)<br />
Rende la finestra appiccicosa, ovvero visibile su tutte le aree di lavoro.<br />
<br />
[maximize] (label)<br />
Massimizza e ripristina la finestra.<br />
<br />
[iconify] (label)<br />
Minimizza (riduce a icona) la finestra.<br />
<br />
[raise] (label)<br />
Solleva la finestra al livello superiore portandola quindi in primo piano.<br />
<br />
[lower] (label)<br />
Porta la finestra al livello inferiore, dietro tutte le altre.<br />
<br />
[sendto] (label)<br />
Mostra il menù "Invia a..." che permette l'invio delle finestre in un'altra area di lavoro.<br />
<br />
[layer] (label)<br />
Mostra il menù "Livello..." che permette all'utente di cambiare facilmente il livello della finestra.<br />
<br />
[extramenus]<br />
Mostra il menù "Ricorda..." per salvare alcune impostazioni della finestra nel file ~/.fluxbox/apps.<br />
<br />
[alpha] (label)<br />
Un sottomenù contenente varie opzioni per la trasparenza della finestra.<br />
<br />
[separator]<br />
Linea di separazione orizzontale, non fa altro che creare una linea divisoria.<br />
<br />
===Esempi===<br />
Questo dovrebbe creare un menù simile a quello di default:<br />
<br />
# ~./fluxbox/windowmenu<br />
[begin]<br />
[shade] (Shade)<br />
[stick] (Stick)<br />
[maximize]<br />
[iconify] (Iconify)<br />
[raise]<br />
[lower]<br />
[sendto]<br />
[layer]<br />
[extramenus]<br />
[separator]<br />
[close] (Close)<br />
[end]<br />
<br />
Questo è un pò differente:<br />
<br />
[begin]<br />
[exec] (terminal) {xterm}<br />
[maximize] (maximize)<br />
[iconify] (minimize)<br />
[submenu] (advanced)<br />
[layer] (layer)<br />
[extramenus] (remember)<br />
[sendto] (send to)<br />
[end]<br />
[separator]<br />
[close] (close)<br />
[end]<br />
<br />
==Applicazioni e accessori aggiuntivi==<br />
Fluxbox non integra un file manager, un emulatore di terminale o altro, perciò si può installare praticamente [http://fluxbox-wiki.org/index.php?title=Lightweight_Applications tutto quel che si vuole].<br />
<br />
{{Autori |Autore = [[Utente:Ferdybassi|Ferdybassi]] 18:11, 10 mar 2010 (CET)}}<br />
<br />
<br />
[[Categoria:Fluxbox]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Repository_ufficiali&diff=30927Repository ufficiali2012-10-24T14:00:38Z<p>Skizzhg: le traduzioni dei nomi in codice non si possono leggere</p>
<hr />
<div>{{Repository<br />
|precedente_rep=Repository & pinning<br />
|successivo_rep=Repository speciali<br />
}}<br />
{{Versioni compatibili}}<br />
= Lista repository ufficiali Debian =<br />
Di seguito troverete l'elenco dei repository ufficiali da inserire nel file <code>/etc/apt/sources.list</code> per le varie [[La struttura della Distribuzione|versioni di Debian]]. Il mirror è quello italiano. I repository dei pacchetti sorgente sono commentati. Per ulteriori informazioni leggere la sezione: [[I repository ed il loro utilizzo#Sources.list|Sources.list]].<br />
<br />
== Stable: Debian Squeeze ==<br />
<pre><br />
## Debian Stable (Squeeze)<br />
deb http://ftp.it.debian.org/debian/ squeeze main<br />
#deb-src http://ftp.it.debian.org/debian/ squeeze main<br />
<br />
## Aggiornamenti della sicurezza<br />
deb http://security.debian.org/ squeeze/updates main<br />
#deb-src http://security.debian.org/ squeeze/updates main<br />
</pre><br />
<br />
Per avere pacchetti più aggiornati per Lenny e Squeeze si possono usare i [[backport]]:<br />
* [http://backports.debian.org/ Debian Backports]<br />
<br />
== Testing: Debian Wheezy ==<br />
<pre><br />
## Debian Testing (Wheezy)<br />
deb http://ftp.it.debian.org/debian/ wheezy main<br />
#deb-src http://ftp.it.debian.org/debian/ wheezy main<br />
<br />
## Aggiornamenti della sicurezza<br />
deb http://security.debian.org/ wheezy/updates main<br />
#deb-src http://security.debian.org/ wheezy/updates main<br />
</pre><br />
<br />
== Unstable: Debian Sid ==<br />
<pre><br />
## Debian Unstable (Sid)<br />
deb http://ftp.it.debian.org/debian/ unstable main<br />
#deb-src http://ftp.it.debian.org/debian/ unstable main<br />
</pre><br />
Per '''Sid''' non c'è il repository per la sicurezza dato che eventuali falle vengono corrette semplicemente con l'aggiornamento del pacchetto incriminato.<br />
<br />
== Oldstable (la vecchia stable): Debian Lenny ==<br />
{{Warningbox|Il supporto per Debian 5.0 "Lenny" [http://www.debian.org/News/2012/20120209 è terminato] il 6 febbraio 2012. A partire da questa data non sono più presenti gli aggiornamenti dei pacchetti per la correzione di eventuali bug. È vivamente consigliato aggiornare il sistema a Debian 6.0 "Squeeze" oppure utilizzare gli [[archivi Debian]].}}<br />
<pre><br />
#debian lenny<br />
deb http://archive.debian.org/debian/ lenny main <br />
deb-src http://archive.debian.org/debian/ lenny main <br />
# Security:<br />
deb http://archive.debian.org/debian-security/ lenny/updates main <br />
deb-src http://archive.debian.org/debian-security/ lenny/updates main <br />
# Volatile:<br />
deb http://archive.debian.org/debian-volatile lenny/volatile main <br />
</pre><br />
[[Categoria: Repository ufficiali]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=30646GNU/Screen2012-10-13T00:44:15Z<p>Skizzhg: /* Modalità riga di Comando */</p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come [[Cron|Cron]].<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterranno esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br/><br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br/><br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br/><br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
<pre>Ctrl-a :</pre><br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di [[Vim Cheat Sheet|Vim]]; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
<pre>hardstatus alwayslastline</pre><br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt [http://guide.debianizzati.org/index.php/Categoria:Bash Bash] digitiamo:<br />
<pre>$ screen -X hardstatus string "$(man screen | grep %-L)"</pre><br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
<pre>%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<</pre><br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
<pre>Ctrl-a c</pre><br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
<pre>0$ bash 1-$* bash</pre><br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
<pre>Ctrl-a ?</pre><br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
<pre>Ctrl-a A</pre><br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
<pre>Ctrl-a :number</pre> <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare:<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
<pre>Ctrl-a k</pre><br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
<pre>Ctrl-a t</pre><br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
<pre>Ctrl-a m</pre><br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
<pre>Ctrl-a C-\</pre><br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
<pre>Ctrl-a :quit</pre><br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via [[SSH]]) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina.<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, Xterm o tty che sia:<br />
<pre>Ctrl-a d</pre><br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare:<br />
<pre>$ screen -r nome_sessione -p nome_finestra</pre><br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un'unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br/><br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br/><br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
<pre>$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
</pre><br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
<pre>$ screen -r fugu</pre><br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
<pre>$ screen -S fugu</pre><br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
<pre>$ screen -x</pre><br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
La variabile d'ambiente '''STY''' permette di verificare se Screen è in esecuzione. Se ad esempio lo si volesse avviare al login è possibile inserire nel file <code>~/.bashrc</code> quanto segue:<br />
<pre><br />
if [ -z "$STY" ]; then<br />
screen -R<br />
fi<br />
</pre><br />
Che significa: se già esiste una sessione attaccala, altrimenti creane una.<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in Bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
<pre>Ctrl-a a </pre><br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
<pre>$ screen -e ^Ss</pre><br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
<pre>Ctrl-a S</pre><br />
<br />
Mentre per lo split verticale:<br />
<pre>Ctrl-a |</pre><br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
<pre>Ctrl-a TAB</pre><br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionamento, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
<pre>Ctrl-a X</pre><br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
<pre>Ctrl-a Q</pre><br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
<pre>Ctrl-a :resize valore</pre><br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
<pre>Ctrl-a :layout save nome_a_piacere</pre><br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
<pre>Ctrl-a :layout attach nome_usato_per_salvare</pre><br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
<pre>Ctrl-a :layout show</pre><br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
<pre>Ctrl-a :layout title nome_usato_per_salvare</pre><br />
<br />
E naturalmente rimuoverlo:<br />
<pre>Ctrl-a :layout remove nome_usato_per_salvare</pre><br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è quindi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
<pre>Ctrl-a [</pre><br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt Bash o un editor, e incolliamo con:<br />
<pre>Ctrl-a ]</pre><br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
<pre>Ctrl-a ></pre><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
<pre>Ctrl-a <</pre><br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
<pre>C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile</pre><br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
<pre>Ctrl-a h</pre><br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il [[path]] da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>$ screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
<pre>$ screen -X select 1</pre><br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
<pre>$ screen -p 9 -X number 11</pre><br />
<br />
Rinominare finestra:<br />
<pre>$ screen -p 9 -X title zut</pre><br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'</pre><br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'</pre><br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
$ screen -X eval 'stuff comando "parametri \012"'<br />
$ screen -X eval 'stuff ./mio_script.sh "parametri_script \012"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi.<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
<pre>$ screen -X at bash# stuff 'ls ^M'</pre><br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate <code>bash</code> e alla finestra <code>l10n</code>:<br />
<pre>$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
<pre>$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
<pre>$ screen -X at \# stuff 'ls ^M'</pre><br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^Q si ottiene premendo <code>ctrl-v</code> e <code>ctrl-q</code>):<br />
<pre>$ screen -p 7 -X stuff ^Q </pre><br />
<br />
nella finestra 7 ho solitamente <code>rtorrent</code>, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre <br />
# (i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m https://www.google.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
<pre>Ctrl-a :source .screenrc</pre><br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
{{Autori|Autore=[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST}}<br />
<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=30496GNU/Screen2012-10-09T20:49:48Z<p>Skizzhg: STY</p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come [[Cron|Cron]].<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterranno esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br/><br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br/><br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br/><br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
<pre>Ctrl-a :</pre><br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di [[Vim Cheat Sheet|Vim]]; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
<pre>hardstatus alwayslastline</pre><br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt [http://guide.debianizzati.org/index.php/Categoria:Bash Bash] digitiamo:<br />
<pre>$ screen -X hardstatus string "$(man screen | grep %-L)"</pre><br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
<pre>%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<</pre><br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
<pre>Ctrl-a c</pre><br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
<pre>0$ bash 1-$* bash</pre><br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
<pre>Ctrl-a ?</pre><br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
<pre>Ctrl-a A</pre><br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
<pre>Ctrl-a :number</pre> <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare:<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
<pre>Ctrl-a k</pre><br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
<pre>Ctrl-a t</pre><br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
<pre>Ctrl-a m</pre><br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
<pre>Ctrl-a C-\</pre><br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
<pre>Ctrl-a :quit</pre><br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via [[SSH]]) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina.<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, Xterm o tty che sia:<br />
<pre>Ctrl-a d</pre><br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare:<br />
<pre>$ screen -r nome_sessione -p nome_finestra</pre><br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un'unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br/><br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br/><br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
<pre>$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
</pre><br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
<pre>$ screen -r fugu</pre><br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
<pre>$ screen -S fugu</pre><br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
<pre>$ screen -x</pre><br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
La variabile d'ambiente '''STY''' permette di verificare se Screen è in esecuzione. Se ad esempio lo si volesse avviare al login è possibile inserire nel file <code>~/.bashrc</code> quanto segue:<br />
<pre><br />
if [ -z "$STY" ]; then<br />
screen -R<br />
fi<br />
</pre><br />
Che significa: se già esiste una sessione attaccala, altrimenti creane una.<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in Bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
<pre>Ctrl-a a </pre><br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
<pre>$ screen -e ^Ss</pre><br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
<pre>Ctrl-a S</pre><br />
<br />
Mentre per lo split verticale:<br />
<pre>Ctrl-a |</pre><br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
<pre>Ctrl-a TAB</pre><br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionamento, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
<pre>Ctrl-a X</pre><br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
<pre>Ctrl-a Q</pre><br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
<pre>Ctrl-a :resize valore</pre><br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
<pre>Ctrl-a :layout save nome_a_piacere</pre><br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
<pre>Ctrl-a :layout attach nome_usato_per_salvare</pre><br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
<pre>Ctrl-a :layout show</pre><br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
<pre>Ctrl-a :layout title nome_usato_per_salvare</pre><br />
<br />
E naturalmente rimuoverlo:<br />
<pre>Ctrl-a :layout remove nome_usato_per_salvare</pre><br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è quindi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
<pre>Ctrl-a [</pre><br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt Bash o un editor, e incolliamo con:<br />
<pre>Ctrl-a ]</pre><br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
<pre>Ctrl-a ></pre><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
<pre>Ctrl-a <</pre><br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
<pre>C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile</pre><br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
<pre>Ctrl-a h</pre><br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il [[path]] da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>$ screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
<pre>$ screen -X select 1</pre><br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
<pre>$ screen -p 9 -X number 11</pre><br />
<br />
Rinominare finestra:<br />
<pre>$ screen -p 9 -X title zut</pre><br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'</pre><br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'</pre><br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
$ screen -X eval 'stuff comando "parametri \015"'<br />
$ screen -X eval 'stuff ./mio_script.sh "parametri_script \015"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi.<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
<pre>$ screen -X at bash# stuff 'ls ^M'</pre><br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate <code>bash</code> e alla finestra <code>l10n</code>:<br />
<pre>$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
<pre>$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
<pre>$ screen -X at \# stuff 'ls ^M'</pre><br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^Q si ottiene premendo <code>ctrl-v</code> e <code>ctrl-q</code>):<br />
<pre>$ screen -p 7 -X stuff ^Q </pre><br />
<br />
nella finestra 7 ho solitamente <code>rtorrent</code>, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre <br />
# (i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m https://www.google.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
<pre>Ctrl-a :source .screenrc</pre><br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
{{Autori|Autore=[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST}}<br />
<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=30311GNU/Screen2012-10-07T01:49:00Z<p>Skizzhg: /* Detach e sessioni */</p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come [[Cron|Cron]].<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterranno esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br/><br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br/><br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br/><br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
<pre>Ctrl-a :</pre><br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di [[Vim Cheat Sheet|Vim]]; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
<pre>hardstatus alwayslastline</pre><br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt [http://guide.debianizzati.org/index.php/Categoria:Bash Bash] digitiamo:<br />
<pre>$ screen -X hardstatus string "$(man screen | grep %-L)"</pre><br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
<pre>%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<</pre><br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
<pre>Ctrl-a c</pre><br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
<pre>0$ bash 1-$* bash</pre><br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
<pre>Ctrl-a ?</pre><br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
<pre>Ctrl-a A</pre><br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
<pre>Ctrl-a :number</pre> <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare:<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
<pre>Ctrl-a k</pre><br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
<pre>Ctrl-a t</pre><br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
<pre>Ctrl-a m</pre><br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
<pre>Ctrl-a C-\</pre><br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
<pre>Ctrl-a :quit</pre><br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via [[SSH]]) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina.<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, Xterm o tty che sia:<br />
<pre>Ctrl-a d</pre><br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare:<br />
<pre>$ screen -r nome_sessione -p nome_finestra</pre><br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un'unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br/><br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br/><br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
<pre>$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
</pre><br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
<pre>$ screen -r fugu</pre><br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
<pre>$ screen -S fugu</pre><br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
<pre>$ screen -x</pre><br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in Bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
<pre>Ctrl-a a </pre><br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
<pre>$ screen -e ^Ss</pre><br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
<pre>Ctrl-a S</pre><br />
<br />
Mentre per lo split verticale:<br />
<pre>Ctrl-a |</pre><br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
<pre>Ctrl-a TAB</pre><br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionamento, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
<pre>Ctrl-a X</pre><br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
<pre>Ctrl-a Q</pre><br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
<pre>Ctrl-a :resize valore</pre><br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
<pre>Ctrl-a :layout save nome_a_piacere</pre><br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
<pre>Ctrl-a :layout attach nome_usato_per_salvare</pre><br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
<pre>Ctrl-a :layout show</pre><br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
<pre>Ctrl-a :layout title nome_usato_per_salvare</pre><br />
<br />
E naturalmente rimuoverlo:<br />
<pre>Ctrl-a :layout remove nome_usato_per_salvare</pre><br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è quindi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
<pre>Ctrl-a [</pre><br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt Bash o un editor, e incolliamo con:<br />
<pre>Ctrl-a ]</pre><br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
<pre>Ctrl-a ></pre><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
<pre>Ctrl-a <</pre><br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
<pre>C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile</pre><br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
<pre>Ctrl-a h</pre><br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il [[path]] da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>$ screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
<pre>$ screen -X select 1</pre><br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
<pre>$ screen -p 9 -X number 11</pre><br />
<br />
Rinominare finestra:<br />
<pre>$ screen -p 9 -X title zut</pre><br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'</pre><br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'</pre><br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
$ screen -X eval 'stuff comando "parametri \015"'<br />
$ screen -X eval 'stuff ./mio_script.sh "parametri_script \015"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi.<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
<pre>$ screen -X at bash# stuff 'ls ^M'</pre><br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate <code>bash</code> e alla finestra <code>l10n</code>:<br />
<pre>$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
<pre>$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
<pre>$ screen -X at \# stuff 'ls ^M'</pre><br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^Q si ottiene premendo <code>ctrl-v</code> e <code>ctrl-q</code>):<br />
<pre>$ screen -p 7 -X stuff ^Q </pre><br />
<br />
nella finestra 7 ho solitamente <code>rtorrent</code>, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre <br />
# (i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m https://www.google.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
<pre>Ctrl-a :source .screenrc</pre><br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
{{Autori|Autore=[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST}}<br />
<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=30310GNU/Screen2012-10-07T01:37:20Z<p>Skizzhg: minor fix</p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come [[Cron|Cron]].<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterranno esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br/><br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br/><br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br/><br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
<pre>Ctrl-a :</pre><br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di [[Vim Cheat Sheet|Vim]]; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
<pre>hardstatus alwayslastline</pre><br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt [http://guide.debianizzati.org/index.php/Categoria:Bash Bash] digitiamo:<br />
<pre>$ screen -X hardstatus string "$(man screen | grep %-L)"</pre><br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
<pre>%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<</pre><br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
<pre>Ctrl-a c</pre><br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
<pre>0$ bash 1-$* bash</pre><br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
<pre>Ctrl-a ?</pre><br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
<pre>Ctrl-a A</pre><br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
<pre>Ctrl-a :number</pre> <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare:<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
<pre>Ctrl-a k</pre><br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
<pre>Ctrl-a t</pre><br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
<pre>Ctrl-a m</pre><br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
<pre>Ctrl-a C-\</pre><br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
<pre>Ctrl-a :quit</pre><br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via [[SSH]]) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina;<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
<pre>Ctrl-a d</pre><br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare:<br />
<pre>$ screen -r nome_sessione -p nome_finestra</pre><br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un'unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br/><br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br/><br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
<pre>$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
</pre><br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
<pre>$ screen -r fugu</pre><br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
<pre>$ screen -S fugu</pre><br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
<pre>$ screen -x</pre><br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in Bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
<pre>Ctrl-a a </pre><br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
<pre>$ screen -e ^Ss</pre><br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
<pre>Ctrl-a S</pre><br />
<br />
Mentre per lo split verticale:<br />
<pre>Ctrl-a |</pre><br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
<pre>Ctrl-a TAB</pre><br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionamento, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
<pre>Ctrl-a X</pre><br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
<pre>Ctrl-a Q</pre><br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
<pre>Ctrl-a :resize valore</pre><br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
<pre>Ctrl-a :layout save nome_a_piacere</pre><br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
<pre>Ctrl-a :layout attach nome_usato_per_salvare</pre><br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
<pre>Ctrl-a :layout show</pre><br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
<pre>Ctrl-a :layout title nome_usato_per_salvare</pre><br />
<br />
E naturalmente rimuoverlo:<br />
<pre>Ctrl-a :layout remove nome_usato_per_salvare</pre><br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è quindi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
<pre>Ctrl-a [</pre><br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt Bash o un editor, e incolliamo con:<br />
<pre>Ctrl-a ]</pre><br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
<pre>Ctrl-a ></pre><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
<pre>Ctrl-a <</pre><br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
<pre>C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile</pre><br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
<pre>Ctrl-a h</pre><br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il [[path]] da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>$ screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
<pre>$ screen -X select 1</pre><br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
<pre>$ screen -p 9 -X number 11</pre><br />
<br />
Rinominare finestra:<br />
<pre>$ screen -p 9 -X title zut</pre><br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'</pre><br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'</pre><br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
$ screen -X eval 'stuff comando "parametri \015"'<br />
$ screen -X eval 'stuff ./mio_script.sh "parametri_script \015"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi.<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
<pre>$ screen -X at bash# stuff 'ls ^M'</pre><br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate <code>bash</code> e alla finestra <code>l10n</code>:<br />
<pre>$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
<pre>$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
<pre>$ screen -X at \# stuff 'ls ^M'</pre><br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^Q si ottiene premendo <code>ctrl-v</code> e <code>ctrl-q</code>):<br />
<pre>$ screen -p 7 -X stuff ^Q </pre><br />
<br />
nella finestra 7 ho solitamente <code>rtorrent</code>, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre <br />
# (i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m https://www.google.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
<pre>Ctrl-a :source .screenrc</pre><br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
{{Autori|Autore=[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST}}<br />
<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Guide@Debianizzati.Org:Template_%22Autori%22_-_lista_guide&diff=30091Guide@Debianizzati.Org:Template "Autori" - lista guide2012-10-06T03:45:24Z<p>Skizzhg: numerazione blocchi per facilitare la consultazione (almeno per me :) e prenotazione</p>
<hr />
<div>== Introduzione ==<br />
Questa è una pagina temporanea dedicata a coordinare l'introduzione del [[Template:Autori | template "Autori"]] su tutte le guide del Wiki.<br/><br />
Vedere, a tal proposito, anche le discussione sul forum: [http://forum.debianizzati.org/viewtopic.php?f=25&t=44334 link1] , [http://forum.debianizzati.org/viewtopic.php?f=25&t=46078 link2]<br />
<br />
== Dove non inserire il template ==<br />
<br />
*[[Pagina principale]]<br />
*[[Indice Guide]]<br />
*[[Faq | FAQ]]<br />
*[[Tabella Software]] e [[Lista Hardware]]<br />
*Pagine di help: [[Aiuto:Contents]] [[Aiuto:Editing]]<br />
*[[:Categoria:Libri | Categoria Libri]]<br />
*[[:Categoria:Glossario | Pagine di glossario]]<br />
*[[:Categoria:Main | Categorie]] e [[Lista Categorie | pagina delle categorie]]<br />
*[[:Categoria:Template | Template]]<br />
*[[:Categoria:Wiki | Pagine della categoria Wiki]]<br />
*[[:Categoria:Debianizzati | Pagine della categoria Debianizzati]]<br />
*[[:Categoria:Da Cancellare | Pagine da cancellare]]<br />
*[[Installazione Debian: pagine utili]]<br />
*[[Installare Debian]]<br />
*[[Elenco laptop debianizzati]]<br />
*Pagine successive ad una guida con sommario (la guida deve essere considerata come composta da più capitoli - [[Linux_Kernel_in_a_Nutshell | esempio]]).<br/>Il template va inserito solo sulla pagina principale, magari si aggiungono tra gli estensori i nomi di chi ha scritto le pagine successive.<br />
* Guide che rimandano agli articoli dell'e-zine ([[Repository_%26_pinning |esempio]]). Eventualmente contrassegnarle scrivendo accanto al nome della guida nella tabella. Si deciderà alla fine come muoversi.<br />
<br />
== La tabella ==<br />
Nella tabella in basso sono elencate tutte le guide del Wiki divise in blocchi.<br/><br />
* La prima colonna contiene il nome della guida<br />
* la seconda colonna contiene lo stato del task (fermo, in corso, concluso, da verificare)<br />
<br />
# <span style="color:#005000">colore verde</span> (codice #cbf6cb) : tutte le guide del blocco sono state verificate<br />
# <span style="color:#E7C100">colore giallo</span> (codice #f6f1c0) : il blocco di guide è in corso di verifica<br />
# <span style="color:#bd0347">colore rosso</span> (codice #f6c7cd) : il blocco di guide non è stato verificato<br />
# <span style="color:#6257cc">colore viola</span> (codice #9992df) : il blocco di guide è stato verificato tranne che per qualche guida su cui sorgono dei dubbi (utilizzare in questo caso la pagina di discussione o la discussione sul forum e contrassegnare la guida nella tabella scrivendo accanto al suo nome)<br />
<br />
* la terza riga contiene il nick di chi sta controllando il blocco di guide<br />
<br />
== Varie ==<br />
* Possibilmente cancellare l'eventuale riga vuota sotto il template "Versioni compatibili" per allineare il box al sommario "Indice" (quello a sinistra)<br />
* Se notate la mancanza del template "Versioni compatibili", segnalatelo nella pagina di discussione relativa alla guida. Il template "Versioni compatibili" non va inserito sulle guide sopra elencate.<br />
<br />
== Guide == <br />
{| class="wikitable" style="width:99%"<br />
!width="70%"|Guida<br />
!width="15%"|Status<br />
!width="14%"|Nick<br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 1''' </center><br/> [[Livello_degli_inchiostri_e_pulizia_testine_per_stampanti_Epson]]<br/>[[Bannato]]<br/>[[Trasferimento_file_da_Nokia_6630_a_Debian_e_viceversa]]<br/>[[Debian_Free_Software_Guidelines]]<br/>[[Gimp:_rendere_un_logo_trasparente]]<br/>[[LKMPG:_Introduzione]]<br/>[[Powernowd:_CpuScaling_per_AMD]]<br/>[[Monitorare_la_banda_con_BitmeterOS]]<br/>[[Associare_a_Thunderbird_il_browser_preferito]]<br/>[[Usare_Fotocamere_Digitali]]<br/>[[Dolphin-emulator]]<br/>[[Utilizzare_un_UPS_APC_con_Debian]]<br/>[[Configurare_SUDO_per_gestire_le_attivit%C3%A0_degli_amministratori]]<br/>[[Samba_OpenLDAP_su_Etch:_Comandi_utili_e_consigli_finali]]<br/>[[Gnu/Hurd]]<br/>[[Spostare_il_tasto_di_chiusura_delle_tab_di_Firefox_2]]<br/>[[LVM:_introduzione]]<br/>[[NFS:_client_windows]]<br/>[[LKN:_Requisiti_per_Compilare_ed_Utilizzare_il_Kernel]]<br/>[[Debian_on_a_presario_2141EU]]<br/>[[Creare_pacchetti_per_Kde]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 2''' </center><br/> [[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Configurazione_Quote_Utenti]]<br/>[[Perch%C3%A9_la_scuola_dovrebbe_usare_esclusivamente_software_libero]]<br/>[[Incrementare_le_prestazioni_di_Apache_con_mod_pagespeed]]<br/>[[Perch%C3%A9_il_software_non_deve_avere_padroni]]<br/>[[LaTeX_e_Vim]]<br/>[[Abuse]]<br/>[[Linux_Kernel_in_a_Nutshell]]<br/>[[Patch_Con_Kolivas:_incrementare_le_prestazioni_desktop]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server]]<br/>[[Pacchettizzare_un_tema_per_Bootsplash]]<br/>[[LKMPG:_Comunicare_con_i_file_dei_device]]<br/>[[Guida_all%27LVM]]<br/>[[Superkaramba]]<br/>[[Debian:_guida_all%27_installazione_di_Enlightenment_17_-_e17_cvs]]<br/>[[Vim]]<br/>[[Configurare_fluxbox_sui_netbook]]<br/>[[Pacchetto_virtuale]]<br/>[[Nautilus:_navigare_con_una_sola_finestra]]<br/>[[Eseguibile]]<br/>[[Nfs-kernel-server:_possibili_problemi_e_prestazioni]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Configurare_Client_linux]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 3''' </center><br/> [[Avere_al_login_uno_schermo_pulito]]<br/>[[Come_visualizzare_i_video_in_streaming_su_Debian]]<br/>[[Postfix:_configurazione]]<br/>[[Samba_OpenLDAP_su_Etch:_Aggiungere_i_primi_utenti_di_dominio]]<br/>[[DLP:_Installare_un_Mirror_Debian_(piccolo_howto)]]<br/>[[Subsonic,_un_Media_Server_completo_e_funzionale]]<br/>[[Autenticazione_via_token_con_PAM_USB]]<br/>[[Pid]]<br/>[[Pulseaudio:_installazione_e_configurazione]]<br/>[[Pacchettizzare_ed_installare_Xorg_su_Debian_Sid]]<br/>[[VimCS:_Basi]]<br/>[[Password_sicure:_la_base_della_sicurezza_informatica]]<br/>[[XAMPP:_Linux,_Apache,_MySQL_e_PHP_facili]]<br/>[[UsbMount:_Gestione_automatizzata_delle_periferiche_usb_di_memorizzazione]]<br/>[[Uomini_e_robot]]<br/>[[Kernel]]<br/>[[Atheros_802.11n:_installazione_e_configurazione]]<br/>[[VimCS:_Extra]]<br/>[[Installare_estensioni_per_Firefox_comuni_a_tutti_gli_utenti]]<br/>[[OCR:_sistemi_di_Optical_Character_Recognition_(riconoscimento_ottico_dei_caratteri)]]<br/>[[Usare_Fotocamere_Digitali_(usb-storage)]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 4''' </center><br/> [[Esecuzione_di_programmi:_la_variabile_PATH]]<br/>[[Pensare_da_informatico:_Python]]<br/>[[Nfs-kernel-server:_configurazione_lato_server]]<br/>[[Keyring]]<br/>[[Usare_lcd4linux_con_un_Palm]]<br/>[[Moblock_-_mobloquer]]<br/>[[Installazione_Qemu_con_supporto_accelerazione_Kqemu]]<br/>[[Visualizzare_filmati_YouTube_con_Gnash_e_GreaseMonkey]]<br/>[[UMTS/GPRS_PCMCIA_card_(3g)]]<br/>[[Forzare_il_driver_VESA]]<br/>[[Usare_apt-cacher_per_creare_una_cache_dei_pacchetti_usabile_in_una_LAN]]<br/>[[Samba_OpenLDAP_su_Etch:_Test_e_connessione_al_dominio]]<br/>[[Problemi_hardware]]<br/>[[Installare_un_ambiente_LAMP:_Linux,_Apache2,_SSL,_MySQL,_PHP5]]<br/>[[Debian_su_HP_Compaq_nx6325]]<br/>[[Personalizzare_l%27aspetto_di_Xterm]]<br/>[[Backport_da_unstable_in_testing]]<br/>[[Dpkg-sig:_Firma_dei_packages_.deb]]<br/>[[Zack]]<br/>[[LAMP:_Linux,_Apache,_MySQL_e_PHP]]<br/>[[DLP:_Fromhd]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 5''' </center><br/> [[Apt-zip:_aggiornamenti_senza_una_connessione_veloce]]<br/>[[Realizzare_uno_slideshow]]<br/>[[VirtualBox:_creazione_di_una_rete_virtuale]]<br/>[[Samba_OpenLDAP_su_Etch:_Configurazione_client_LDAP]]<br/>[[KDE4_-_Notifica_degli_aggiornamenti_sulla_systray]]<br/>[[Kernel2.6.10_-_Framebuffer_-_Gensplash_Patch]]<br/>[[Link]]<br/>[[Debian_e_Nokia_7210:_uso_di_gnokii_e_gestione_degli_sms]]<br/>[[Debian_Wheezy-Testing_su_HP_635]]<br/>[[Cos%27%C3%A8_il_Software_libero]]<br/>[[Tips_and_Tricks]]<br/>[[Fare_il_downgrade_di_uno_o_pi%C3%B9_pacchetti]]<br/>[[Configurare_Netfilter_con_Shorewall]]<br/>[[Munin]]<br/>[[Debianizzati_Day_1:_Iscrizioni]]<br/>[[QEMU/KVM]]<br/>[[Installare_Debian:_configurazione_LVM]]<br/>[[Tuxpaint_utilizzo]]<br/>[[DLP:_Perch%C3%A8_Debian_Live]]<br/>[[Implementare_un%27architettura_ridondante_master/slave_OpenLDAP]]<br/>[[Demone]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 6''' </center><br/> [[Personalizzare_il_comportamento_delle_finestre_con_Devil%27s_Pie]]<br/>[[LVM:_Logical_Volume_Manager]]<br/>[[Pagina_principale]]<br/>[[Ricompense_e_Motivazione]]<br/>[[Debianizzati_Day_1]]<br/>[[Pagina_di_manuale_di_module-assistant]]<br/>[[Postfix:_i_file_di_configurazione]]<br/>[[Contrib]]<br/>[[Installare_Debian_su_Acer_travelmate_5742]]<br/>[[Archivi_Debian]]<br/>[[Installazione_Driver_ATI_per_schede_ATI_RADEON_MOBILITY_9700_SE]]<br/>[[Velocizzare_Firefox_per_la_banda_larga]]<br/>[[Installare_una_stampante_Epson_Stylus_D78]]<br/>[[Debianizzati_Day_1:_Comunicato]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_LDAP_Server]]<br/>[[DVD_Backup:_xDVDShrink_per_Debian]]<br/>[[Bash_tips]]<br/>[[Apache,_SSL_e_CaCert.Org]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Interfaccia_grafica_phpldapadmin]]<br/>[[Colorare_bash]]<br/>[[Logging_su_MySQL]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 7''' </center><br/> [[Abilitare_ESound_con_ALSA_in_Gnome]]<br/>[[Come_formulare_quesiti_tecnici_al_forum]]<br/>[[Introduzione_all%27installazione_di_stampanti_bluetooth]]<br/>[[Elenco_programmi_senza_interfaccia_grafica]]<br/>[[Lista_Categorie]]<br/>[[Lm-sensors]]<br/>[[Dive_into_Python]]<br/>[[LVM:_Volume_Group]]<br/>[[Un_kernel_UNIX_libero:_Linux]]<br/>[[Jigdo]]<br/>[[LKN:_Guida_di_Riferimento_delle_Opzioni_di_Configurazione_del_Kernel_-_parte1]]<br/>[[Debconf]]<br/>[[Intel_PRO/Wireless_3945ABG_:_Installazione_dei_moduli_senza_kernel_patching]]<br/>[[Mrtg:_monitoriamo_la_banda]]<br/>[[Guida_ai_comandi_da_terminale]]<br/>[[Postfix:_i_database]]<br/>[[Faq]]<br/>[[DLP:_ISO_Howto_(multiarch)]]<br/>[[Le_fasi_del_boot]]<br/>[[Debian_on_a_HP_Compaq_NX6110]]<br/>[[VirtualBox:_installazione_e_configurazione]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 8''' </center><br/> [[Condividere_file_e_connessione_con_Xbox_360]]<br/>[[Synaptics_touchpad]]<br/>[[GTK_Gnome_Sviluppo_di_applicazioni]]<br/>[[Debian_e_iPod]]<br/>[[DLP:_Il_Team]]<br/>[[Esempio_configurazione_kernel]]<br/>[[Wodim:_masterizzare_da_shell]]<br/>[[Modem_adsl_Fastrate_100_USB]]<br/>[[Netkit:_laboratorio_di_rete_virtuale]]<br/>[[Persone]]<br/>[[Java_in_Debian]]<br/>[[Stampanti_multifunzione]]<br/>[[Wireless_Support]]<br/>[[La_vera_storia_di_Internet]]<br/>[[Samba,_OpenLDAP,_Kerberos:_creare_un_controller_di_dominio_sicuro_con_Debian_Lenny]]<br/>[[Installare_KVM_su_Debian]]<br/>[[Creare_un_Repository_Debian]]<br/>[[Configurare_un_NTP_Time_Server_su_Debian]]<br/>[[Debian:_software_suspend_e_ibernazione_per_laptops]]<br/>[[Apt-cdrom]]<br/>[[GNU/Screen]]<br/> || prenotato da s3v || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 9''' </center><br/> [[La_storia_di_Otto_Sync_e_White_Knight]]<br/>[[Come_montare_cartelle_condivise_da_MS_Windows_su_Debian]]<br/>[[La_libert%C3%A0_ritrovata]]<br/>[[ADMtek_ADM8211:_installazione_e_configurazione]]<br/>[[Canon_Lide_200_-_USB_scanner]]<br/>[[Kernel_2.6_su_Debian_Woody]]<br/>[[Apache_e_Virtual_Hosts:_configurare_Apache2_per_ospitare_pi%C3%B9_siti_web]]<br/>[[LKMPG:_Il_filesystem_/proc]]<br/>[[Postfix-mysql]]<br/>[[Samba_OpenLDAP_su_Etch:_Intro]]<br/>[[Intel_PRO/Wireless_5100_ABN:_installazione_e_configurazione]]<br/>[[Modem_Alice_Mobile_Onda_MT503HSA:_installazione_e_configurazione]]<br/>[[Pulire_Debian]]<br/>[[VanBasco]]<br/>[[Gnome_Tips_and_Tricks]]<br/>[[Debian:_guida_rapida_alla_configurazione_di_Samba]]<br/>[[Template]]<br/>[[Proxy_Server_con_filtraggio_dei_contenuti_della_navigazione]]<br/>[[Postmaster]]<br/>[[Installare_un_Media_Server_per_lo_streaming_della_musica]]<br/>[[Ethernet_Bonding:_come_garantire_ridondanza_e/o_massimizzare_la_banda_disponibile]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 10''' </center><br/> [[Intel_PRO/Wireless_2200BG]]<br/>[[Nfs-kernel-server_V2-V3]]<br/>[[APT]]<br/>[[Server_mail:_Postfix_MailScanner_Dovecot_e_MySql]]<br/>[[Debian_%26_Xfce]]<br/>[[LUKS_gestione_manuale_dei_volumi:_cryptsetup]]<br/>[[Ifplugd:_connessione_automatica]]<br/>[[Installare_Debian_con_Raid1_software_e_LVM]]<br/>[[Il_repository_DotDeb]]<br/>[[Notebook:_far_funzionare_i_caratteri_ALT-GR]]<br/>[[Collabora]]<br/>[[Italian_Crackdown]]<br/>[[Come_abilitare_il_completamento_automatico_%27avanzato%27]]<br/>[[MAME_e_MESS]]<br/>[[Introduzione_al_pinning]]<br/>[[Installare_stampanti_con_porta_USB_utilizzando_CUPS]]<br/>[[Postfix:_installazione,_configurazione,_trucchi]]<br/>[[Creare_DVD_Cover_con_GLabels]]<br/>[[Kde_e_mount_automatico]]<br/>[[LKMPG:_Rimpiazzare_printk]]<br/>[[Fail2ban]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 11''' </center><br/> [[Debmirror:_creiamo_un_mirror_Debian]]<br/>[[Recovery_di_un_sistema_Debian_attraverso_chroot]]<br/>[[Runlevel]]<br/>[[Pid_file]]<br/>[[Free_software,_opensource,_freeware]]<br/>[[Popcon]]<br/>[[Bootchart]]<br/>[[Spam]]<br/>[[Disabilitare_temporaneamente_il_touchpad]]<br/>[[Installazione_e_configurazione_di_Apache,_PHP_e_Oracle]]<br/>[[Ethernet_Bridging]]<br/>[[VimCS:_Varie]]<br/>[[Impedire_attacchi_SSH_brute-force_con_Denyhosts]]<br/>[[Il_vostro_motore_di_ricerca_da_Firefox]]<br/>[[Configurare_il_server_X_in_Debian_GNU/Linux]]<br/>[[Hdparm]]<br/>[[SysV]]<br/>[[Server_mail:_Postfix_Amavisd-new_Dovecot_e_MySql]]<br/>[[Kernel_config_per_HP_Compaq_NX_6110_2.6.16]]<br/>[[Installare_Memcached_in_un_server_Apache2]]<br/>[[Contratto_sociale]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 12''' </center><br/> [[Come_effettuare_una_connessione_remota_SSH_da_Windows_a_Linux]]<br/>[[TestElencoPagine]]<br/>[[Internet_Service_Provider_con_Debian]]<br/>[[Debian_Fun]]<br/>[[Debian_on_a_IBM_ThinkPad_T42_2373_CS8]]<br/>[[Privoxy:_navigazione_sicura_a_prova_di_spam]]<br/>[[Debian_on_an_HP_nx8220]]<br/>[[SAMBA:_configurazione_lato_client]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Comandi_Utili]]<br/>[[Debian_on_a_Toshiba_Satellite_M30X-113]]<br/>[[Mail_Server]]<br/>[[Debian_on_a_ACER_Aspire_1450]]<br/>[[Alias]]<br/>[[Proxy]]<br/>[[Samba_OpenLDAP_su_Etch:_script_login_di_Windows]]<br/>[[MediaMorfosi]]<br/>[[Mustek_1200_Ub_Plus_-_USB_scanner]]<br/>[[APT:_Errori_(non_cos%C3%AC)_frequenti]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Autenticazione_LDAP]]<br/>[[DFSG]]<br/>[[Cowsay,_la_mucca_che_ci_parla_dal_terminale]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 13''' </center><br/> [[Script_Bash_abilitazione_scheda_wireless]]<br/>[[Samba:_guida_estesa]]<br/>[[Filesystem:_i_permessi_sui_files]]<br/>[[Samba]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Configurazioni_Preliminari]]<br/>[[LKN:_Programmi_Utili]]<br/>[[Host]]<br/>[[Samba_OpenLDAP_su_Etch:_Backup_e_restore_database_LDAP]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Intro]]<br/>[[DLP:_mbr]]<br/>[[Some_Rights_Reserved]]<br/>[[Installare_e_configurare_i_codec_per_DVD_e_Mp3]]<br/>[[Logs:_visualizziamoli_in_una_console]]<br/>[[Collegare_il_proprio_Nokia_via_USB]]<br/>[[LKN:_Configurare_e_Compilare]]<br/>[[Installare_Debian_da_pendrive_USB_o_SSD_card]]<br/>[[Iproute2]]<br/>[[URI]]<br/>[[DLP:_ISO_per_multimedia_Howto]]<br/>[[Testing]]<br/>[[Nfs-kernel-server:_condividere_risorse_tra_macchine_GNU/Linux]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 14''' </center><br/> [[Tmpreaper:_pulire_le_directory_contenenti_file_temporanei]]<br/>[[VPN_Client_con_Network_Manager]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Samba_PDC]]<br/>[[Il_repository_Backports]]<br/>[[LKN:_Ricette_per_Configurare_il_Kernel]]<br/>[[Scheda_Tv_WinFast_TV2000_XP_Pro_RM]]<br/>[[Virtualizzazione_basata_su_container:_OpenVZ]]<br/>[[Root]]<br/>[[Manifesto_del_Pubblico_Dominio]]<br/>[[Guida_alla_formattazione_dei_dischi_con_fdisk]]<br/>[[Nagios:_monitorare_server_e_servizi]]<br/>[[Debuctio]]<br/>[[Condivisione_risorse_con_Samba]]<br/>[[LKN:_Guida_di_Riferimento_dei_Parametri_di_Compilazione_del_Kernel]]<br/>[[Installare_Adobe_Flash_Player]]<br/>[[Iceweasel_%26_Icedove:_i_profili]]<br/>[[Kernel_config_per_HP_Compaq_NX_6110]]<br/>[[Mai_pi%C3%B9_senza_backup]]<br/>[[Debianized]]<br/>[[Driver_ATI_Radeon_Open]]<br/>[[Internet_Key_Huawei_E173s_7.2Mb]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 15''' </center><br/> [[Manovrare_X_da_remoto]]<br/>[[Backport]]<br/>[[Regolamento_della_chat]]<br/>[[E-banking:_quando_il_servizio_non_%C3%A8_accessibile]]<br/>[[Firewall_Builder]]<br/>[[File_System]]<br/>[[Monitorare_molteplici_files_di_log_da_terminale]]<br/>[[Installare_Emerald_Window_Decorator_su_Debian]]<br/>[[La_Cattedrale_e_il_Bazaar]]<br/>[[Attivare_l%27audio_in_Gnome]]<br/>[[Attivare_le_quote_su_un_filesystem]]<br/>[[Il_calderone_magico]]<br/>[[Postfix_e_autenticazione_su_smtp_remoto]]<br/>[[Debian_e_i_Modem_ADSL]]<br/>[[Web-interface]]<br/>[[Configurazione_di_una_connessione_wireless]]<br/>[[Layer7_filter_Kernel-space:_droppare_protocolli_p2p_con_iptables]]<br/>[[Debian_Lenny_su_ASUS_eeePC_900A]]<br/>[[Guake]]<br/>[[Servizio]]<br/>[[Installare_un_server_SNMP]]<br/> || prenotato da s3v || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 16''' </center><br/> [[Configurare_Zabbix_su_Debian]]<br/>[[Impostare_manualmente_velocit%C3%A0_e_duplex_di_una_scheda_di_rete]]<br/>[[Scrivere_su_filesystem_NTFS]]<br/>[[Downtime]]<br/>[[Etica_hacker]]<br/>[[Hddtemp]]<br/>[[Manuale_Debian4Children]]<br/>[[DebianLive_su_usb_installabile]]<br/>[[Script]]<br/>[[Installazione_Tomcat]]<br/>[[Impedire_l%27avvio_automatico_del_Desktop_Manager]]<br/>[[Installare_Debian:_configurazione_RAID]]<br/>[[Openvpn]]<br/>[[Installare_i_driver_eagle-adsl]]<br/>[[Open_Sources]]<br/>[[Debian_Swirl]]<br/>[[Configurare_un_client_IRC_per_collegarsi_al_canale_debianizzati]]<br/>[[Connessioni_SSH_attraverso_un_proxy_HTTP]]<br/>[[Reportbug]]<br/>[[Creare_un_Access_Point_con_Debian]]<br/>[[Impostare_e_modificare_data_e_ora]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 17''' </center><br/> [[Intervista_al_Prof._Cantaro]]<br/>[[Ottimizzare_la_banda_di_Apache]]<br/>[[Apt-file:_ricerca_all%27interno_dei_pacchetti]]<br/>[[Superkaramba_notebook]]<br/>[[Linux_Admin_Quick_Reference]]<br/>[[Installare_una_SSL_VPN_con_SSL_Explorer]]<br/>[[Midnight_Commander]]<br/>[[Superkaramba_desktop]]<br/>[[Crittografia_portami_via]]<br/>[[Boot_manager]]<br/>[[Irssi,_chattare_da_terminale]]<br/>[[Samba_OpenLDAP_su_Etch:_Configurazione_LDAP]]<br/>[[Samba:_guida_rapida]]<br/>[[Software_Raid_1:_configurazione_e_verifiche]]<br/>[[Inode]]<br/>[[LKMPG:_Appendice_B]]<br/>[[Cpufreqd:_Un_demone_per_il_cpu_frequency_scaling]]<br/>[[Configurare_un_server_Syslog_su_Debian_Squeeze]]<br/>[[Installare_Debian_su_un_RAID1_software]]<br/>[[Xfce_e_shutdown_da_utente]]<br/>[[Razor]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 18''' </center><br/> [[SAMBA:_possibili_problemi]]<br/>[[IP_fissi]]<br/>[[Debian_server_tramite_preseed]]<br/>[[Installare_Skype_su_Debian]]<br/>[[Repository]]<br/>[[VirtualBox:_amministrazione_da_interfaccia_grafica]]<br/>[[Rsync_e_Grsync]]<br/>[[UpHosts]]<br/>[[LVM:_Esempi]]<br/>[[Antispam_in_Evolution_con_Bogofilter]]<br/>[[Zarafa:_un_sostituto_opensource_per_Microsoft_Exchange]]<br/>[[Thumbnail_in_Thunar]]<br/>[[Repository_%26_pinning]]<br/>[[Abilitare_Xinerama]]<br/>[[Intervista_a_Steve_McIntyre]]<br/>[[Realizzazione_di_un_Desktop_Environment_su_misura]]<br/>[[Installazione_driver_proprietari_Ati]]<br/>[[FQDN]]<br/>[[Configurare_un_gateway_con_proxy_server_e_filtro_dei_contenuti_web]]<br/>[[Dell_Inspiron_9400_Lenny]]<br/>[[DLP:_ISO_Howto]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 19''' </center><br/> [[Dipendenze]]<br/>[[Installare_VMWare_Server_su_Debian_Etch]]<br/>[[Umorismo_informatico]]<br/>[[Integrit:_file_verification_system]]<br/>[[Swap]]<br/>[[Squeeze,_installer_di_default]]<br/>[[Le_bozze_di_risca]]<br/>[[Script_di_avvio]]<br/>[[DLP:_Linee_guida]]<br/>[[Rimasterizzare_una_knoppix]]<br/>[[Autenticazione_degli_accessi_Wireless_tramite_server_Radius]]<br/>[[Blacklist]]<br/>[[Lista_Hardware]]<br/>[[Virtualizzazione_-_user_mode_linux]]<br/>[[Localizzare_uno_script_bash]]<br/>[[LKN:_Guida_di_Riferimento_dei_Parametri_di_Boot_del_Kernel_-_parte2]]<br/>[[LVM:_comandi_utili]]<br/>[[Migrazione_Debianizzati.org_-_Segnalazioni_e_suggerimenti]]<br/>[[VimCS:_Configurazione]]<br/>[[Main]]<br/>[[Postgrey:_filtrare_lo_spam_con_il_greylisting]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 20''' </center><br/> [[PCMCIA_WiFi_UPspeed_(chipset_Marvell)_su_Debian_Sarge_on_Thinkpad_T20]]<br/>[[Il_Progetto_GNU]]<br/>[[LKMPG:_I_gestori_degli_interrupt]]<br/>[[SSH_sicuro]]<br/>[[Controller_RAID_LSI_Fusion-MPT_SAS:_installazione_e_monitoraggio_dei_dischi]]<br/>[[Nfs-kernel-server:_configurazione_lato_client]]<br/>[[Cacti]]<br/>[[Intel_PRO/Wireless_3945,_3945ABG_e_4965:_installazione_e_configurazione]]<br/>[[LKN:_Guida_di_Riferimento_dei_Parametri_di_Boot_del_Kernel_-_parte1]]<br/>[[Abilitare_AIGLX_con_Compiz_on_Debian_testing]]<br/>[[Modificare_i_cursori_di_X]]<br/>[[Compilazione_del_Kernel_Linux]]<br/>[[Gestione_di_un_repository_con_debarchiver]]<br/>[[Clustering_con_PVM]]<br/>[[Manuale_Debian4Children_Utilizzo]]<br/>[[Installazione_driver_proprietari_Nvidia]]<br/>[[Indice_Guide]]<br/>[[Inetd_e_i_servizi_di_rete]]<br/>[[Applicare_una_patch_ad_un_pacchetto_Debian]]<br/>[[Software_Libero_e_Manuali_Liberi]]<br/>[[Unstable]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 21''' </center><br/> [[Annunci:Nascita_Guide@Debianizzati]]<br/>[[Squeeze,_installer_CD/DVD]]<br/>[[DLP:_Casper]]<br/>[[Buildd]]<br/>[[UMTS/GPRS:_Internet_col_cellulare]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Popolamento_ldap]]<br/>[[DLP:_Tips]]<br/>[[LKMPG:_Chiamate_di_sistema]]<br/>[[Schede_Wireless_con_driver_ACX100_/_ACX111]]<br/>[[Madwifi]]<br/>[[Switchconf]]<br/>[[Debian_e_il_controllo_di_servizi_e_demoni]]<br/>[[Modulare_il_funzionamento_di_una_CPU]]<br/>[[LKMPG:_Prefazione]]<br/>[[Autorit%C3%A0_di_certificazione_locale]]<br/>[[Installare_hamachi_su_debian_lenny_x86_x64_come_server_e_client]]<br/>[[Old_Stable]]<br/>[[Nokia_N70]]<br/>[[Directory_shared_tra_macchine_linux_(nfs)]]<br/>[[Hardening_di_un_web_server_Apache]]<br/>[[Immagini_iso_Debian_da_usare_come_repository]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 22''' </center><br/> [[DLP:_Download]]<br/>[[AAA_Accessibilit%C3%A0_Cercasi]]<br/>[[Acronimo_ricorsivo]]<br/>[[Cinnamon_su_Debian]]<br/>[[Vivere_l%27Emacs]]<br/>[[Impostare_e_modificare_il_layout_della_tastiera]]<br/>[[Debian_con_Enlightenment_17]]<br/>[[Wajig]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Aggiungere_gli_utenti_di_dominio]]<br/>[[Owner]]<br/>[[Un_server_DNS_e_DHCP_su_Debian]]<br/>[[Wg111v2_con_ndiswrapper_e_crittografia_WPA]]<br/>[[Installiamo_Ruby_On_Rails_su_Debian]]<br/>[[VimCS:_Editing]]<br/>[[Aggiungere_uno_sfondo_a_Grub]]<br/>[[Pacchetti_binari_e_sorgenti]]<br/>[[Debian_Live_Project]]<br/>[[LKMPG:_Pianificare_compiti]]<br/>[[Apt-zip]]<br/>[[Mail_criptate_e/o_firmate_con_standard_OpenPGP_usando_Icedove/Thunderbird_ed_Enigmail]]<br/>[[Udev_e_Debian]]<br/> || prenotato da s3v || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 23''' </center><br/> [[Test]]<br/>[[Samba_OpenLDAP_su_Etch:_Configurazione_autenticazioni_UNIX]]<br/>[[LVM:_Logical_Volume]]<br/>[[Remastersys]]<br/>[[Http]]<br/>[[Introduzione_all%27installazione_di_stampanti_con_porta_parallela]]<br/>[[Release]]<br/>[[Samba_OpenLDAP_su_Etch:_Installazione_Samba]]<br/>[[ClamAV:_scansione_antivirus_delle_condivisioni_samba]]<br/>[[Eye_toy]]<br/>[[Creare_una_partizione_criptata_nello_standard_LUKS]]<br/>[[Lista_Hardware_Template]]<br/>[[MBR]]<br/>[[SSH]]<br/>[[LKN:_Guida_di_Riferimento_delle_Opzioni_di_Configurazione_del_Kernel_-_parte2]]<br/>[[Debian_e_lettori_mp3_Creative]]<br/>[[Tabella_delle_risoluzioni_VGA]]<br/>[[Samba_OpenLDAP_su_Etch:_Installazione_LDAP]]<br/>[[RAID:_Redundant_Array_of_Indipendent_Disks]]<br/>[[Introduzione_alla_crittografia]]<br/>[[LKN:_Aggiornare_il_Kernel]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 24''' </center><br/> [[Dual_Boot_Debian-Altra_distribuzione_Linux]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Approfondimenti]]<br/>[[Aptoncd]]<br/>[[Installare_Debian_SID]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Debian_Squeeze]]<br/>[[Configurare_Ruby_On_Rails_un_su_server_web_di_produzione]]<br/>[[Installare_OpenOffice2_su_Debian_Etch]]<br/>[[APT:_Advanced_Packaging_Tool]]<br/>[[LKMPG:_Insidie_comuni]]<br/>[[Associare_un_pulsante_ad_un%27azione:_Hotkeys]]<br/>[[Debian_trip]]<br/>[[Forzare_la_risoluzione_video_della_shell_con_KMS]]<br/>[[Debianizzati_Audio_%26_Midi_GNU/Linux_Faq]]<br/>[[Tabella_Software]]<br/>[[Migliorare_i_font_in_Firefox]]<br/>[[La_nascita_di_Debian]]<br/>[[Abilitare_i_suoni_di_sistema_su_Gnome]]<br/>[[Chat]]<br/>[[LKMPG:_Ciao_Mondo]]<br/>[[Guida_all%27installazione_di_Debian_su_Fujitsu-Siemens_Amilo_l6825]]<br/>[[Ssh_e_autenticazione_tramite_chiavi]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 25''' </center><br/> [[Bamboo_pen_CTL-460]]<br/>[[Tuxpaint]]<br/>[[Pacchettizzazione]]<br/>[[Openbox]]<br/>[[Grub2:_riconoscere_altri_sistemi_operativi_installati]]<br/>[[Debian_Kernel_Howto]]<br/>[[Ricerca_Google_da_terminale]]<br/>[[Disabilitare_IPv6]]<br/>[[Installare_Virtualbox_su_un_server_Debian_senza_X]]<br/>[[Samba_OpenLDAP_su_Etch:_Unire_un_server_Samba_al_domino]]<br/>[[Apt-spy:_trovare_i_mirror_pi%C3%B9_veloci]]<br/>[[Guida_a_Grub]]<br/>[[Dupload_per_l%27upload_dei_pacchetti_Debian]]<br/>[[Debian_on_an_HP_pavilion_zv5422EA]]<br/>[[Apt-build:_ottimizzazione_dei_pacchetti]]<br/>[[Postfix:_funzionamento]]<br/>[[Utilizzo_del_servizio_di_scheduling_Cron]]<br/>[[LKN:_Guida_di_Riferimento_dei_Parametri_di_Boot_del_Kernel]]<br/>[[Squeeze,_installer_grafico]]<br/>[[Tripwire]]<br/>[[Migliorare_l%27aspetto_dei_font]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 26''' </center><br/> [[Mail_Server_Sicuro_con_Postfix]]<br/>[[Il_futuro_della_Legge_di_Moore]]<br/>[[Canon_Lide_100_-_USB_scanner]]<br/>[[Repository_speciali]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Testare_la_rete]]<br/>[[Avidemux_convertire_DV_to_mpeg]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio]]<br/>[[Lexmark_z640]]<br/>[[Impostare_un_firewall_con_uno_script_iptables]]<br/>[[Synaptic]]<br/>[[Cattura_stream_RTMP]]<br/>[[Mailserver_con_Exim,_Mutt_e_Dovecot]]<br/>[[Server_per_il_P2P_con_Debian]]<br/>[[La_vendetta_degli_hacker]]<br/>[[Vim_Cheat_Sheet]]<br/>[[Unison_e_la_sincronizzazione_di_directory]]<br/>[[Carta_Nazionale/Regionale_dei_Servizi]]<br/>[[Firefox:_Disattivare_la_ricerca_con_il_tasto_centrale]]<br/>[[Installare_Debian_Lenny_-_Guida_Grafica]]<br/>[[Telematica_per_la_pace]]<br/>[[Aggiornare_il_BIOS_senza_windows]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 27''' </center><br/> [[Debian_e_iptables]]<br/>[[VirtualBox:_approfondimenti]]<br/>[[Debian_GNU/kFreeBSD]]<br/>[[Debian_Tips%26T]]<br/>[[E-zine]]<br/>[[VirtualBox:_amministrazione_da_terminale]]<br/>[[LVM:_funzionamento]]<br/>[[EPSXe_Emulatore_Playstation]]<br/>[[Recuperare_i_dati_da_un_Hard_Disk_danneggiato]]<br/>[[Introduzione_all%27_Apt_System]]<br/>[[Ergonomia]]<br/>[[Routing]]<br/>[[Due_simpatici_login:_welcome2l_e_linuxlogo]]<br/>[[Vodafone_Internet_Key_Huawei_K4510]]<br/>[[LVM:_mirror]]<br/>[[Apt-Proxy:_un_proxy_per_i_pacchetti_Debian]]<br/>[[Samba:_creare_un_cestino_di_rete_per_le_condivisioni]]<br/>[[Compilazione_Kernel_2.6.11_con_Bootsplash]]<br/>[[Aggiornare_da_Etch_a_Lenny]]<br/>[[Messaggio_del_giorno]]<br/>[[OpenSSH:_configurazione_di_base]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 28''' </center><br/> [[Il_repository_LinuxMint]]<br/>[[Security]]<br/>[[Make-jpkg:_Pacchettiziamo_Java_Sun]]<br/>[[Free_as_in_Freedom]]<br/>[[Gestire_gli_HD:_stato_di_salute,_badblocks_e_ripristino_dati]]<br/>[[Guida_alla_configurazione_di_Xorg]]<br/>[[La_mia_prima_settimana_con_Debian]]<br/>[[Installare_Debian]]<br/>[[LKMPG:_Bloccare_i_processi]]<br/>[[Installazione_Debian:_pagine_utili]]<br/>[[Mountpoint]]<br/>[[Emule-morph]]<br/>[[Apt-show-versions]]<br/>[[The_Linux_Kernel_Module_Programming_Guide]]<br/>[[Far_funzionare_ClipGrab_su_Debian:_ricostruzione_del_pacchetto]]<br/>[[NdisWrapper]]<br/>[[Samba_OpenLDAP_su_Etch:_Configurazione_Samba]]<br/>[[Intervista_a_MaXer]]<br/>[[Progetto_Accademia_Debianizzati]]<br/>[[FFmpeg]]<br/>[[Aggiungere_un_motore_di_ricerca_al_quicksearch_di_Firefox]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 29''' </center><br/> [[DNS]]<br/>[[AMule]]<br/>[[Impostare_l%27editor_predefinito_della_shell]]<br/>[[Python_e_Vim]]<br/>[[VimCS:_Gestione]]<br/>[[Installare_Debian_da_hard_disk]]<br/>[[La_comunit%C3%A0_del_software_libero_dopo_20_anni]]<br/>[[LVM:_snapshot]]<br/>[[Debian_MapServer/MapScript]]<br/>[[Repository_non_ufficiali]]<br/>[[Il_repository_di_Google]]<br/>[[Metapacchetto]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Smbldap-tools]]<br/>[[Whitelist]]<br/>[[Volumi_criptati_LUKS_-_Creazione_e_uso_con_cryptmount]]<br/>[[Convertire_immagini_.nrg_in_immagini_.iso]]<br/>[[Lintian]]<br/>[[Quattro_passi_nel_futuro]]<br/>[[Anonimato_in_rete_-_Tor]]<br/>[[Configurare_la_scheda_audio]]<br/>[[Smart_Boot_Manager_(SBM):_avviare_differenti_SO]]<br/> || prenotato da s3v || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 30''' </center><br/> [[Server_mail_base:_Postfix_Dovecot_e_MySql]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Implementazioni]]<br/>[[Modificare_i_colori_in_Midnight_Commander]]<br/>[[Usare_i_Template]]<br/>[[Informatica_e_Pubblica_Amministrazione]]<br/>[[Revisione]]<br/>[[System_Monitor]]<br/>[[Amministrazione_grafica_delle_%22Alternatives%22]]<br/>[[Repository_Debianizzati.Org]]<br/>[[DNS_dinamici:_come_ottenerli_e_configurarli]]<br/>[[APT_uso_avanzato:_mixare_releases_diverse]]<br/>[[Xrandr_e_udev:_configurare_un_monitor_esterno_in_automatico]]<br/>[[Low-latency_2.6_kernel_per_applicazioni_audio_realtime]]<br/>[[Eseguire_comandi_con_gli_shortcuts_di_Gnome]]<br/>[[Equivs_per_Texlive_2010]]<br/>[[MongoDB]]<br/>[[Installare_un_server_FTP_con_utenti_virtuali_su_MySQL]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_NT4_con_Debian_Wheezy]]<br/>[[Cambiare_i_permessi_ricorsivamente]]<br/>[[Epson_Perfection_2480_photo_-_USB_scanner]]<br/>[[Controllare_lo_stato_di_un_pacchetto]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 31''' </center><br/> [[Modem_Smart_Link]]<br/>[[Modem_adsl_Telindus_ND220]]<br/>[[Installazione_di_PostgreSQL_in_Debian]]<br/>[[FHS]]<br/>[[Installare_Compiz_su_Debian]]<br/>[[LKN:_Introduzione]]<br/>[[Produzione_musicale]]<br/>[[Pyzor]]<br/>[[Logrotate:_configurare_la_rotazione_automatica_dei_log]]<br/>[[LVM:_esempi]]<br/>[[Kernel_vanilla]]<br/>[[Revisione_Wiki]]<br/>[[Installare_i_driver_conexant_accessrunner]]<br/>[[Come_diventare_un_hacker]]<br/>[[Cambiare_il_Tema_dei_Cursori_per_il_Mouse]]<br/>[[DLP:_FAQ]]<br/>[[Chiavi_simmetriche_e_chiavi_pubbliche]]<br/>[[Un_semplice_Wiki_con_DokuWiki]]<br/>[[Monitorare_l%27attivit%C3%A0_ARP_con_Arpwatch]]<br/>[[Aptitude]]<br/>[[Tasti_Multimediali:_configurazione_ed_uso]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 32''' </center><br/> [[Montare_in_automatico_drive_USB_NTFS_con_Hal_e_Ntfs-3g]]<br/>[[Nfs-kernel-server:_approfondimenti]]<br/>[[Non-free]]<br/>[[Lista_Risorse_Compatibilt%C3%A0_Hardware]]<br/>[[Postfix:_ricezione_e-mail]]<br/>[[OpenMosix]]<br/>[[Wiimote]]<br/>[[DLP:_Installer]]<br/>[[Raismth_3]]<br/>[[Clonezilla_(Debian_derived)]]<br/>[[Ripristinare_Grub2_dopo_l%27installazione_di_un_altro_sistema_operativo]]<br/>[[Impostare_la_lingua_italiana_nel_sistema]]<br/>[[LKMPG:_Comportamento_dei_driver_dei_device]]<br/>[[Forked-daapd]]<br/>[[Broadcom_BCM43xx:_installazione_e_configurazione]]<br/>[[Cron]]<br/>[[Netiquette_e_Regole]]<br/>[[Atheros_AR5210,_AR5211,_AR5212,_AR5213,_AR5414,_AR2413,_AR242x]]<br/>[[Controllare_l%27integrit%C3%A0_delle_immagini_Debian]]<br/>[[Vendere_Software_Libero]]<br/>[[Boot_loader]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 33''' </center><br/> [[I_repository_ed_il_loro_utilizzo]]<br/>[[Contribuire_a_Debian]]<br/>[[Registrare_i_log_di_Iptables_in_MySQL]]<br/>[[Ottimizzare_le_performances_di_MySQL]]<br/>[[Gestire_automaticamente_configurazioni_wifi_multiple]]<br/>[[LVM:_problematiche_di_boot]]<br/>[[Apache2:_proteggere_directory_mediante_autenticazione]]<br/>[[Creare_uno_script_d%27avvio]]<br/>[[Configurare_Apache_in_un_ambiente_Chroot]]<br/>[[Manuale_Debian4Children_Installazione]]<br/>[[SheevaPlug]]<br/>[[LKMPG:_Multi-processing_simmetrico]]<br/>[[SAMBA:_approfondimenti]]<br/>[[ACPI_e_DSDT]]<br/>[[Debian_e_sintesi_vocale:_installazione_di_festival_e_mbrola]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_Active_Directory_con_Debian_Wheezy]]<br/>[[NFS:_Networking_FileSystem_tramite_nfs-user-server]]<br/>[[Installare_Debian_su_Acer_travelmate_57425742-464G50Mnss]]<br/>[[Associare_ad_Icedove_il_browser_preferito]]<br/>[[BIOS]]<br/>[[SAMBA:_configurazione_lato_server]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 34''' </center><br/> [[Ascoltare_i_MIDI_in_Linux]]<br/>[[LKMPG:_Appendice_A]]<br/>[[Gestione_e_creazione_di_servizi_in_Debian]]<br/>[[Cows]]<br/>[[Samba_OpenLDAP_su_Etch:_Interfacce_web_alternative_per_OpenLDAP]]<br/>[[Crittografia_e_Steganografia_-_L%27Arte_di_nascondere_le_informazioni]]<br/>[[Adozione_Guide]]<br/>[[LKN:_Personalizzare_un_Kernel]]<br/>[[Sandbox]]<br/>[[Apt-listbugs:_come_monitorare_i_bug]]<br/>[[Repository_ufficiali]]<br/>[[Configurare_un_server_Syslog_su_Debian]]<br/>[[LKN:_Installare_ed_Avviare_con_un_Kernel]]<br/>[[Bootchart2]]<br/>[[Changelog]]<br/>[[Rileggere_la_tabella_delle_partizioni]]<br/>[[Anacron]]<br/>[[Sshfs]]<br/>[[Rfkill_-_RF_kill_switch_support:_interfaccia_generica_di_gestione_attivazione/disabilitazione_schede_wireless]]<br/>[[Indice_Guide-test]]<br/>[[Gestione_della_banda_in_Apache]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 35''' </center><br/> [[XGL_e_Beryl_su_KDE_con_schede_ATI]]<br/>[[L%27_Universo_Debian]]<br/>[[Ekiga:_installazione_e_configurazione]]<br/>[[Cos%27%C3%A8_Debianizzati.Org]]<br/>[[Il_Governo_elettronico]]<br/>[[Installare_e_configurare_MediaWiki]]<br/>[[Gestione_dei_metapacchetti]]<br/>[[Dual_Boot_Linux-Windows]]<br/>[[Strumenti_per_monitorare_le_performance]]<br/>[[Utilizzare_un_file_come_swap]]<br/>[[Upstream_Author]]<br/>[[Colorare_il_boot_di_Debian]]<br/>[[Stable]]<br/>[[Installare_il_browser_Opera]]<br/>[[Debian-way]]<br/>[[Creare_una_rete_virtuale_con_Virtualbox]]<br/>[[Intel_PRO/Wireless_2100,_2200_e_2915:_installazione_e_configurazione]]<br/>[[Server_Web_Casalingo]]<br/>[[Patch]]<br/>[[Ken_Burns]]<br/>[[Debian_su_android]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 36''' </center><br/> [[X_Display]]<br/>[[DebianLive_multi-distro]]<br/>[[Installare_un_server_FTP]]<br/>[[Correggere_la_risoluzione_di_GDM]]<br/>[[NAT_con_iptables]]<br/>[[SAMBA:_esempi]]<br/>[[Un_logout_con_schermo_pulito]]<br/>[[Nexenta]]<br/>[[Codice_Libero]]<br/>[[Modem_adsl_Aethra_Starmodem]]<br/>[[Guida_a_GRUB_2]]<br/>[[Debian_on_a_compaq_Presario_2154EA]]<br/>[[Transmission]]<br/>[[Truecrypt%C2%AE_-_Installazione_per_Debian]]<br/>[[Alternatives]]<br/>[[Wake_On_Lan]]<br/>[[Debian_su_server_HP_Proliant:_installazione_del_software_HP]]<br/>[[Appunti_di_Informatica_Libera]]<br/>[[Sudo]]<br/>[[Colonizzare_la_noosfera]]<br/>[[Parametri_a_run-time_per_Netfilter]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 37''' </center><br/> [[Accedere_alle_condivisioni_Samba_dal_browser]]<br/>[[Monitorare_la_nostra_rete_con_ntop]]<br/>[[Monitorare_il_traffico_sulle_interfacce_di_rete]]<br/>[[Usare_approx_per_creare_una_cache_dei_pacchetti_usabile_in_una_LAN]]<br/>[[SSHFS:_montare_una_risorsa_remota_sfruttando_FUSE_ed_SSH]]<br/>[[Transmission_su_server]]<br/>[[LKN:_Guida_di_Riferimento_delle_Opzioni_di_Configurazione_del_Kernel]]<br/>[[Museo_dei_ricordi_Debian]]<br/>[[Pbuilder:_compilazione_in_ambienti_puliti]]<br/>[[LVM:_Physical_Device]]<br/>[[Backup_di_MySQL_tramite_script]]<br/>[[Guida_a_vim]]<br/>[[Script:_Confronto_Configurazioni_Kernel]]<br/>[[Condividere_la_connessione_a_internet]]<br/>[[Impedire_l%27aggiornamento_di_un_pacchetto]]<br/>[[Creare_immagini_iso_dei_repository_Debian]]<br/>[[Webmin:_amministrare_Debian_via_web]]<br/>[[Debian_come_server_VPN]]<br/>[[Current_events]]<br/>[[Elenco_laptop_debianizzati]]<br/>[[Lista_e-zine]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 38''' </center><br/> [[Sfogliare_la_rete_in_Thunar_con_fusesmb]]<br/>[[Debian:_accelerare_GTK_con_Cairo_e_Glitz]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Debian_Etch]]<br/>[[Ajaxterm:_utilizzare_SSH_via_web]]<br/>[[La_struttura_della_Distribuzione]]<br/>[[Path]]<br/>[[Utilizzare_Webalizer_per_avere_le_statistiche_di_Apache]]<br/>[[Trust_240TH_Direct_Webscan_Gold_-_USB_scanner]]<br/>[[Tuxpaint_configurazione]]<br/>[[Intel_945GM-_GMA_4500MHD_-_Intel_Mobile_4_Series]]<br/>[[Breve_storia_del_regno_degli_hacker]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_Configurare_Client_Linux]]<br/>[[Firefox_Tips_and_tricks]]<br/>[[LVM:_installare_Debian_in_LVM]]<br/>[[Software_Libero]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Debian_Wheezy]]<br/>[[Damn_Small_Linux_su_chiavetta_usb]]<br/>[[La_guida_completa_a_Postfix]]<br/>[[Maintainer]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Debian_Lenny]]<br/>[[LKN:_Bibliografia]]<br/> || fermo || <br />
|- style="background:#f6c7cd"<br />
| <center> '''BLOCCO 39''' </center><br/> [[Navigazione_veloce_tra_directory:_pushd,_popd_e_dirs]]<br/>[[Il_repository_di_HWraid]]<br/>[[Monitoriamo_il_Sistema]]<br/>[[Fluxbox,_un_Window_Manager_per_Computer_con_poche_risorse]]<br/>[[LKMPG:_Fasi_preliminari]]<br/>[[Samba_e_OpenLDAP:_creare_un_controller_di_dominio_con_Ubuntu_Server_TLS_e_SSL]]<br/>[[LVM:_sitografia]]<br/>[[Desktop_Search_su_Debian_Etch:_Installare_Tracker]]<br/>[[Cultura_libera._Un_equilibrio_fra_anarchia_e_controllo,_contro_l%27estremismo_della_propriet%C3%A0_intellettuale]]<br/>[[LKMPG:_Usare_/proc_per_l%27input]]<br/>[[LKN:_Procurarsi_i_Sorgenti_del_Kernel]]<br/>[[Mirror]]<br/>[[Configurare_MySQL_per_accettare_connessioni_remote]]<br/> || fermo || <br />
|}</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Editing&diff=29974VimCS: Editing2012-10-02T17:06:39Z<p>Skizzhg: special K :)</p>
<hr />
<div>{{Template:VimCS}}<br />
== Sostituzione ==<br />
entra in modalità sostituzione - '''R''' <br/><br />
sostituisce singolo carattere e torna in modalità comando - '''r''' (seguito dal carattere)<br />
<br />
maiuscole in minuscole e viceversa - '''~''' <br/><br />
tutta la riga minuscola - '''guu''' (oppure '''vu''') <br/><br />
solo una parola minuscola - '''vEu''' <br/><br />
tutta la riga maiuscola - '''gUU''' (oppure '''VU''') <br/><br />
solo una parola maiuscola - '''vEU''' <br/><br />
inverte maiuscole e minuscole di una parola - '''vE~''' <br/><br />
inverte maiuscole e minuscole di una riga - '''g~~''' <br/><br />
intero file minuscolo - '''ggguG''' <br/><br />
intero file maiuscolo - '''gggUG'''<br />
<br />
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo/''' <br/><br />
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/><br />
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/><br />
sostituzione in tutto il documento - ''':%s/vecchio/nuovo/g''' <br/><br />
<br />
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''<br />
<br />
elimina le terminazioni di riga in stile DOS, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/><br />
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>Ctrl-v</code> e <code>Ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/><br />
'''<nowiki>:</nowiki>%s/^M//g'''<br />
<br />
<br />
dato un file con tante righe nella forma di ''foo bar baz <nowiki>http://bla</nowiki>'',<br />
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:<br />
'''<nowiki>:</nowiki>%s/^.\{-}\zehttp//g'''<br />
<br />
<br />
data una riga nella forma '11. foo' sostituisce il punto con un tab<br />
'''<nowiki>:</nowiki>s/\(^[0-9]\+\)\. /\1\t/'''<br />
<br />
<br />
cancella tutto ciò che c'è dopo le virgolette<br />
'''<nowiki>:</nowiki>%s/".*//'''<br />
<br />
<br />
cancella spazi non voluti a fine riga (trailing whitespace); <br />
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:<br />
'''<nowiki>:</nowiki>%s/\s\+$//'''<br />
<br />
cerca soltanto:<br />
'''/\s\+$'''<br />
<br />
<br />
seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata<br />
'''Ctrl-v I # <Esc>'''<br />
<br />
<br />
Inserisce contenuto di un registro all'inizio di ogni riga selezionata.<br />
Data una lista di voci come segue:<br />
* foo uno<br />
* due<br />
* tre<br />
* quattro<br />
* cinque<br />
* sei<br />
* sette<br />
<br />
supponiamo di voler inserire 'foo', compreso lo spazio che segue, all'inizio delle successive quattro righe.<br />
<br />
copiamo: '''vely''' <br/><br />
selezioniamo l'inizio delle altre righe: '''j Ctrl-v 3j''' <br/><br />
passiamo alla modalità inserimento visuale: '''I''' <br/><br />
incolliamo e torniamo alla modalità comando: '''Ctrl-r " <Esc>'''<br />
<br />
La sequenza completa è dunque: '''velyj Ctrl-v 3jI Ctrl-r " <Esc>''' <br/><br />
Appare macchinoso ma è un'ottima alternativa alla modalità comando quando c'è bisogno di copiare stringhe complesse che, a causa di caratteri speciali e necessità di escape, risulterebbero scomode da inserire con il classico '''Ctrl-v :'<,'>s/^/foo /'''<br />
<br />
'''<nowiki>:</nowiki>help v_b_I''' <br/><br />
'''<nowiki>:</nowiki>help i_CTRL-R'''<br />
<br />
<br />
manda a capo in corrispondenza di ogni tag <br><br />
'''<nowiki>:g,<br>,s,<br>,<br>\r,g</nowiki>'''<br />
<br />
<br />
in una riga con molteplici 'foo' sostituisce solo il secondo<br />
'''<nowiki>:</nowiki>s/\(.*\)foo/\1bar/'''<br />
<br />
<br />
ordina testo alfabeticamente - ''':sort'''<br />
<br />
elimina righe uguali - ''':sort u'''<br />
<br />
<br />
mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto<br />
'''<nowiki>:</nowiki>3p|45p|180p'''<br />
<br />
<br />
Alcuni semplici esempi di cosa si può fare con ex:<br />
<br />
cancella terza riga di un file<br />
$ ex file.txt <<< $'3d\nw'<br />
cancella righe commentate<br />
$ ex file.txt <<< $'g/^#/d\nw'<br />
<br />
dato un file contenente una sequenza di numeri (uno per riga) cancella tutto tranne 1 e 7<br />
$ printf '%s\n' 1 2 3 4 5 6 7 > file.txt; ex file.txt <<< $'v/[17]/d\nw'<br />
<br />
''v'' è l'opposto di ''g'', come ''grep -v''<br />
<br />
<br />
== Selezione e inserimento ==<br />
Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre. <br/><br />
Come accennato all'inizio, la modalità visuale seleziona il testo. <br />
<br />
inizia selezione - '''v''' <br/><br />
seleziona intera riga - '''V''' <br/><br />
seleziona blocco (per colonne) - '''Ctrl-v''' <br/><br />
seleziona tutto - '''ggVG''' <br/><br />
<br />
<br />
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se<br />
selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre<br />
sopra, basterà premere '''o''' e il cursore si sposterà alla prima riga della selezione corrente quindi<br />
muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/><br />
'''Vjok'''<br />
<br />
<br />
Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio. <br/><br />
Ecco ad esempio come copiare del testo salvandolo in altro file: <br/><br />
'''v''' <br/><br />
'''<nowiki>:</nowiki>'<,'>w nome_file'''<br />
<br />
Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il<br />
cursore: <br/><br />
'''<nowiki>:</nowiki>r nome_file'''<br />
<br />
<br />
Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una shell in una porzione di finestra e lo esegue: <br/><br />
'''<nowiki>:</nowiki>!ls'''<br />
<br />
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/><br />
'''<nowiki>:</nowiki>r !ls'''<br />
<br />
In caso servisse una shell con piena funzionalità: <br/><br />
'''<nowiki>:</nowiki>shell'''<br />
<br />
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)<br />
<br />
<br />
== Indentazione ==<br />
inserisce un'indentazione su riga - ''':>''' <br/><br />
inserisce due indentazioni su riga - ''':>>''' <br/><br />
toglie un'indentazione su riga - :<''' <br/><br />
toglie due indentazioni su riga - ''':<<''' <br/><br />
inserisce un'indentazione su 3 righe - ''':>3''' <br/><br />
inserisce un'indentazione sulla terza riga - ''':3>''' <br/><br />
<br />
inserisce - '''>>'''<br />
toglie - '''<<'''<br />
inserisce su tre righe - '''3>>'''<br />
toglie su tre righe - '''3<<'''<br />
inserisce sulla terza riga partendo da dove è posizionato il cursore - '''2j>>'''<br />
<br />
rimuove indentazione all'intero file - '''gg=G'''<br />
<br />
<br />
== Copia, taglia, incolla, cancella ==<br />
Questo funziona solo all'interno della sessione corrente di Vim. <br/><br />
copia testo selezionato - '''y''' <br/><br />
copia prima parola di una riga - '''yw''' <br/><br />
copia intera riga - '''yy'''<br />
<br />
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/><br />
incolla testo tagliato sopra la riga dove è il cursore - '''P'''<br />
<br />
mette la riga sottostante in coda alla corrente - '''J'''<br />
<br />
<br />
cancella carattere - '''x''' <br/><br />
cancella tre caratteri - '''3x''' <br/><br />
cancella dal cursore all'inizio della parola seguente - '''dw''' <br/><br />
cancella dal cursore alla fine della parola corrente - '''de''' <br/><br />
cancella dal cursore all'inizio della parola corrente - '''db''' <br/><br />
cancella la parola che si trova sotto al cursore - '''daw''' <br/><br />
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - '''caw''' <br/><br />
cancella dal cursore alla fine della riga - '''D''' <br/><br />
cancella dal cursore alla fine della riga - '''d$''' <br/><br />
cancella intera riga compreso spazio occupato - '''dd''' <br/><br />
cancella tre righe - '''3dd''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - '''df''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - '''dt''' (seguito dal carattere) <br/><br />
cancella tutte le righe dello schermo sotto il cursore - '''dL''' <br/><br />
cancella dalla riga in cui si trova il cursore alla fine del documento - '''dG''' <br/><br />
cancella dalla riga in cui si trova il cursore all'inizio del documento - '''dg''' <br/><br />
cancella intero documento - '''ggdG''' <br/><br />
cancella parola e passa alla modalità inserimento - '''cw''' <br/><br />
cancella riga e passa alla modalità inserimento - '''cc''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla<br />
modalità inserimento - '''cf''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla<br />
modalità inserimento - '''ct''' (seguito dal carattere)<br />
<br />
cancella ogni riga che inizia con una certa parola - ''':g/^parola/d''' <br/><br />
cancella ogni riga che termina con una certa parola - ''':g/parola$/d''' <br/><br />
cancella ogni riga che contiene una certa parola - ''':g/parola/d''' <br/><br />
cancella le righe commentate - ''':g/^#/d''' <br/><br />
cancella le righe vuote - ''':v/\S/d'''<br />
<br />
inserisce commento (#) ad inizio riga - ''':s/^/#/'''<br />
<br />
<br />
== Annulla, ripeti, cronologia e ricerca ==<br />
Per annullare o ripetere una modifica si userà: <br/><br />
undo - '''u''' <br/><br />
undo di una riga - '''U'''<br />
<br />
redo - '''Ctrl-r'''<br />
<br />
<br />
Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po'<br />
le ripetizioni si usa il punto: <br/><br />
'''.'''<br />
<br />
<br />
Per la modalità comando: <br/><br />
ripete ultima operazione - '''@:''' <br/><br />
mostra la history dei comandi - ''':history''' <br/><br />
mostra la history con comandi selezionabili - '''q:''' <br/><br />
mostra la history di ricerca con comandi selezionabili - '''q/''' (successivo) <br/><br />
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/><br />
<br />
mostra la lista dei comandi interni che iniziano per a - ''':a Ctrl-d'''<br />
<br />
La ricerca funziona come per tante altre applicazioni: <br/><br />
cerca parola in avanti - '''/parola''' <br/><br />
ripete ricerca in avanti - '''n''' <br/><br />
cerca indietro - '''N'''<br />
<br />
cerca parola indietro - '''?parola''' <br/><br />
ripete ricerca indietro - '''n''' <br/><br />
cerca in avanti - '''N'''<br />
<br />
<br />
== Autocompletamento ==<br />
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate<br />
precedentemente. <br/><br />
'''Ctrl-x''' <br/><br />
scorrimento tra i risultati - '''Ctrl-n''' / '''Ctrl-p''' <br/><br />
annulla - '''Ctrl-e''' <br/><br />
accetta parola selezionata - '''Ctrl-y''' (oppure Enter)<br />
<br />
<br />
== Clipboard ==<br />
Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono<br />
utilizzate. <br/><br />
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1<br />
(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).<br />
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie Ctrl-c/Ctrl-x/Ctrl-v. <br/><br />
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]<br />
<br />
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.<br />
:PRIMARY: <br/><br />
copia - '''"*y''' <br/><br />
taglia - '''"*x''' <br/><br />
incolla - '''"*p'''<br />
<br />
:CLIPBOARD: <br/><br />
copia - '''"+y''' <br/><br />
taglia - '''"+x''' <br/><br />
incolla - '''"+p'''<br />
<br />
Allo stesso modo, per copiare una riga senza prima selezionarla si useranno '''"*yy''' e '''"+yy'''<br />
<br />
Il '''"''' (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo.<br />
'''*''' (asterisco) e '''+''' (più) fanno parte dei registri di selezione e rilascio del testo da e verso la<br />
clipboard di Xorg.<br />
Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard.<br />
Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.<br />
<br />
cancella riga - '''"_dd'''<br />
cancella tre righe - '''"_3dd'''<br />
<br />
Per approfondire e sapere di più sugli altri sette registri consultare la documentazione:<br />
'''<nowiki>:</nowiki>help "'''<br />
'''<nowiki>:</nowiki>help :registers'''<br />
<br />
<br />
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/><br />
'''<nowiki>:</nowiki>version'''<br />
<br />
cercando <code>clipboard</code> e <code>xterm_clipboard</code> nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà '''1''' se presente o '''0''' se non lo è: <br/><br />
'''<nowiki>:</nowiki>echo has('clipboard')''' <br/><br />
'''<nowiki>:</nowiki>echo has('xterm_clipboard')'''<br />
<br />
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/><br />
* vim-gtk<br />
* vim-gnome<br />
* vim-athena</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Openbox&diff=29847Openbox2012-09-27T14:53:48Z<p>Skizzhg: proofreading</p>
<hr />
<div>{{Versioni compatibili}}<br />
= Introduzione =<br />
[http://openbox.org/ Openbox] è un gestore di finestre leggerissimo e altamente personalizzabile, adatto ai computer con hardware limitato.<br />
<br />
Può essere utilizzato al posto di Metacity, il window manager di Gnome, di Kwin, quello di KDE, ma è anche possibile avviare una sessione indipendente di Openbox.<br />
<br />
Per funzionare da solo necessità di un server grafico, pertanto dopo un'installazione minimale da ''netinst'' e dopo aver installato ''xserver-xorg'' si è già pronti per usarlo.<br />
<br />
=Installazione=<br />
Per installare Openbox e i suoi tool di configurazione occore da terminale eseguire il seguente comando:<br />
<pre># aptitude install openbox obconf obmenu</pre><br />
Adesso è possibile utilizzare Openbox e lo si può avviare direttamente da riga comando, oppure attraverso un Display Manager.<br />
<br />
=Login=<br />
== Login Testuale ==<br />
Se non si dispone di un DM o non lo si vuole usare, occorre lanciare la sessione di Openbox con il comando:<br />
<pre>exec openbox-session</pre><br />
Si può avviare una sessione di Openbox anche da console tramite xinit: <br />
$ xinit /usr/bin/openbox-session<br />
<br />
Per utilizzare Consolekit, eseguire invece questo comando: <br />
$ exec ck-launch-session openbox-session<br />
<br />
Se si utilizzano anche polkit e D-Bus (ad esempio per usufruire dell'automount su Nautilus/Gnome) eseguire: <br />
$ exec ck-launch-session dbus-launch openbox-session<br />
<br />
Per rendere l'operazione più comoda si può impartire il comando attraverso un ''alias'' oppure editando il file ''.xinitrc'' aggiungendo il comando sopra riportato.<br />
<br />
Se il file ''.xinitrc'' non esiste crearlo:<br />
<pre>$ echo "exec openbox-session" > ~/.xinitrc </pre><br />
<br />
In questo modo all'avvio del PC dopo essersi accreditati occorrerà eseguire il comando:<br />
$ startx<br />
oppure<br />
$ xinit<br />
Eseguirlo in maniera indipendente può ridurre drasticamente il consumo di cpu e memoria.<br />
<br />
{{Box|Tips|''startx'' e ''xinit'' sono programmi del pacchetto '''xinit'''<br />
verificare che sia installato}}<br />
<br />
== Login Grafico ==<br />
Se avete già un Display Manager, come GDM o KDM, vi basterà scegliere dal menù a tendina, la voce "Openbox" ed effettuare il login.<br />
<br />
= Configurazione =<br />
Lo stupore di molti al primo avvio è comune, l'ambiente si presenta con uno sfondo grigio e nessuna icona o barra presente, con la tipica scorciatoia Alt+F2 non appare alcuna finestra per l'esecuzione dei programmi, l'unica opzione possibile è il pulsante destro del mouse.<br />
<br />
La comparsa di un piccolo menù ci aprirà la strada verso l'inizio di questa avventura.<br />
<br />
[[immagine:Openbox.jpg|320px| center]]<br />
<br />
La configurazione di Openbox è basata principalmente (ma non solo) su due file: menu.xml e rc.xml, all'inizio non saranno presenti e verrà utilizzata una configurazione predefinita presente in ''/etc/xdg/openbox'', per poterli modificare occorre eseguire le due applicazioni '''obconf''' e '''obmeu''' oppure copiarli nella propria ''/home/user/.config/openbox'' e modificarli a piacimento.<br />
<br />
==Obconf==<br />
Per modificare rc.xml, uno dei file principali di configurazione, occorre prima crearlo attraverso l'esecuzione di obconf, comando facilmente disponibile nel menù aperto precedentemente.<br />
<br />
Tramite questo file si gestisce il cuore del Window Manager, l'aspetto e la gestione delle finestre, il comportamento del mouse e i temi.<br />
<br />
Attraverso la prima scheda, Tema, possiamo scegliere uno dei tanti temi già disponibili o aggiungerne di nuovi.<br />
[[immagine:Openbox1.jpg|380px| center]]<br />
<br />
<br />
La seconda scheda, Aspetto, ci permette di configurare l'ordine dei bottoni e i caratteri utilizzati per la barra del titolo.<br />
[[immagine:Openbox2.jpg|380px| center]]<br />
<br />
<br />
La terza scheda, Finestre, si occupa del posizionamento delle finestre e il loro comportamento all'apertura.<br />
[[immagine:Openbox3.jpg|380px| center]]<br />
<br />
<br />
La quarta scheda, Move & Resize, è dedicata allo spostamento e ridimensionamento delle finestre e la loro interazione con il desktop.<br />
[[immagine:Openbox4.jpg|380px| center]]<br />
<br />
<br />
La quinta scheda, Mouse, definisce le azioni del mouse sulle finestre e la personalizzazione del doppio click sulla barra del titolo.<br />
[[immagine:Openbox5.jpg|380px| center]]<br />
<br />
<br />
La sesta scheda, Desktop, consente di definire il numero e il nome delle aree di lavoro disponibili.<br />
[[immagine:Openbox6.jpg|380px| center]]<br />
<br />
<br />
La settima scheda, Margini, regola lo spessore dei bordi del desktop, ovvero la distanza tra il margine dello schermo e una finestra.<br />
[[immagine:Openbox7.jpg|380px| center]]<br />
<br />
<br />
L'ottava e ultima scheda, Dock, non l'ho usata perché non ho ancora provato a inserire dockapps; gestisce la posizione e il comportamento dell'area dedicata a ospitare queste piccole applicazioni.<br />
[[immagine:Openbox8.jpg|380px| center]]<br />
<br />
<br />
Dopo aver apportato anche una sola modifica a queste opzioni ci troveremo il file ''rc.xml''.<br />
<br />
Purtroppo Obconf non è fornito di un'utile scheda per configurare le scorciatoie da tastiera, per cui dovremo addentrarci in questo file che a prima vista potrà sembrare complesso, ma basterà scorrerlo per vedere come queste sono impostate.<br />
<br />
Le abbreviazioni per molti tasti funzione sono:<br />
C = Ctrl<br />
S = Shift<br />
A = Alt<br />
W = Super (tasto con logo di sistema operativo estraneo)<br />
<br />
Ad esempio C-A-Left (Ctrl+Alt+freccia sinistra) ci farà muovere tra le aree di lavoro.<br />
<br />
Se abbiamo una finestra aperta, S-A-Left ci farà muovere la finestra che ha il focus attraverso le altre aree di lavoro disponibili.<br />
<br />
Con un po' di pazienza ci si può sbizzarrire personalizzando al massimo le combinazioni di tasti,<br />
<br />
==Obmenu==<br />
Questa applicazione offre una comoda GUI per gestire il menù che compare alla pressione del pulsante destro del mouse sul desktop.<br />
<br />
L'unico modo per avviarla la prima volta è eseguire il comando da un terminale, dopo sarà possibile inserire la voce direttamente nel menù:<br />
$ obmenu<br />
Dopo l'esecuzione avremo il file /home/user/.config/openbox/menu.xml che, volendo, potremo modificare anche tramite il nostro editor di testi preferito.<br />
<br />
[[immagine:Openbox9.jpg|380px| center]]<br />
<br />
<br />
===GUI===<br />
L'interfaccia grafica è molto semplice, le funzioni nella barra superiore sono intuitive:<br />
* Salva <br />
*Nuovo menù/sottomenù<br />
*Nuovo oggetto<br />
*Nuovo separatore<br />
*Sposta su<br />
*Sposta giù<br />
*Cancella<br />
I campi nella parte inferiore devono essere compilati:<br />
<br />
*Label - nome da visualizzare nel menù (''a vostra scelta'')<br />
*Id - inserisce un ''id'' (''a vostra scelta'')<br />
*Action - azione a scelta tra ''execute'', ''reconfigure'', ''restart'' e ''exit''<br />
*Execute - disponibile solo se nel campo precedente si è scelto ''execute'', inserire il comando desiderato<br />
<br />
Sarà possibile personalizzare il menù come nell'esempio seguente:<br />
[[immagine:Skulll2.jpeg|420px| center]]<br />
<br />
per vedere il menù in questo modo<br />
[[immagine:Skulll3.jpeg|280px| center]]<br />
<br />
<br />
===Pipe-menu===<br />
Openbox, come altri WM, permette di scrivere degli scripts che generano dinamicamente dei menù.<br />
<br />
Possiamo inserire monitor di sistema, applicazioni multimediali e altro ancora; alcuni di questi si possono trovare sul [[http://openbox.org/wiki/Openbox:Pipemenus wiki]] di Openbox.<br />
<br />
Con l'installazione di ''obmenu'' troviamo già a disposizione alcuni strumenti:<br />
*obm-dir<br />
*obm-moz<br />
*obm-nav<br />
*obm-xdg<br />
<br />
Ogni binario deve essere richiamato opportunamente nel menù di openbox (''~/.config/openbox/menu.xml'') mediante stringa.<br />
<br />
====obm-dir====<br />
Questo pipe-menu aggiunge un sottomenù che ordina tutti i file di una directory per nome e apre gli stessi con il programma specificato. <br />
<br />
Spesso viene utilizzato per le directory contenenti le immagini, come da esempio:<br />
<menu execute="obm-dir /home/user/immagini 'feh'" id="image" label="immagini"/><br />
In questo caso apre l'immagine selezionata con ''feh''.<br />
<br />
====obm-moz====<br />
Questo pipe-menu mostra un sottomenù contenente i preferiti di firefox/iceweasel e va richiamato come in esempio:<br />
<menu execute="obm-moz" id="bookmark" label="Bookmark"/><br />
<br />
====obm-nav====<br />
Questo pipe-menu aggiunge al menù di base di OpenBox un sottomenù per esplorare la directory specificata. La stringa per richiamare questo pipe-menu è come da esempio:<br />
<menu execute="obm-nav /home/user/data pcmanfm xterm" id="data" label="/data"/><br />
<br />
Per navigare tra i file occorre specificare il tipo di emulatore di terminale da usare o che tipo di programma di esplorazione utilizzare per aprire la directory.<br />
<br />
====obm-xdg====<br />
Quest'ultimo pipe-menu aggiunge al menù di base di OpenBox un sottomenù contenente tutte le applicazioni GTK/GNOME installate nel sistema.<br />
<menu execute="obm-xdg" id="xdg-menu" label="Applicazioni"/><br />
La ricerca verrà effettuata tra le applicazioni installate nel sistema alla directory di riferimento ''/usr/share/applications''. <br />
<br />
In questa directory risiedono tutti i file *.desktop dei programmi installati. Se il menù non dovesse contenere una delle applicazioni installate nel sistema sarà sufficiente creare il file ''esempio.desktop'' contenete le direttive relative al programma:<br />
<br />
[Desktop Entry]<br />
Type=Application<br />
Name=firefox<br />
GenericName=Firefox - Web Browser<br />
Comment=Firefox - Web Browser<br />
TryExec=firefox<br />
Exec=firefox<br />
Categories=Application;Network;<br />
<br />
== Il file <code>autostart.sh</code> ==<br />
Creiamo il file <code>autostart.sh</code> che definisce le applicazioni da lanciare all'avvio di Openbox:<br />
<pre>$ touch ~/.config/openbox/autostart.sh</pre><br />
Rendiamolo avviabile:<br />
<pre>$ chmod 700 ~/.config/openbox/autostart.sh</pre><br />
Adesso inseriamo il seguente codice:<br />
<br />
<pre># Run the system-wide support stuff<br />
. $GLOBALAUTOSTART<br />
<br />
# Programmi da eseguire all'avvio<br />
feh [OPZIONE] [FILE]<br />
xcompmgr [OPZIONI] &<br />
<br />
# Programmi da eseguire dopo che Openbox si avvia<br />
(sleep [sec] && tint2) & </pre><br />
<br />
{{Box | Il comando "sleep"|<pre>(sleep [N] && comando)</pre> esegue "comando" dopo N secondi.}}<br />
<br />
{{Box | Gestore di connessioni|Se avete un gestore di connessioni internet, aggiungete nella sezione "Programmi da eseguire all'avvio":<br />
* <pre>nm-applet &</pre> in caso di Newtork manager<br />
* <pre>wicd-daemon &</pre> se avete Wicd.}}<br />
<br />
{{ Warningbox | Se dovete aggiungere qualche altro programma, ricordatevi di appendere "&" al comando, che avvierà l'applicazione in background, altrimenti Openbox sarà inutilizzabile finché non terminerà quel determinato processo.}}<br />
<br />
==Tips & Trick==<br />
<br />
===Pulsante centrale===<br />
Ci sono alcune funzioni che occorre ricordare sull'uso del mouse in Openbox, oltre all'indispensabile pulsante destro sul desktop abbiamo quello centrale che ci fa muovere tra le varie aree di lavoro disponibili e ci permette di selezionare un'applicazione aperta ovunque si trovi.<br />
<br />
[[immagine:Openbox10.jpg|200px| center]]<br />
<br />
<br />
===Bloc-num===<br />
Usando un portatile avere attivo questo programma importa poco, ma per un PC desktop è una cosa da avere.<br />
Sono molti gli utilizzatori de tastierino numerico posto alla destra della nostra tastiera, pertanto si ritiene utile l'installazione di numlockx.<br />
<br />
# aptitude install numlockx<br />
<br />
Xorg richiama ''/etc/X11/Xsession.d/55numlockx'' e in ''/etc/default/numlockx'' è su auto di default, in questo modo la funzione sarà da subito disponibile.<br />
<br />
===alt+tab switch all desktop===<br />
Questa combinazione di tasti è di uso comune ma di default in Openbox non risponde come si vorrebbe, infatti lo switch ruota nelle sole applicazioni del desktop in cui ci si trova.<br />
<br />
Per chi volesse la rotazione tra tutte le applicazioni aperte in tutti i desktop le soluzioni comporta una modifica al file ''rc.xml''.<br />
<br />
Intorno alla riga 273 troverete ''<!-- Keybindings for window switching -->'', qui inseriremo ''<allDesktops>yes</allDesktops>'' come in esempio:<br />
<br />
<!-- Keybindings for window switching --><br />
<keybind key="A-Tab"><br />
<action name="NextWindow"><br />
<allDesktops>yes</allDesktops><br />
<finalactions><br />
<action name="Focus"/><br />
<action name="Raise"/><br />
<action name="Unshade"/><br />
</finalactions><br />
</action><br />
<br />
se si vogliono le sole icone senza il testo aggiungere anche<br />
<br />
<dialog>icons</dialog><br />
<br />
sotto quanto prima inserito.<br />
<br />
===Gestione dei temi===<br />
Per poter utilizzare temi diversi può essere d'aiuto installare un'applicazione in grado di gestire i temi gtk2<br />
#aptitude instal gtk-chtheme<br />
Per eseguire l'applicazione cercare nel menu oppure da terminale digitare<br />
$ gtk-chtheme<br />
ci apparirà così :<br />
[[immagine:Ob30.jpeg|320px| center]]<br />
<br />
Noterete subito la differenza in applicazioni come Pcmanfm<br />
[[immagine:Ob31.jpeg|320px| center]]<br />
<br />
Per avere un tema in stile KDE come quello da immagine occorre avere ''gtk2-engines-oxygen'' e ''oxygen-icon-theme'' installati.<br />
<br />
===Shutdown & logout===<br />
La voce «exit» predefinita nel menù di Openbox porta al logout, pertanto se si vuole effettuare lo spegnimento della macchina occorre apportare alcune modifiche al sistema.<br />
<br />
Dopo varie ricerche ho trovato tre soluzioni che ora riporterò, nelle quali si fa un uso differente dei comandi.<br />
<br />
Per lo spegnimento è possibile usare ''halt'' oppure ''shutdown -h now'', mentre per il riavvio ''reboot'' o ''shutdown -r now''.<br />
<br />
Per prima cosa serve aver installato sudo <br />
# aptitude install sudo<br />
<br />
e configurarlo con il comando <br />
<br />
# visudo<br />
<br />
si rende necessario attribuire all'utente i permessi adeguati ai comandi ''shutdown'' oppure ''halt'' e ''reboot'', e, a seconda delle necessità anche ''pm-suspend'' e ''pm-hibernate''.<br />
<br />
Aggiungendo:<br />
ALL ALL=NOPASSWD:/sbin/shutdown<br />
permetteremo a chiunque di eseguire lo spegnimento oppure si possono impostare i permessi al solo utente, fate le giuste considerazioni sulla sicurezza ecco un esempio:<br />
<br />
Defaults secure_path="/sbin:/bin:/usr/sbin:/usr/bin"<br />
utente ALL=(root) NOPASSWD: /sbin/shutdown<br />
utente ALL=(root) NOPASSWD: /sbin/halt<br />
utente ALL=(root) NOPASSWD: /sbin/reboot<br />
ecc..<br />
<br />
====Altertux====<br />
Oltre alla parte che interessa l'uscita dal sistema potrete trovare al seguente [http://www.altertux.org/www/openbox.html/ link] un'ottima guida su Openbox.<br />
<br />
In questo caso si effettua una semplice modifica al file menu.xml aggiungendo a piacimento le funzioni desiderate.<br />
<item label="Riavvia il sistema"><br />
<action name="Execute"><br />
<execute><br />
sudo reboot<br />
</execute><br />
</action><br />
</item><br />
<item label="Spegni"><br />
<action name="Execute"><br />
<execute><br />
sudo halt<br />
</execute><br />
</action><br />
</item><br />
<br />
====Urukrama ====<br />
Autore di diversi articoli su Openbox e di un'ottima guida propone una semplice GUI [http://urukrama.wordpress.com/openbox-guide/#shutdown/ link]<br />
<br />
Se si vuole un'uscita rapida e semplice con ''GDM'', si può spegnere il pc con l'aiuto di ''gdm-control'', con il seguente comando:<br />
gdm-control --shutdown && openbox --exit<br />
<br />
Per riavviare usare il comando:<br />
<br />
gdm-control --reboot && openbox --exit<br />
<br />
Per sospendere usare la seguente linea:<br />
<br />
gdm-control --suspend<br />
<br />
Se si vuole utilizzare un'interfaccia grafica minimale bisogna aver installato ''gxmessage'' ( [http://urukrama.wordpress.com/2007/12/03/confirm-to-shut-down-reboot-or-log-out-in-openbox/ articolo originale]):<br />
# aptitude install gxmessage<br />
<br />
A questo punto creiamo uno script con un contenuto simile:<br />
<br />
<pre>#!/bin/bash<br />
<br />
gmessage "Sei sicuro di voler spegnere il computer?" -center -title "Take action" -font "Sans bold 10" -default "Cancel" -buttons "_Cancel":1,"_Log out":2,"_Reboot":3,"_Shut down":4 >/dev/null <br />
<br />
case $? in<br />
1) echo "Exit" ;;<br />
2) killall openbox ;;<br />
3) sudo shutdown -r now ;;<br />
4) sudo shutdown -h now ;;<br />
esac</pre><br />
salviamolo dove preferiamo con un nome a piacere (es. ''/home/user/.config/openbox/oblogout.sh''). <br />
<br />
Se eseguito apparirà così :<br />
[[immagine:Openbox19.jpg|380px| center]]<br />
<br />
Per eseguirlo abbiamo diverse opzioni, si può abbinare ad una scorciatoia da tastiera o richiamare da obmenu.<br />
<br />
Se si volesse utilizzare la combinazione di tasti ''Super+q'' basterà inserire in ''rc.xml'' :<br />
<pre> <!-- Keybindings for running applications --> <br />
<keybind key="W-q"> <br />
<action name="Execute"> <br />
<startupnotify> <br />
<enabled>true</enabled> <br />
<name>OBlogout</name> <br />
</startupnotify> <br />
<command>/home/barabba/.config/openbox/oblogout</command> <br />
</action> <br />
</keybind> </pre><br />
<br />
Oppure in obmenu modificare la voce ''Exit'' impostando ''execute'' e inserendo il comando :<br />
~/.config/openbox/oblogout.sh<br />
[[immagine:Obmenu.JPG|380px| center]]<br />
In questo modo sarà comodamente accesibile dal menu.<br />
<br />
{{Suggerimento|Usando ''gxmessage'' è possibile eseguire script personalizzati o comandi prima dell'esecuzione del comando predefinito.<br />
<br />
Avendo uno script ''clean.sh'' in ''/usr/local/bin'' da eseguire allo spegnimento lo si può inserire prima del comando shutdown:<br />
3) clean.sh && sudo shutdown -r now ;;<br />
Oppure così se si ha un comando diretto:<br />
3) sudo switchconf nolan && sudo shutdown -r now ;;<br />
in questo caso viene richiamata una configurazione di rete con switchconf che è stato predisposto all'uso senza password.}}<br />
<br />
====CrunchBang style====<br />
La seguente procedura è tratta da [http://toshidex.org/2012/06/27/debian-openbox-e-il-mistico-oblogout/ questo articolo].<br />
<br />
Per prima cosa dobbiamo scaricare il file:<br />
<br />
https://github.com/Cloudef/oblogout-fork/zipball/master <br />
<br />
dopo averlo estratto va eseguito con python:<br />
# python setup.py install<br />
Se avete errori verificate la presenza di questi pacchetti: ''python-dbus python-imagingpython-distutils-extra''<br />
<br />
il file principale di configurazione si trova in /etc/oblogout.conf:<br />
<br />
<pre># # Ignored if you have a backend --><br />
shutdown = sudo shutdown -h now<br />
restart = sudo reboot<br />
suspend = sudo pm-suspend<br />
hibernate = sudo pm-hibernate<br />
safesuspend = safesuspend<br />
# <--</pre><br />
Per avere le giuste immagini bisogna copiare il tema:<br />
$ cp -R /usr/local/share/themes/foom ~/.themes<br />
<br />
Ora non ci resta che aggiungere il comando al nostro menù, modificando la voce exit.<br />
[[immagine:Openbox20.jpg|380px| center]]<br />
<br />
E questo dovrebbe essere Il risultato:<br />
[[immagine:Openbox20.png|380px| center]]<br />
<br />
=Personalizzazione=<br />
L'installazione di Openbox è minimale e parca di dipendenze, pertanto per poter avere un'eperienza dekstop un pò più accattivante si rende necessaria l'installazione di alcune applicazioni opzionali.<br />
<br />
Di seguito ne verranno elencate alcune.<br />
<br />
==Sfondo (wallpaper)==<br />
Per impostare uno sfondo per il desktop ho trovato tra le tante applicazioni disponibili due programmi: ''feh'' e ''nitrogen''.<br />
<br />
===Feh===<br />
Per installarlo occorre eseguire da terminale:<br />
# aptitude install feh<br />
<br />
feh non è solamente utile per impostare lo sfondo ma è anche un ottimo e leggero visualizzatore di immagini, se successivamente verrà usato un file manager lo troveremo come opzione nell'apertura di file immagine.<br />
<br />
Per configurare lo sfondo, bisogna eseguire da terminale il seguente comando:<br />
$ feh [opzione] /posizione/file/immagine<br />
<br />
le opzioni disponibili sono:<br />
<br />
--bg-center (centra l'immagine)<br />
--bg-fill (centra l'immagine e la ingrandisce)<br />
--bg-scale (scala l'immagine)<br />
--bg-tile (piastrella l'immagine)<br />
<br />
Per caricare uno sfondo predefinito all'avvio di Openbox bisogna inserire il comando con le giuste opzioni all'interno di ''autostart.sh'' come da sintassi:<br />
<br />
$ feh [OPZIONE] [FILE]<br />
<br />
===Nitrogen===<br />
Con questa applicazione abbiamo una comoda interfaccia grafica per poter impostare lo sfondo, ma prima di cominciare installiamola:<br />
<br />
# aptitude install nitrogen<br />
<br />
Dato che nitrogen non è presente nel menù, lanciamo il programma da terminale:<br />
<br />
$ nitrogen<br />
<br />
Dalle preferenze scegliamo da quali directory attingere i file immagine e quindi scegliamo con quali opzioni impostare lo sfondo.<br />
<br />
[[immagine:Openbox11.jpg|380px| center]]<br />
<br />
Per caricare lo sfondo all'avvio inserire nel file ''autostart.sh''.<br />
nitrogen --restore &<br />
<br />
== Pannello o Barra ==<br />
Openbox non fornisce un pannello per visualizzare le icone delle fineste aperte, lanciatori e system tray; è comunque disponibile un buon assortimento tra i quali [http://code.google.com/p/tint2/ tint2], [http://freshmeat.net/projects/hpanel/ hpanel], [http://freshmeat.net/projects/fspanel/ fspanel], [http://fbpanel.sourceforge.net/ fbpanel] e molti altri.<br />
<br />
Tra questi ho preferito ''lxpanel'' perché mi consente l'uso della rotella del mouse su alcune applicazioni visualizzate all'interno della barra come ad esempio il volume in radiotray oppure in amarok.<br />
<br />
Prendiamo come esempio ''lxpanel'' e lo andiamo a installare:<br />
<pre># aptitude install lxpanel</pre><br />
<br />
[[immagine:Openbox12.jpg| 900px| center]]<br />
<br />
<br />
Il primo pulsante a sinistra ci porta un utile menù con diverse applicazioni.<br />
[[immagine:Openbox17.jpg|200px| center]]<br />
<br />
<br />
Usando il pulsante destro del mouse sulla parte a sinistra è possibile eseguire alcune personalizzazioni, come l'aggiunta di applicazioni preferite.<br />
[[immagine:Openbox13.jpg|380px| center]]<br />
<br />
<br />
Usando il pulsante destro del mouse nelle diverse zone del pannello sarà possibile effettuare altre modifiche.<br />
[[immagine:Openbox14.jpg|380px| center]]<br />
<br />
<br />
Per avere il pannello disponibile all'avvio si deve inserire il comando nel file ''autostart.sh''.<br />
<br />
(sleep 3 && lxpanel) &<br />
<br />
in questo caso eseguita con 3 secondi di ritardo.<br />
<br />
==Terminale ==<br />
Tra i tanti disponibili ho scelto ''lxterminal'', l'installazione richiede anche poche dipendenze:<br />
# aptitude install lxterminal<br />
[[immagine:Openbox15.jpg|380px| center]]<br />
<br />
Per poter eseguire ''lxterminal'' dal menù di Openbox ho modificato ''obmenu'' inserendo<br />
<br />
lxterminal --geometry=139x50<br />
<br />
alla voce ''terminal emulator''.<br />
<br />
Per avere le giuste dimensioni occorre prima ridimensionare la finestra di lxterminal e segnarsi dato che compare a monitor, le dimensioni preferite.<br />
<br />
Oppure usando questo comando:<br />
$ xwininfo | grep geometry <br />
e quindi cliccare sulla finestra<br />
<br />
Alcuni tasti scorciatoia assolutamente indispensabili per l'uso di ''lxterminal'':<br />
Crtl+Shift+t = apre una nuova scheda<br />
Ctrl+pgup/pgdown per muoversi tra le schede aperte<br />
<br />
Per poter usare al meglio MC ho disabilitato l'uso di F10 a lxterminal, flag opzionale nelle impostazioni.<br />
<br />
Sempre nelle impostazioni è possibile selezionare la trasparenza.<br />
<br />
== Composite Manager ==<br />
Possiamo arricchire il nostro desktop con qualche effetto anche su macchine con scarsa dotazione hardware video.<br />
<br />
Un leggero ma valido gestore di compositing è xcompmgr, che può impostare trasparenza e altri effetti sulle finestre.<br />
<br />
# aptitude install xcompmgr<br />
<br />
Le opzioni disponibili sono consultabili nel manuale:<br />
<br />
$ man xcompmgr<br />
<br />
Per poterlo avere all'avvio va inserito come al solito all'interno del file autostart.sh un comando come in esempio:<br />
<br />
xcompmgr -r 15 -o .63 -l -20 -t -20 -I 0.015 -O 0.02 -D 5 &<br />
<br />
== Gestore di File ==<br />
Anche qui le scelte sono molte, oltre all'immancabile [http://www.midnight-commander.org/ MC] (articolo e-zine [http://e-zine.debianizzati.org/web-zine/numero_2/?page=80 guida a MC] che ritengo indispensabile ma un po' difficoltoso nell'uso comune ho preferito per qualcosa di nuovo come PCManFM, anche se su molte macchine avevo già presente l'ottimo Dolphin ho voluto dare una chance a qualcosa di minimale che richiede poco spazio su disco.<br />
<br />
# aptitude install pcmanfm<br />
<br />
[[immagine:Openbox16.jpg|380px| center]]<br />
<br />
Se all'avvio non sono presenti le icone occorre installare alcuni pacchetti opzionali come ''lxde-icon-theme'' e ''tangerine-icon-theme''.<br />
<br />
Una scorciatoia utile è la combinazione di tasti ''Ctrl+h'' che permette di visualizzare file e cartelle nascosti, il resto delle opzioni sono disponibili nel menù sulla barra superiore della finestra.<br />
<br />
==Notifiche==<br />
Per avere le notifiche sul desktop è necessario installare ''libnotify4''.<br />
<br />
Questo pacchetto contiene la libreria condivisa. Per vedere realmente le notifiche è necessario installare il pacchetto ''notification-daemon'' oppure ''notify-osd'', ''plasma-widgets-workspace'', ''xfce4-notifyd'' o dunst.<br />
# aptitude install libnotify4<br />
<br />
A seconda della configurazione appariranno sul desktop le notifiche.<br />
<br />
==Editor di testo avanzato (IDE)==<br />
Su una macchina dove era installato solo Openbox mi sono trovato a dover utilizzare un editor di testo per i file di configurazione, sono abituato ad avere anche KDE4 e così solitamente la scelta ricadeva sull'ottimo ''kate'', ma su una macchina «naked» questo comporta l'installazione di molte dipendenze quasi al pari di un KDE4 di base.<br />
<br />
Per chi vuole un buon editor grafico impegnando il minor spazio su hard disk consiglio [http://www.geany.org/ Geany], [http://mooedit.sourceforge.net/ medit] o altrimenti mcedit che fa parte di MC.<br />
<br />
==Gestione file compressi==<br />
A volte, dato che non ricordo bene tutti i comandi da shell per scompattare un file, mi torna utile una comoda interfaccia per gestire i file compressi.<br />
<br />
Per chi ha già installato KDE è possibile utilizzare ''ark'' , altrimenti è possibile usare ''file-roller'' o ''xarchiver''.<br />
<br />
Per gli amanti del terminale il sempre valido ''MC'' ha già quello che serve, nel menù in basso alla pressione di '''F2'''.<br />
<br />
==Screenshot==<br />
Fare un'istantanea del desktop è un'operazione piuttosto comune per un utente, l'applicazione di default che risponde alla pressione del tasto Stamp è configurata all'interno del file rc.xml (circa riga 335) ed è ''gnome-screenshot''.<br />
<br />
Per chi non l'ha o vuole altro la scelta ricade sull'ottimo ''scrot'', il cui uso è molto semplice.<br />
<br />
# aptitude install scrot<br />
<br />
modificando la voce di default e inserendo:<br />
<br />
scrot -d 5<br />
<br />
si farà uno screenshot con un ritardo di 5 secondi e l'immagine verrà salvata nella nostra Home.<br />
<br />
Il comando per scattare foto alla sola finestra che ha il focus:<br />
$ scrot -d 3 -u -b<br />
<br />
per ulteriori informazioni consultare il manuale<br />
$ man scrot<br />
<br />
==Configurazione della rete==<br />
Ho sempre odiato i network manager, perché spesso dipendono dall'ambiente usato o anche perché spesso soffrono di bug che ne compromettono il buon funzionamento.<br />
<br />
Su tutte le Debian installate su PC fissi ho sempre preferito la configurazione manuale attraverso il file ''/etc/network/interfaces'', in questo modo una macchina sempre connessa allo stesso tipo di rete non soffrirà di alcun problema.<br />
<br />
Per gestire reti diverse sul portatile mi affido da parecchi anni a ''switchconf'', in questo modo posso gestire la rete in modo indipendente dal DE o dal WM presente, posso lavorare anche senza X perché basta una shell.<br />
<br />
Grazie anche all'aiuto degli [http://e-zine.debianizzati.org/web-zine/numero_3/?page=68/ alias] e [http://guide.debianizzati.org/index.php/Configurare_SUDO_per_gestire_le_attività_degli_amministratori/ sudo] posso abilitare il wifi con i tasti funzione '''fn+F2''' e lanciare il comando che ho come alias Bash che richiama la configurazione alla rete a cui voglio connettermi. <br />
<br />
[http://e-zine.debianizzati.org/web-zine/numero_2/?page=60/ Guida a switchconf].<br />
<br />
==Conky==<br />
Per terminare, un piccolo abbellimento al desktop; siccome non posso usare il mio superkaramba ho dirottato le mie preferenze su ''conky''.<br />
<br />
A prima vista appare un po' complicato ma dopo aver appreso come funziona, la sintassi dei comandi non è poi così difficile.<br />
<br />
Come per [[superkaramba]] sono andato in rete ( [http://gnome-look.org/ gnomelook] ) alla ricerca di qualcosa che mi piacesse e ho trovato [http://gnome-look.org/content/show.php/conky_7-2cores?content=150600/ 150600-conky7-2cores] che ho poi adattato alle mie esigenze.<br />
<br />
Dalla versione scaricata ho inserito qualche informazione in più sulla CPU (temperatura e frequenze), mentre per gli hard disk ho inserito oltre alla temperatura la partizione dati che uso.<br />
<br />
Qui per ottenere alcuni output è indispensabile avere [[hddtemp]] e [[lm-sensors]].<br />
<br />
Non poteva poi mancare una visualizzazione dello stato della batteria con livello di carica e percentuale dello stato, sia numerico che su barra.<br />
[[immagine:Openbox18.jpg|180px| center]]<br />
Per chi volesse provare questa configurazione modificata questo è il link [https://dl.dropbox.com/u/3251342/programmi/conky/mm-conky.tar.gz/ mm-conky-notebook].<br />
<br />
== Riferimenti ==<br />
* [http://openbox.org/wiki/Main_Page Wiki ufficiale di Openbox]<br />
<br />
* I manuali dei vari applicativi <br />
<br />
----<br />
{{Autori<br />
|Autore = [[Utente:Ernestus|Ernestus]] 15:20, 3 mar 2011 (CET)<br />
|Estesa_da =<br />
:[[Utente:Mm-barabba|Mm-barabba]]<br />
|Verificata_da=<br />
: [[Utente:Mm-barabba|Mm-barabba]]<br />
|Numero_revisori = 1<br />
}}<br />
<br />
[[Categoria: Openbox]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Openbox&diff=29479Openbox2012-09-13T22:49:04Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
<br />
= Introduzione =<br />
[http://openbox.org/ Openbox] è un gestore di finestre leggerissimo e altamente personalizzabile, adatto ai computer con hardware limitato.<br />
Può essere utilizzato al posto di Metacity, il window manager di Gnome, di Kwin, quello di KDE, ma è anche possibile avviare una sessione Openbox.<br />
<br />
=Installazione=<br />
Per installare Openbox e i suoi tool di configurazione occore da terminale eseguire il seguente comando.<br />
<pre># aptitude install openbox obconf obmenu</pre><br />
Adesso è possibile utilizzare Openbox e lo si può avviare direttamente da riga comando, oppure attraverso un Display Manager.<br />
<br />
=Login=<br />
== Login Testuale ==<br />
Se è installato l'ambiente grafico, è necessario rimuovere il gestore di accessi installato nel vostro sistema:<br />
<pre># aptitude remove GDM </pre><br />
sostituendo ''GDM'' con il nome del proprio, quindi ''GDM3'', ''KDM'', ''XDM'', ''Slim'', ecc.<br />
<br />
Dopodiché bisogna creare, nella propria Home, il file <code>.xinitrc</code>, inserendo il seguente comando:<br />
<pre>exec openbox-session</pre><br />
La procedura può essere rapidamente effettuata da terminale:<br />
<pre>$ echo "exec openbox-session" > ~/.xinitrc </pre><br />
Uscire quindi dall'eventuale sessione di <code>Xorg</code> in corso, spostarsi nella <code>tty1</code> con <code>Ctrl-Alt-F1</code> ed effettuare il login inserendo il vostro nome utente e la password; effettuare quindi il login come root e spegnere il Display Manager con:<br />
<pre># invoke-rc.d GDM stop</pre><br />
sostituendo ''GDM'' con il nome del proprio, quindi ''GDM3'', ''KDM'', ''XDM'', ''Slim'', ecc.<br />
Digitare '''exit''' per tornare al prompt del proprio utente e avviare il server grafico col comando:<br />
<pre>$ startx</pre><br />
X andrà a leggere l'istruzione creata nel file <code>.xinitrc</code> e avvierà la sessione Openbox.<br />
<br />
== Login Grafico ==<br />
Se avete già un Display Manager, come GDM o KDM, vi basterà scegliere dal menù a tendina, la voce "Openbox" ed effettuare il login.<br />
<br />
= Configurazione =<br />
Lo stupore di molti al primo avvio è comune, l'ambiente si presenta con uno sfondo grigio e nessuna icona o barra presente, con la tipica scorciatoia Alt+F2 non appare alcuna finestra per l'esecuzione dei programmi, l'unica opzione possibile è il pulsante destro del mouse.<br />
<br />
La comparsa di un piccolo menù ci aprirà la strada verso l'inizio di questa avventura.<br />
<br />
[[immagine:Openbox.jpg|320px| center]]<br />
<br />
La configurazione di Openbox è basata principalmente (ma non solo) su due file: menu.xml e rc.xml, all'inizio non saranno presenti e verrà utilizzata una configurazione predefinita presente in ''/etc/xdg/openbox'', per poterli modificare occorre eseguire le due applicazioni '''obconf''' e '''obmeu''' oppure copiarli nella propria ''/home/user/.config/openbox'' e modificarli a piacimento.<br />
<br />
==Obconf==<br />
Per modificare rc.xml, uno dei file principali di configurazione, occorre prima crearlo attraverso l'esecuzione di obconf, comando facilmente disponibile nel menù aperto precedentemente.<br />
<br />
Tramite questo file si gestisce il cuore del Window Manager, l'aspetto e la gestione delle finestre, il comportamento del mouse e i temi.<br />
<br />
Attraverso la prima scheda, Tema, possiamo scegliere uno dei tanti temi già disponibili o aggiungerne di nuovi.<br />
[[immagine:Openbox1.jpg|380px| center]]<br />
<br />
La seconda scheda, Aspetto, ci permette di configurare l'ordine dei bottoni e i caratteri utilizzati per la barra del titolo.<br />
[[immagine:Openbox2.jpg|380px| center]]<br />
<br />
La terza scheda, Finestre, si occupa del posizionamento delle finestre e il loro comportamento all'apertura.<br />
[[immagine:Openbox3.jpg|380px| center]]<br />
<br />
La quarta scheda, Move & Resize, è dedicata allo spostamento e ridimensionamento delle finestre e la loro interazione con il desktop.<br />
[[immagine:Openbox4.jpg|380px| center]]<br />
<br />
La quinta scheda, Mouse, definisce le azioni del mouse sulle finestre e la personalizzazione del doppio click sulla barra del titolo.<br />
[[immagine:Openbox5.jpg|380px| center]]<br />
<br />
La sesta scheda, Desktop, consente di definire il numero e il nome delle aree di lavoro disponibili.<br />
[[immagine:Openbox6.jpg|380px| center]]<br />
<br />
La settima scheda, Margini, regola lo spessore dei bordi del desktop, ovvero la distanza tra il margine dello schermo e una finestra.<br />
[[immagine:Openbox7.jpg|380px| center]]<br />
<br />
L'ottava e ultima scheda, Dock, non l'ho usata perché non ho ancora provato a inserire dockapps; gestisce la posizione e il comportamento dell'area dedicata a ospitare queste piccole applicazioni.<br />
[[immagine:Openbox8.jpg|380px| center]]<br />
<br />
Dopo aver apportato anche una sola modifica a queste opzioni ci troveremo il file ''rc.xml''.<br />
<br />
Purtroppo Obconf non è fornito di un'utile scheda per configurare le scorciatoie da tastiera, per cui dovremo addentrarci in questo file che a prima vista potrà sembrare complesso, ma basterà scorrerlo per vedere come queste sono impostate.<br />
<br />
Le abbreviazioni per molti tasti funzione sono:<br />
C = Ctrl<br />
S = Shift<br />
A = Alt<br />
W = Super (tasto con logo di sistema operativo estraneo)<br />
<br />
Ad esempio C-A-Left (Ctrl+Alt+freccia sinistra) ci farà muovere tra le aree di lavoro.<br />
<br />
Se abbiamo una finestra aperta, S-A-Left ci farà muovere la finestra che ha il focus attraverso le altre aree di lavoro disponibili.<br />
<br />
Con un po' di pazienza ci si può sbizzarrire personalizzando al massimo le combinazioni di tasti,<br />
<br />
==Obmenu==<br />
Questa applicazione offre una comoda GUI per gestire il menù che compare alla pressione del pulsante destro del mouse sul desktop.<br />
<br />
L'unico modo per avviarla la prima volta è eseguire il comando da un terminale, dopo sarà possibile inserire la voce direttamente nel menù:<br />
$ obmenu<br />
Dopo l'esecuzione avremo il file /home/user/.config/openbox/menu.xml che, volendo, potremo modificare anche tramite il nostro editor di testi preferito.<br />
<br />
[[immagine:Openbox9.jpg|380px| center]]<br />
<br />
<br />
{{ Box | incompleto| Parte da terminare }}<br />
<br />
== Il file <code>autostart.sh</code> ==<br />
Creiamo il file <code>autostart.sh</code> che definisce le applicazioni da lanciare all'avvio di Openbox<br />
<pre>$ touch ~/.config/openbox/autostart.sh</pre><br />
Rendiamolo avviabile:<br />
<pre>$ chmod 700 ~/.config/openbox/autostart.sh</pre><br />
Adesso inseriamo il seguente codice:<br />
<br />
<pre># Run the system-wide support stuff<br />
. $GLOBALAUTOSTART<br />
<br />
# Programmi da eseguire all'avvio<br />
feh [OPZIONE] [FILE]<br />
xcompmgr [OPZIONI] &<br />
<br />
# Programmi da eseguire dopo che Openbox si avvia<br />
(sleep [sec] && tint2) & </pre><br />
<br />
{{Box | Il comando "sleep"|<pre>(sleep [N] && comando)</pre> esegue "comando" dopo N secondi.}}<br />
<br />
{{Box | Gestore di connessioni|Se avete un gestore di connessioni internet, aggiungete nella sezione "Programmi da eseguire all'avvio":<br />
* <pre>nm-applet &</pre> in caso di Newtork manager<br />
* <pre>wicd-daemon &</pre> se avete Wicd.}}<br />
<br />
{{ Warningbox | Se dovete aggiungere qualche altro programma, ricordatevi di appendere "&" al comando, che avvierà l'applicazione in background, altrimenti Openbox sarà inutilizzabile finché non terminerà quel determinato processo.}}<br />
<br />
=== Esempio di <code>autostart.sh</code> ===<br />
<pre># Run the system-wide support stuff<br />
. $GLOBALAUTOSTART<br />
<br />
# Programmi da eseguire all'avvio<br />
feh --bg-scale /home/ernesto/.bacground/debian.png &<br />
xcompmgr -r 15 -o .63 -l -20 -t -20 -I 0.015 -O 0.02 -D 5 &<br />
<br />
# Programmi da eseguire dopo che Openbox è avviato<br />
(sleep 3 && tint2) & </pre><br />
<br />
==Tips & Trick==<br />
<br />
===Pulsante centrale===<br />
Ci sono alcune funzioni che occorre ricordare sull'uso del mouse in Openbox, oltre all'indispensabile pulsante destro sul desktop abbiamo quello centrale che ci fa muovere tra le varie aree di lavoro disponibili e ci permette di selezionare un'applicazione aperta ovunque si trovi.<br />
<br />
[[immagine:Openbox10.jpg|200px| center]]<br />
<br />
===Bloc-num===<br />
Usando un portatile avere attivo questo programma importa poco, ma per un PC desktop è una cosa da avere.<br />
Sono molti gli utilizzatori de tastierino numerico posto alla destra della nostra tastiera, pertanto si ritiene utile l'installazione di numlockx.<br />
<br />
# aptitude install numlockx<br />
<br />
Xorg richiama ''/etc/X11/Xsession.d/55numlockx'' e in ''/etc/default/numlockx'' è su auto di default, in questo modo la funzione sarà da subito disponibile.<br />
<br />
===alt+tab switch all desktop===<br />
Questa combinazione di tasti è di uso comune ma di default in Openbox non risponde come si vorrebbe, infatti lo switch ruota nelle sole applicazioni del desktop in cui ci si trova.<br />
<br />
Per chi volesse la rotazione tra tutte le applicazioni aperte in tutti i desktop le soluzioni comporta una modifica al file ''rc.xml''.<br />
<br />
Intorno alla riga 273 troverete ''<!-- Keybindings for window switching -->'', qui inseriremo ''<allDesktops>yes</allDesktops>'' come in esempio:<br />
<br />
<!-- Keybindings for window switching --><br />
<keybind key="A-Tab"><br />
<action name="NextWindow"><br />
<allDesktops>yes</allDesktops><br />
<finalactions><br />
<action name="Focus"/><br />
<action name="Raise"/><br />
<action name="Unshade"/><br />
</finalactions><br />
</action><br />
<br />
se si vogliono le sole icone senza il testo aggiungere anche<br />
<br />
<dialog>icons</dialog><br />
<br />
sotto quanto prima inserito.<br />
<br />
===Shutdown & logout===<br />
La voce «exit» predefinita nel menù di Openbox porta al logout, pertanto se si vuole effettuare lo spegnimento della macchina occorre apportare alcune modifiche al sistema.<br />
<br />
Dopo varie ricerche ho trovato tre soluzioni che ora riporterò, nelle quali si fa un uso differente dei comandi.<br />
<br />
Per lo spegnimento è possibile usare ''halt'' oppure ''shutdown -h now'', mentre per il riavvio ''reboot'' o ''shutdown -r now''.<br />
<br />
Per prima cosa serve aver installato sudo <br />
# aptitude install sudo<br />
<br />
e configurarlo con il comando <br />
<br />
# visudo<br />
<br />
si rende necessario attribuire all'utente i permessi adeguati ai comandi ''shutdown'' oppure ''halt'' e ''reboot'', e, a seconda delle necessità anche ''pm-suspend'' e ''pm-hibernate''.<br />
<br />
Aggiungendo:<br />
ALL ALL=NOPASSWD:/sbin/shutdown<br />
permetteremo a chiunque di eseguire lo spegnimento oppure si possono impostare i permessi al solo utente, fate le giuste considerazioni sulla sicurezza ecco un esempio:<br />
<br />
utente ALL=(root) NOPASSWD: /sbin/shutdown<br />
utente ALL=(root) NOPASSWD: /sbin/halt<br />
utente ALL=(root) NOPASSWD: /sbin/reboot<br />
ecc..<br />
<br />
====Altertux====<br />
Oltre alla parte che interessa l'uscita dal sistema potrete trovare al seguente [http://www.altertux.org/www/openbox.html/ link] un'ottima guida su Openbox.<br />
<br />
In questo caso si effettua una semplice modifica al file menu.xml aggiungendo a piacimento le funzioni desiderate.<br />
<item label="Riavvia il sistema"><br />
<action name="Execute"><br />
<execute><br />
sudo reboot<br />
</execute><br />
</action><br />
</item><br />
<item label="Spegni"><br />
<action name="Execute"><br />
<execute><br />
sudo halt<br />
</execute><br />
</action><br />
</item><br />
<br />
====Urukrama ====<br />
Autore di diversi articoli su Openbox e di un'ottima guida propone una semplice GUI [http://urukrama.wordpress.com/openbox-guide/#shutdown/ link]<br />
<br />
Se si vuole un'uscita rapida e semplice con ''GDM'', si può spegnere il pc con l'aiuto di ''gdm-control'', con il seguente comando:<br />
gdm-control --shutdown && openbox --exit<br />
<br />
Per riavviare usare il comando:<br />
<br />
gdm-control --reboot && openbox --exit<br />
<br />
Per sospendere usare la seguente linea:<br />
<br />
gdm-control --suspend<br />
<br />
Se si vuole utilizzare un'interfaccia grafica minimale bisogna aver installato ''gxmessage'':<br />
# aptitude install gxmessage<br />
<br />
A questo punto creiamo uno script con un contenuto simile:<br />
<br />
<pre>#!/bin/bash<br />
<br />
gmessage "Sei sicuro di voler spegnere il computer?" -center -title "Take action" -font "Sans bold 10" -default "Cancel" \<br />
-buttons "_Cancel":1,"_Log out":2,"_Reboot":3,"_Shut down":4 >/dev/null <br />
<br />
case $? in<br />
1) echo "Exit" ;;<br />
2) killall openbox ;;<br />
3) sudo shutdown -r now ;;<br />
4) sudo shutdown -h now ;;<br />
esac</pre><br />
salviamolo dove preferiamo con un nome a piacere (es. oblogout) e associamogli una scorciatoia per la tastiera che lo richiami, nel mio caso userò la combinazione di tasti ''Super+q''.<br />
<pre> <!-- Keybindings for running applications --> <br />
<keybind key="W-q"> <br />
<action name="Execute"> <br />
<startupnotify> <br />
<enabled>true</enabled> <br />
<name>OBlogout</name> <br />
</startupnotify> <br />
<command>/home/barabba/script/oblogout</command> <br />
</action> <br />
</keybind> </pre><br />
ci apparirà così <br />
[[immagine:Openbox19.jpg|380px| center]]<br />
<br />
====CrunchBang style====<br />
La seguente procedura è tratta da [http://toshidex.org/2012/06/27/debian-openbox-e-il-mistico-oblogout// questo articolo].<br />
<br />
Per prima cosa dobbiamo scaricare il file:<br />
<br />
https://github.com/Cloudef/oblogout-fork/zipball/master <br />
<br />
dopo averlo estratto va eseguito con python:<br />
# python ./setup.py install<br />
Se avete errori verificate la presenza di questi pacchetti: ''python-dbus python-imagingpython-distutils-extra''<br />
<br />
il file principale di configurazione si trova in /etc/oblogout.conf:<br />
<br />
<pre># # Ignored if you have a backend --><br />
shutdown = sudo shutdown -h now<br />
restart = sudo reboot<br />
suspend = sudo pm-suspend<br />
hibernate = sudo pm-hibernate<br />
safesuspend = safesuspend<br />
# <--</pre><br />
Per avere le giuste immagini bisogna copiare il tema:<br />
$ cp /usr/local/share/themes/foom ~/.themes<br />
<br />
Ora non ci resta che aggiungere il comando al nostro menù, modificando la voce exit.<br />
[[immagine:Openbox20.jpg|380px| center]]<br />
E questo dovrebbe essere Il risultato:<br />
[[immagine:Openbox20.png|380px| center]]<br />
<br />
=Personalizzazione=<br />
L'installazione di Openbox è minimale e parca di dipendenze, pertanto per poter avere un'eperienza dekstop un pò più accattivante si rende necessaria l'installazione di alcune applicazioni opzionali.<br />
<br />
Di seguito ne verranno elencate alcune.<br />
<br />
==Sfondo (wallpaper)==<br />
Per impostare uno sfondo per il desktop ho trovato tra le tante applicazioni disponibili due programmi: ''feh'' e ''nitrogen''.<br />
<br />
===Feh===<br />
Per installarlo occorre eseguire da terminale:<br />
# aptitude install feh<br />
<br />
feh non è solamente utile per impostare lo sfondo ma è anche un ottimo e leggero visualizzatore di immagini, se successivamente verrà usato un file manager lo troveremo come opzione nell'apertura di file immagine.<br />
<br />
Per configurare lo sfondo, bisogna eseguire da terminale il seguente comando:<br />
$ feh [opzione] /posizione/file/immagine<br />
<br />
le opzioni disponibili sono:<br />
<br />
--bg-center (centra l'immagine)<br />
--bg-fill (centra l'immagine e la ingrandisce)<br />
--bg-scale (scala l'immagine)<br />
--bg-tile (piastrella l'immagine)<br />
<br />
Per caricare uno sfondo predefinito all'avvio di Openbox bisogna inserire il comando con le giuste opzioni all'interno di autostart.sh come da sintassi:<br />
<br />
$ feh [OPZIONE] [FILE]<br />
<br />
===Nitrogen===<br />
Con questa applicazione abbiamo una comoda interfaccia grafica per poter impostare lo sfondo, ma prima di cominciare installiamola:<br />
<br />
# aptitude install nitrogen<br />
<br />
Dato che nitrogen non è presente nel menù, lanciamo il programma da terminale:<br />
<br />
$ nitrogen<br />
<br />
Dalle preferenze scegliamo da quali directory attingere i file immagine e quindi scegliamo con quali opzioni impostare lo sfondo.<br />
<br />
[[immagine:Openbox11.jpg|380px| center]]<br />
<br />
Per caricare lo sfondo all'avvio inserire:<br />
nitrogen --restore &<br />
nel file ''autostart.sh''.<br />
<br />
== Pannello o Barra ==<br />
Openbox non fornisce un pannello per visualizzare le icone delle fineste aperte, lanciatori e system tray; è comunque disponibile un buon assortimento tra i quali [http://code.google.com/p/tint2/ tint2], [http://freshmeat.net/projects/hpanel/ hpanel], [http://freshmeat.net/projects/fspanel/ fspanel], [http://fbpanel.sourceforge.net/ fbpanel] e molti altri.<br />
<br />
Tra questi ho preferito ''lxpanel'' perché mi consente l'uso della rotella del mouse su alcune applicazioni visualizzate all'interno della barra come ad esempio il volume in radiotray oppure in amarok.<br />
<br />
Prendiamo come esempio ''lxpanel'' e lo andiamo a installare:<br />
<pre># aptitude install lxpanel</pre><br />
<br />
[[immagine:Openbox12.jpg| 900px| center]]<br />
<br />
Il primo pulsante a sinistra ci porta un utile menù con diverse applicazioni.<br />
<br />
[[immagine:Openbox17.jpg|200px| center]]<br />
<br />
Usando il pulsante destro del mouse sulla parte a sinistra è possibile eseguire alcune personalizzazioni, come l'aggiunta di applicazioni preferite.<br />
<br />
[[immagine:Openbox13.jpg|380px| center]]<br />
<br />
Usando il pulsante destro del mouse nelle diverse zone del pannello sarà possibile effettuare altre modifiche.<br />
<br />
[[immagine:Openbox14.jpg|380px| center]]<br />
<br />
Per avere il pannello disponibile all'avvio si deve inserire il comando nel file ''autostart.sh''.<br />
<br />
(sleep 3 && lxpanel) &<br />
<br />
in questo caso eseguita con 3 secondi di ritardo.<br />
<br />
==Terminale ==<br />
Tra i tanti disponibili ho scelto ''lxterminal'', l'installazione richiede anche poche dipendenze:<br />
# aptitude install lxterminal<br />
[[immagine:Openbox15.jpg|380px| center]]<br />
<br />
Per poter eseguire ''lxterminal'' dal menù di Openbox ho modificato ''obmenu'' inserendo<br />
<br />
lxterminal --geometry=139x50<br />
<br />
alla voce ''terminal emulator''.<br />
<br />
Per avere le giuste dimensioni occorre prima ridimensionare la finestra di lxterminal e segnarsi dato che compare a monitor, le dimensioni preferite.<br />
<br />
Oppure usando questo comando:<br />
$ xwininfo | grep geometry <br />
e quindi cliccare sulla finestra<br />
<br />
Alcuni tasti scorciatoia assolutamente indispensabili per l'uso di ''lxterminal'':<br />
Crtl+Shift+t = apre una nuova scheda<br />
Ctrl+pgup/pgdown per muoversi tra le schede aperte<br />
<br />
Per poter usare al meglio MC ho disabilitato l'uso di F10 a lxterminal, flag opzionale nelle impostazioni.<br />
<br />
Sempre nelle impostazioni è possibile selezionare la trasparenza.<br />
<br />
== Composite Manager ==<br />
Possiamo arricchire il nostro desktop con qualche effetto anche su macchine con scarsa dotazione hardware video.<br />
<br />
Un leggero ma valido gestore di compositing è xcompmgr, che può impostare trasparenza e altri effetti sulle finestre.<br />
<br />
# aptitude install xcompmrg<br />
<br />
Le opzioni disponibili sono consultabili nel manuale:<br />
<br />
$ man xcompmgr<br />
<br />
Per poterlo avere all'avvio va inserito come al solito all'interno del file autostart.sh un comando come in esempio:<br />
<br />
xcompmgr -r 15 -o .63 -l -20 -t -20 -I 0.015 -O 0.02 -D 5 &<br />
<br />
== Gestore di File ==<br />
Anche qui le scelte sono molte, e oltre all'immancabile [http://www.midnight-commander.org/ MC] (articolo e-zine [http://e-zine.debianizzati.org/web-zine/numero_2/?page=80 guida a MC] che ritengo indispensabile ma un po' difficoltoso nell'uso comune ho preferito per qualcosa di nuovo come PCManFM, anche se su molte macchine avevo già presente l'ottimo Dolphin ho voluto dare una chance a qualcosa di minimale che richiede poco spazio su disco.<br />
<br />
# aptitude install pcmanfm<br />
<br />
[[immagine:Openbox16.jpg|380px| center]]<br />
<br />
Se all'avvio non sono presenti le icone occorre installare alcuni pacchetti opzionali come ''lxde-icon-theme'' e ''tangerine-icon-theme''.<br />
<br />
Una scorciatoia utile è la combinazione di tasti ''Ctrl+h'' che permette di visualizzare file e cartelle nascosti, il resto delle opzioni sono disponibili nel menù sulla barra superiore della finestra.<br />
<br />
<br />
==Editor di testo avanzato (IDE)==<br />
Su una macchina dove era installato solo Openbox mi sono trovato a dover utilizzare un editor di testo per i file di configurazione, sono abituato ad avere anche KDE4 e così solitamente la scelta ricadeva sull'ottimo ''kate'', ma su una macchina «naked» questo comporta l'installazione di molte dipendenze quasi al pari di un KDE4 di base.<br />
<br />
Per chi vuole un buon editor grafico impegnando il minor spazio su hard disk consiglio [http://www.geany.org/ Geany], [http://mooedit.sourceforge.net/ medit] o altrimenti mcedit che fa parte di MC.<br />
<br />
==Gestione file compressi==<br />
A volte, dato che non ricordo bene tutti i comandi da shell per scompattare un file, mi torna utile una comoda interfaccia per gestire i file compressi.<br />
<br />
Per chi ha già installato KDE è possibile utilizzare ''ark'' , altrimenti è possibile usare ''file-roller'' o ''xarchiver''.<br />
<br />
Per gli amanti del terminale il sempre valido ''MC'' ha già quello che serve, nel menù in basso alla pressione di '''F2'''.<br />
<br />
==Screenshot==<br />
Fare un'istantanea del desktop è un'operazione piuttosto comune per un utente, l'applicazione di default che risponde alla pressione del tasto Stamp è configurata all'interno del file rc.xml (circa riga 335) ed è ''gnome-screenshot''.<br />
<br />
Per chi non l'ha o vuole altro la scelta ricade sull'ottimo ''scrot'', il cui uso è molto semplice.<br />
<br />
# aptitude install scrot<br />
<br />
modificando la voce di default e inserendo:<br />
<br />
scrot -d 5<br />
<br />
si farà uno screenshot con un ritardo di 5 secondi e l'immagine verrà salvata nella nostra Home.<br />
<br />
Il comando per scattare foto alla sola finestra che ha il focus:<br />
$ scrot -d 3 -u -b<br />
<br />
per ulteriori informazioni consultare il manuale<br />
$ man scrot<br />
<br />
==Configurazione della rete==<br />
Ho sempre odiato i network manager, perché spesso dipendono dall'ambiente usato o anche perché spesso soffrono di bug che ne compromettono il buon funzionamento.<br />
<br />
Su tutte le Debian installate su PC fissi ho sempre preferito la configurazione manuale attraverso il file ''/etc/network/interfaces'', in questo modo una macchina sempre connessa allo stesso tipo di rete non soffrirà di alcun problema.<br />
<br />
Per gestire reti diverse sul portatile mi affido da parecchi anni a ''switchconf'', in questo modo posso gestire la rete in modo indipendente dal DE o dal WM presente, posso lavorare anche senza X perché basta una shell.<br />
<br />
Grazie anche all'aiuto degli [http://e-zine.debianizzati.org/web-zine/numero_3/?page=68/ alias] e [http://guide.debianizzati.org/index.php/Configurare_SUDO_per_gestire_le_attività_degli_amministratori/ sudo] posso abilitare il wifi con i tasti funzione '''fn+F2''' e lanciare il comando che ho come alias Bash che richiama la configurazione alla rete a cui voglio connettermi. <br />
<br />
[http://e-zine.debianizzati.org/web-zine/numero_2/?page=60/ Guida a switchconf].<br />
<br />
==Conky==<br />
Per terminare, un piccolo abbellimento al desktop; siccome non posso usare il mio superkaramba ho dirottato le mie preferenze su ''conky''.<br />
<br />
A prima vista appare un po' complicato ma dopo aver appreso come funziona, la sintassi dei comandi non è poi così difficile.<br />
<br />
Come per [[superkaramba]] sono andato in rete ( [http://gnome-look.org/ gnomelook] ) alla ricerca di qualcosa che mi piacesse e ho trovato [http://gnome-look.org/content/show.php/conky_7-2cores?content=150600/ 150600-conky7-2cores] che ho poi adattato alle mie esigenze.<br />
<br />
Dalla versione scaricata ho inserito qualche informazione in più sulla CPU (temperatura e frequenze), mentre per gli hard disk ho inserito oltre alla temperatura la partizione dati che uso.<br />
<br />
Qui per ottenere alcuni output è indispensabile avere [[hddtemp]] e [[lm-sensors]].<br />
<br />
Non poteva poi mancare una visualizzazione dello stato della batteria con livello di carica e percentuale dello stato, sia numerico che su barra.<br />
[[immagine:Openbox18.jpg|180px| center]]<br />
Per chi volesse provare questa configurazione modificata questo è il link [http://www.mmbarabba.it/kwuppi/wp-content/plugins/download-monitor/download.php?id=46/ mm-conky-notebook].<br />
<br />
== Riferimenti ==<br />
* [http://openbox.org/wiki/Main_Page Wiki ufficiale di Openbox]<br />
<br />
* I manuali dei vari applicativi <br />
<br />
----<br />
{{Autori<br />
|Autore = [[Utente:Ernestus|Ernestus]] 15:20, 3 mar 2011 (CET)<br />
|Estesa_da =<br />
:[[Utente:Mm-barabba|Mm-barabba]]<br />
|Verificata_da=<br />
: [[Utente:Mm-barabba|Mm-barabba]]<br />
|Numero_revisori = 1<br />
}}<br />
<br />
[[Categoria: Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Openbox&diff=29475Openbox2012-09-13T18:38:18Z<p>Skizzhg: proofreading</p>
<hr />
<div>{{Versioni compatibili}}<br />
<br />
= Introduzione =<br />
[http://openbox.org/ Openbox] è un gestore di finestre leggerissimo e altamente personalizzabile, adatto ai computer con hardware limitato.<br />
Può essere utilizzato al posto di Metacity, il window manager di Gnome, di Kwin, quello di KDE, ma è anche possibile avviare una sessione Openbox.<br />
<br />
=Installazione=<br />
Per installare Openbox e i suoi tool di configurazione occore da terminale eseguire il seguente comando.<br />
<pre># aptitude install openbox obconf obmenu</pre><br />
Adesso è possibile utilizzare Openbox e lo si può avviare direttamente da riga comando, oppure attraverso un Display Manager.<br />
<br />
=Login=<br />
== Login Testuale ==<br />
Se è installato l'ambiente grafico, è necessario rimuovere il gestore di accessi installato nel vostro sistema:<br />
<pre># aptitude remove GDM </pre><br />
sostituendo ''GDM'' con il nome del proprio, quindi ''GDM3'', ''KDM'', ''XDM'', ''Slim'', ecc.<br />
<br />
Dopodiché bisogna creare, nella propria Home, il file <code>.xinitrc</code>, inserendo il seguente comando:<br />
<pre>exec openbox-session</pre><br />
La procedura può essere rapidamente effettuata da terminale:<br />
<pre>$ echo "exec openbox-session" > ~/.xinitrc </pre><br />
Uscire quindi dall'eventuale sessione di <code>Xorg</code> in corso, spostarsi nella <code>tty1</code> con <code>Ctrl-Alt-F1</code> ed effettuare il login inserendo il vostro nome utente e la password; effettuare quindi il login come root e spegnere il Display Manager con:<br />
<pre># invoke-rc.d GDM stop</pre><br />
sostituendo ''GDM'' con il nome del proprio, quindi ''GDM3'', ''KDM'', ''XDM'', ''Slim'', ecc.<br />
Digitare '''exit''' per tornare al prompt del proprio utente e avviare il server grafico col comando:<br />
<pre>$ startx</pre><br />
X andrà a leggere l'istruzione creata nel file <code>.xinitrc</code> e avvierà la sessione Openbox.<br />
<br />
== Login Grafico ==<br />
Se avete già un Display Manager, come GDM o KDM, vi basterà scegliere dal menù a tendina, la voce "Openbox" ed effettuare il login.<br />
<br />
= Configurazione =<br />
Lo stupore di molti al primo avvio è comune, l'ambiente si presenta con uno sfondo grigio e nessuna icona o barra presente, con la tipica scorciatoia Alt+F2 non appare alcuna finestra per l'esecuzione dei programmi, l'unica opzione possibile è il pulsante destro del mouse.<br />
<br />
La comparsa di un piccolo menù ci aprirà la strada verso l'inizio di questa avventura.<br />
<br />
[[immagine:Openbox.jpg|320px| center]]<br />
<br />
La configurazione di Openbox è basata principalmente (ma non solo) su due file: menu.xml e rc.xml, all'inizio non saranno presenti e verrà utilizzata una configurazione predefinita presente in ''/etc/xdg/openbox'', per poterli modificare occorre eseguire le due applicazioni '''obconf''' e '''obmeu''' oppure copiarli nella propria ''/home/user/.config/openbox'' e modificarli a piacimento.<br />
<br />
==Obconf==<br />
Per modificare rc.xml, uno dei file principali di configurazione, occorre prima crearlo attraverso l'esecuzione di obconf, comando facilmente disponibile nel menù aperto precedentemente.<br />
<br />
Tramite questo file si gestisce il cuore del Window Manager, l'aspetto e la gestione delle finestre, il comportamento del mouse e i temi.<br />
<br />
Attraverso la prima scheda, Tema, possiamo scegliere uno dei tanti temi già disponibili o aggiungerne di nuovi.<br />
[[immagine:Openbox1.jpg|380px| center]]<br />
<br />
La seconda scheda, Aspetto, ci permette di configurare l'ordine dei bottoni e i caratteri utilizzati per la barra del titolo.<br />
[[immagine:Openbox2.jpg|380px| center]]<br />
<br />
La terza scheda, Finestre, si occupa del posizionamento delle finestre e il loro comportamento all'apertura.<br />
[[immagine:Openbox3.jpg|380px| center]]<br />
<br />
La quarta scheda, Move & Resize, è dedicata allo spostamento e ridimensionamento delle finestre e la loro interazione con il desktop.<br />
[[immagine:Openbox4.jpg|380px| center]]<br />
<br />
La quinta scheda, Mouse, definisce le azioni del mouse sulle finestre e la personalizzazione del doppio click sulla barra del titolo.<br />
[[immagine:Openbox5.jpg|380px| center]]<br />
<br />
La sesta scheda, Desktop, consente di definire il numero e il nome delle aree di lavoro disponibili.<br />
[[immagine:Openbox6.jpg|380px| center]]<br />
<br />
La settima scheda, Margini, regola lo spessore dei bordi del desktop, ovvero la distanza tra il margine dello schermo e una finestra.<br />
[[immagine:Openbox7.jpg|380px| center]]<br />
<br />
L'ottava e ultima scheda, Dock, non l'ho usata perché non ho ancora provato a inserire dockapps; gestisce la posizione e il comportamento dell'area dedicata a ospitare queste piccole applicazioni.<br />
[[immagine:Openbox8.jpg|380px| center]]<br />
<br />
Dopo aver apportato anche una sola modifica a queste opzioni ci troveremo il file ''rc.xml''.<br />
<br />
Purtroppo Obconf non è fornito di un'utile scheda per configurare le scorciatoie da tastiera, per cui dovremo addentrarci in questo file che a prima vista potrà sembrare complesso, ma basterà scorrerlo per vedere come queste sono impostate.<br />
<br />
Le abbreviazioni per molti tasti funzione sono:<br />
C = Ctrl<br />
S = Shift<br />
A = Alt<br />
W = Super (tasto con logo di sistema operativo estraneo)<br />
<br />
Ad esempio C-A-Left (Ctrl+Alt+freccia sinistra) ci farà muovere tra le aree di lavoro.<br />
<br />
Se abbiamo una finestra aperta, S-A-Left ci farà muovere la finestra che ha il focus attraverso le altre aree di lavoro disponibili.<br />
<br />
Con un po' di pazienza ci si può sbizzarrire personalizzando al massimo le combinazioni di tasti,<br />
<br />
==Obmenu==<br />
Questa applicazione offre una comoda GUI per gestire il menù che compare alla pressione del pulsante destro del mouse sul desktop.<br />
<br />
L'unico modo per avviarla la prima volta è eseguire il comando da un terminale, dopo sarà possibile inserire la voce direttamente nel menù:<br />
$ obmenu<br />
Dopo l'esecuzione avremo il file /home/user/.config/openbox/menu.xml che, volendo, potremo modificare anche tramite il nostro editor di testi preferito.<br />
<br />
[[immagine:Openbox9.jpg|380px| center]]<br />
<br />
<br />
{{ Box | incompleto| Parte da terminare }}<br />
<br />
== Il file <code>autostart.sh</code> ==<br />
Creiamo il file <code>autostart.sh</code> che definisce le applicazioni da lanciare all'avvio di Openbox<br />
<pre>$ touch ~/.config/openbox/autostart.sh</pre><br />
Rendiamolo avviabile:<br />
<pre>$ chmod 700 ~/.config/openbox/autostart.sh</pre><br />
Adesso inseriamo il seguente codice:<br />
<br />
<pre># Run the system-wide support stuff<br />
. $GLOBALAUTOSTART<br />
<br />
# Programmi da eseguire all'avvio<br />
feh [OPZIONE] [FILE]<br />
xcompmgr [OPZIONI] &<br />
<br />
# Programmi da eseguire dopo che Openbox si avvia<br />
(sleep [sec] && tint2) & </pre><br />
<br />
{{Box | Il comando "sleep"|<pre>(sleep [N] && comando)</pre> esegue "comando" dopo N secondi.}}<br />
<br />
{{Box | Gestore di connessioni|Se avete un gestore di connessioni internet, aggiungete nella sezione "Programmi da eseguire all'avvio":<br />
* <pre>nm-applet &</pre> in caso di Newtork manager<br />
* <pre>wicd-daemon &</pre> se avete Wicd.}}<br />
<br />
{{ Warningbox | Se dovete aggiungere qualche altro programma, ricordatevi di appendere "&" al comando, che avvierà l'applicazione in background, altrimenti Openbox sarà inutilizzabile finché non terminerà quel determinato processo.}}<br />
<br />
=== Esempio di <code>autostart.sh</code> ===<br />
<pre># Run the system-wide support stuff<br />
. $GLOBALAUTOSTART<br />
<br />
# Programmi da eseguire all'avvio<br />
feh --bg-scale /home/ernesto/.bacground/debian.png &<br />
xcompmgr -r 15 -o .63 -l -20 -t -20 -I 0.015 -O 0.02 -D 5 &<br />
<br />
# Programmi da eseguire dopo che Openbox è avviato<br />
(sleep 3 && tint2) & </pre><br />
<br />
==Tips & Trick==<br />
<br />
===Pulsante centrale===<br />
Ci sono alcune funzioni che occorre ricordare sull'uso del mouse in Openbox, oltre all'indispensabile pulsante destro sul desktop abbiamo quello centrale che ci fa muovere tra le varie aree di lavoro disponibili e ci permette di selezionare un'applicazione aperta ovunque si trovi.<br />
<br />
[[immagine:Openbox10.jpg|200px| center]]<br />
<br />
===Bloc-num===<br />
Usando un portatile avere attivo questo programma importa poco, ma per un PC desktop è una cosa da avere.<br />
Sono molti gli utilizzatori de tastierino numerico posto alla destra della nostra tastiera, pertanto si ritiene utile l'installazione di numlockx.<br />
<br />
# aptitude install numlockx<br />
<br />
Xorg richiama ''/etc/X11/Xsession.d/55numlockx'' e in ''/etc/default/numlockx'' è su auto di default, in questo modo la funzione sarà da subito disponibile.<br />
<br />
===alt+tab switch all desktop===<br />
Questa combinazione di tasti è di uso comune ma di default in Openbox non risponde come si vorrebbe, infatti lo switch ruota nelle sole applicazioni del desktop in cui ci si trova.<br />
<br />
Per chi volesse la rotazione tra tutte le applicazioni aperte in tutti i desktop le soluzioni comporta una modifica al file ''rc.xml''.<br />
<br />
Intorno alla riga 273 troverete ''<!-- Keybindings for window switching -->'', qui inseriremo ''<allDesktops>yes</allDesktops>'' come in esempio:<br />
<br />
<!-- Keybindings for window switching --><br />
<keybind key="A-Tab"><br />
<action name="NextWindow"><br />
<allDesktops>yes</allDesktops><br />
<finalactions><br />
<action name="Focus"/><br />
<action name="Raise"/><br />
<action name="Unshade"/><br />
</finalactions><br />
</action><br />
<br />
se si vogliono le sole icone senza il testo aggiungere anche<br />
<br />
<dialog>icons</dialog><br />
<br />
sotto quanto prima inserito.<br />
<br />
===Shutdown & logout===<br />
La voce «exit» predefinita nel menù di Openbox porta al logout, pertanto se si vuole effettuare lo spegnimento della macchina occorre apportare alcune modifiche al sistema.<br />
<br />
Dopo varie ricerche ho trovato tre soluzioni che ora riporterò, nelle quali si fa un uso differente dei comandi.<br />
<br />
Per lo spegnimento è possibile usare ''halt'' oppure ''shutdown -h now'', mentre per il riavvio ''reboot'' o ''shutdown -r now''.<br />
<br />
Per prima cosa serve aver installato sudo <br />
# aptitude install sudo<br />
<br />
e configurarlo con il comando <br />
<br />
# visudo<br />
<br />
si rende necessario attribuire all'utente i permessi adeguati ai comandi ''shutdown'' oppure ''halt'' e ''reboot'', e, a seconda delle necessità anche ''pm-suspend'' e ''pm-hibernate''.<br />
<br />
Aggiungendo:<br />
ALL ALL=NOPASSWD:/sbin/shutdown<br />
permetteremo a chiunque di eseguire lo spegnimento oppure si possono impostare i permessi al solo utente, fate le giuste considerazioni sulla sicurezza ecco un esempio:<br />
<br />
utente ALL=(root) NOPASSWD: /sbin/shutdown<br />
utente ALL=(root) NOPASSWD: /sbin/halt<br />
utente ALL=(root) NOPASSWD: /sbin/reboot<br />
ecc..<br />
<br />
====Altertux====<br />
Oltre alla parte che interessa l'uscita dal sistema potrete trovare al seguente [http://www.altertux.org/www/openbox.html/ link] un'ottima guida su Openbox.<br />
<br />
In questo caso si effettua una semplice modifica al file menu.xml aggiungendo a piacimento le funzioni desiderate.<br />
<item label="Riavvia il sistema"><br />
<action name="Execute"><br />
<execute><br />
sudo reboot<br />
</execute><br />
</action><br />
</item><br />
<item label="Spegni"><br />
<action name="Execute"><br />
<execute><br />
sudo halt<br />
</execute><br />
</action><br />
</item><br />
<br />
====Urukrama ====<br />
Autore di diversi articoli su Openbox e di un'ottima guida propone una semplice GUI [http://urukrama.wordpress.com/openbox-guide/#shutdown/ link]<br />
<br />
Se si vuole un'uscita rapida e semplice con ''GDM'', si può spegnere il pc con l'aiuto di ''gdm-control'', con il seguente comando:<br />
gdm-control --shutdown && openbox --exit<br />
<br />
Per riavviare usare il comando:<br />
<br />
gdm-control --reboot && openbox --exit<br />
<br />
Per sospendere usare la seguente linea:<br />
<br />
gdm-control –suspend<br />
<br />
Se si vuole utilizzare un'interfaccia grafica minimale bisogna aver installato ''gxmessage'':<br />
# aptitude install gxmessage<br />
<br />
A questo punto creiamo uno script con un contenuto simile:<br />
<br />
<pre>#!/bin/bash<br />
<br />
gmessage "Sei sicuro di voler spegnere il computer?" -center -title "Take action" -font "Sans bold 10" -default "Cancel" \<br />
-buttons "_Cancel":1,"_Log out":2,"_Reboot":3,"_Shut down":4 >/dev/null <br />
<br />
case $? in<br />
1) echo "Exit" ;;<br />
2) killall openbox ;;<br />
3) sudo shutdown -r now ;;<br />
4) sudo shutdown -h now ;;<br />
esac</pre><br />
salviamolo dove preferiamo con un nome a piacere (es. oblogout) e associamogli una scorciatoia per la tastiera che lo richiami, nel mio caso userò la combinazione di tasti ''Super+q''.<br />
<pre> <!-- Keybindings for running applications --> <br />
<keybind key="W-q"> <br />
<action name="Execute"> <br />
<startupnotify> <br />
<enabled>true</enabled> <br />
<name>OBlogout</name> <br />
</startupnotify> <br />
<command>/home/barabba/script/oblogout</command> <br />
</action> <br />
</keybind> </pre><br />
ci apparirà così <br />
[[immagine:Openbox19.jpg|380px| center]]<br />
<br />
====CrunchBang style====<br />
La seguente procedura è tratta da [http://toshidex.org/2012/06/27/debian-openbox-e-il-mistico-oblogout// questo articolo].<br />
<br />
Per prima cosa dobbiamo scaricare il file:<br />
<br />
https://github.com/Cloudef/oblogout-fork/zipball/master <br />
<br />
dopo averlo estratto va eseguito con python:<br />
# python ./setup.py install<br />
Se avete errori verificate la presenza di questi pacchetti: ''python-dbus python-imagingpython-distutils-extra''<br />
<br />
il file principale di configurazione si trova in /etc/oblogout.conf:<br />
<br />
<pre># # Ignored if you have a backend --><br />
shutdown = sudo shutdown -h now<br />
restart = sudo reboot<br />
suspend = sudo pm-suspend<br />
hibernate = sudo pm-hibernate<br />
safesuspend = safesuspend<br />
# <--</pre><br />
Per avere le giuste immagini bisogna copiare il tema:<br />
$ cp /usr/local/share/themes/foom ~/.themes<br />
<br />
Ora non ci resta che aggiungere il comando al nostro menù, modificando la voce exit.<br />
[[immagine:Openbox20.jpg|380px| center]]<br />
E questo dovrebbe essere Il risultato:<br />
[[immagine:Openbox20.png|380px| center]]<br />
<br />
=Personalizzazione=<br />
L'installazione di Openbox è minimale e parca di dipendenze, pertanto per poter avere un'eperienza dekstop un pò più accattivante si rende necessaria l'installazione di alcune applicazioni opzionali.<br />
<br />
Di seguito ne verranno elencate alcune.<br />
<br />
==Sfondo (wallpaper)==<br />
Per impostare uno sfondo per il desktop ho trovato tra le tante applicazioni disponibili due programmi: ''feh'' e ''nitrogen''.<br />
<br />
===Feh===<br />
Per installarlo occorre eseguire da terminale:<br />
# aptitude install feh<br />
<br />
feh non è solamente utile per impostare lo sfondo ma è anche un ottimo e leggero visualizzatore di immagini, se successivamente verrà usato un file manager lo troveremo come opzione nell'apertura di file immagine.<br />
<br />
Per configurare lo sfondo, bisogna eseguire da terminale il seguente comando:<br />
$ feh [opzione] /posizione/file/immagine<br />
<br />
le opzioni disponibili sono:<br />
<br />
--bg-center (centra l'immagine)<br />
--bg-fill (centra l'immagine e la ingrandisce)<br />
--bg-scale (scala l'immagine)<br />
--bg-tile (piastrella l'immagine)<br />
<br />
Per caricare uno sfondo predefinito all'avvio di Openbox bisogna inserire il comando con le giuste opzioni all'interno di autostart.sh come da sintassi:<br />
<br />
$ feh [OPZIONE] [FILE]<br />
<br />
===Nitrogen===<br />
Con questa applicazione abbiamo una comoda interfaccia grafica per poter impostare lo sfondo, ma prima di cominciare installiamola:<br />
<br />
# aptitude install nitrogen<br />
<br />
Dato che nitrogen non è presente nel menù, lanciamo il programma da terminale:<br />
<br />
$ nitrogen<br />
<br />
Dalle preferenze scegliamo da quali directory attingere i file immagine e quindi scegliamo con quali opzioni impostare lo sfondo.<br />
<br />
[[immagine:Openbox11.jpg|380px| center]]<br />
<br />
Per caricare lo sfondo all'avvio inserire:<br />
nitrogen --restore &<br />
nel file ''autostart.sh''.<br />
<br />
== Pannello o Barra ==<br />
Openbox non fornisce un pannello per visualizzare le icone delle fineste aperte, lanciatori e system tray; è comunque disponibile un buon assortimento tra i quali [http://code.google.com/p/tint2/ tint2], [http://freshmeat.net/projects/hpanel/ hpanel], [http://freshmeat.net/projects/fspanel/ fspanel], [http://fbpanel.sourceforge.net/ fbpanel] e molti altri.<br />
<br />
Tra questi ho preferito ''lxpanel'' perché mi consente l'uso della rotella del mouse su alcune applicazioni visualizzate all'interno della barra come ad esempio il volume in radiotray oppure in amarok.<br />
<br />
Prendiamo come esempio ''lxpanel'' e lo andiamo a installare:<br />
<pre># aptitude install lxpanel</pre><br />
<br />
[[immagine:Openbox12.jpg| 900px| center]]<br />
<br />
Il primo pulsante a sinistra ci porta un utile menù con diverse applicazioni.<br />
<br />
[[immagine:Openbox17.jpg|200px| center]]<br />
<br />
Usando il pulsante destro del mouse sulla parte a sinistra è possibile eseguire alcune personalizzazioni, come l'aggiunta di applicazioni preferite.<br />
<br />
[[immagine:Openbox13.jpg|380px| center]]<br />
<br />
Usando il pulsante destro del mouse nelle diverse zone del pannello sarà possibile effettuare altre modifiche.<br />
<br />
[[immagine:Openbox14.jpg|380px| center]]<br />
<br />
Per avere il pannello disponibile all'avvio si deve inserire il comando nel file ''autostart.sh''.<br />
<br />
(sleep 3 && lxpanel) &<br />
<br />
in questo caso eseguita con 3 secondi di ritardo.<br />
<br />
==Terminale ==<br />
Tra i tanti disponibili ho scelto ''lxterminal'', l'installazione richiede anche poche dipendenze:<br />
# aptitude install lxterminal<br />
[[immagine:Openbox15.jpg|380px| center]]<br />
<br />
Per poter eseguire ''lxterminal'' dal menù di Openbox ho modificato ''obmenu'' inserendo<br />
<br />
lxterminal --geometry=139x50<br />
<br />
alla voce ''terminal emulator''.<br />
<br />
Per avere le giuste dimensioni occorre prima ridimensionare la finestra di lxterminal e segnarsi dato che compare a monitor, le dimensioni preferite.<br />
<br />
Oppure usando questo comando:<br />
$ xwininfo | grep geometry <br />
e quindi cliccare sulla finestra<br />
<br />
Alcuni tasti scorciatoia assolutamente indispensabili per l'uso di ''lxterminal'':<br />
Crtl+Shift+t = apre una nuova scheda<br />
Ctrl+pgup/pgdown per muoversi tra le schede aperte<br />
<br />
Per poter usare al meglio MC ho disabilitato l'uso di F10 a lxterminal, flag opzionale nelle impostazioni.<br />
<br />
Sempre nelle impostazioni è possibile selezionare la trasparenza.<br />
<br />
== Composite Manager ==<br />
Possiamo arricchire il nostro desktop con qualche effetto anche su macchine con scarsa dotazione hardware video.<br />
<br />
Un leggero ma valido gestore di compositing è xcompmgr, che può impostare trasparenza e altri effetti sulle finestre.<br />
<br />
# aptitude install xcompmrg<br />
<br />
Le opzioni disponibili sono consultabili nel manuale:<br />
<br />
$ man xcompmgr<br />
<br />
Per poterlo avere all'avvio va inserito come al solito all'interno del file autostart.sh un comando come in esempio:<br />
<br />
xcompmgr -r 15 -o .63 -l -20 -t -20 -I 0.015 -O 0.02 -D 5 &<br />
<br />
== Gestore di File ==<br />
Anche qui le scelte sono molte, e oltre all'immancabile [http://www.midnight-commander.org/ MC] (articolo e-zine [http://e-zine.debianizzati.org/web-zine/numero_2/?page=80 guida a MC] che ritengo indispensabile ma un po' difficoltoso nell'uso comune ho preferito per qualcosa di nuovo come PCManFM, anche se su molte macchine avevo già presente l'ottimo Dolphin ho voluto dare una chance a qualcosa di minimale che richiede poco spazio su disco.<br />
<br />
# aptitude install pcmanfm<br />
<br />
[[immagine:Openbox16.jpg|380px| center]]<br />
<br />
Se all'avvio non sono presenti le icone occorre installare alcuni pacchetti opzionali come ''lxde-icon-theme'' e ''tangerine-icon-theme''.<br />
<br />
Una scorciatoia utile è la combinazione di tasti ''Ctrl+h'' che permette di visualizzare file e cartelle nascosti, il resto delle opzioni sono disponibili nel menù sulla barra superiore della finestra.<br />
<br />
<br />
==Editor di testo avanzato (IDE)==<br />
Su una macchina dove era installato solo Openbox mi sono trovato a dover utilizzare un editor di testo per i file di configurazione, sono abituato ad avere anche KDE4 e così solitamente la scelta ricadeva sull'ottimo ''kate'', ma su una macchina «naked» questo comporta l'installazione di molte dipendenze quasi al pari di un KDE4 di base.<br />
<br />
Per chi vuole un buon editor grafico impegnando il minor spazio su hard disk consiglio [http://www.geany.org/ Geany], [http://mooedit.sourceforge.net/ medit] o altrimenti mcedit che fa parte di MC.<br />
<br />
==Gestione file compressi==<br />
A volte, dato che non ricordo bene tutti i comandi da shell per scompattare un file, mi torna utile una comoda interfaccia per gestire i file compressi.<br />
<br />
Per chi ha già installato KDE è possibile utilizzare ''ark'' , altrimenti è possibile usare ''file-roller'' o ''xarchiver''.<br />
<br />
Per gli amanti del terminale il sempre valido ''MC'' ha già quello che serve, nel menù in basso alla pressione di '''F2'''.<br />
<br />
==Screenshot==<br />
Fare un'istantanea del desktop è un'operazione piuttosto comune per un utente, l'applicazione di default che risponde alla pressione del tasto Stamp è configurata all'interno del file rc.xml (circa riga 335) ed è ''gnome-screenshot''.<br />
<br />
Per chi non l'ha o vuole altro la scelta ricade sull'ottimo ''scrot'', il cui uso è molto semplice.<br />
<br />
# aptitude install scrot<br />
<br />
modificando la voce di default e inserendo:<br />
<br />
scrot -d 5<br />
<br />
si farà uno screenshot con un ritardo di 5 secondi e l'immagine verrà salvata nella nostra Home.<br />
<br />
Il comando per scattare foto alla sola finestra che ha il focus:<br />
$ scrot -d 3 -u -b<br />
<br />
per ulteriori informazioni consultare il manuale<br />
$ man scrot<br />
<br />
==Configurazione della rete==<br />
Ho sempre odiato i network manager, perché spesso dipendono dall'ambiente usato o anche perché spesso soffrono di bug che ne compromettono il buon funzionamento.<br />
<br />
Su tutte le Debian installate su PC fissi ho sempre preferito la configurazione manuale attraverso il file ''/etc/network/interfaces'', in questo modo una macchina sempre connessa allo stesso tipo di rete non soffrirà di alcun problema.<br />
<br />
Per gestire reti diverse sul portatile mi affido da parecchi anni a ''switchconf'', in questo modo posso gestire la rete in modo indipendente dal DE o dal WM presente, posso lavorare anche senza X perché basta una shell.<br />
<br />
Grazie anche all'aiuto degli [http://e-zine.debianizzati.org/web-zine/numero_3/?page=68/ alias] e [http://guide.debianizzati.org/index.php/Configurare_SUDO_per_gestire_le_attività_degli_amministratori/ sudo] posso abilitare il wifi con i tasti funzione '''fn+F2''' e lanciare il comando che ho come alias Bash che richiama la configurazione alla rete a cui voglio connettermi. <br />
<br />
[http://e-zine.debianizzati.org/web-zine/numero_2/?page=60/ Guida a switchconf].<br />
<br />
==Conky==<br />
Per terminare, un piccolo abbellimento al desktop; siccome non posso usare il mio superkaramba ho dirottato le mie preferenze su ''conky''.<br />
<br />
A prima vista appare un po' complicato ma dopo aver appreso come funziona, la sintassi dei comandi non è poi così difficile.<br />
<br />
Come per [[superkaramba]] sono andato in rete ( [http://gnome-look.org/ gnomelook] ) alla ricerca di qualcosa che mi piacesse e ho trovato [http://gnome-look.org/content/show.php/conky_7-2cores?content=150600/ 150600-conky7-2cores] che ho poi adattato alle mie esigenze.<br />
<br />
Dalla versione scaricata ho inserito qualche informazione in più sulla CPU (temperatura e frequenze), mentre per gli hard disk ho inserito oltre alla temperatura la partizione dati che uso.<br />
<br />
Qui per ottenere alcuni output è indispensabile avere [[hddtemp]] e [[lm-sensors]].<br />
<br />
Non poteva poi mancare una visualizzazione dello stato della batteria con livello di carica e percentuale dello stato, sia numerico che su barra.<br />
[[immagine:Openbox18.jpg|180px| center]]<br />
Per chi volesse provare questa configurazione modificata questo è il link [http://www.mmbarabba.it/kwuppi/wp-content/plugins/download-monitor/download.php?id=46/ mm-conky-notebook].<br />
<br />
== Riferimenti ==<br />
* [http://openbox.org/wiki/Main_Page Wiki ufficiale di Openbox]<br />
<br />
* I manuali dei vari applicativi <br />
<br />
----<br />
{{Autori<br />
|Autore = [[Utente:Ernestus|Ernestus]] 15:20, 3 mar 2011 (CET)<br />
|Estesa_da =<br />
:[[Utente:Mm-barabba|Mm-barabba]]<br />
|Verificata_da=<br />
: [[Utente:Mm-barabba|Mm-barabba]]<br />
|Numero_revisori = 1<br />
}}<br />
<br />
[[Categoria: Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Basi&diff=29282VimCS: Basi2012-08-31T17:18:08Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
= Iniziare a scrivere =<br />
Ci sono vari modi di attivare la modalità inserimento, a seconda delle esigenze e della posizione del cursore.<br />
<br />
a sinistra del cursore - '''i''' <br/><br />
a destra del cursore - '''a''' <br/><br />
a inizio riga - '''I''' <br/><br />
a fine riga - '''A''' <br/><br />
sulla riga sotto il cursore - '''o''' <br/><br />
sulla riga sopra il cursore - '''O''' <br/><br />
<br />
<br />
= Come muoversi =<br />
sposta cursore a sinistra - '''h''' <br/><br />
sposta cursore a destra - '''l''' <br/><br />
sposta cursore su - '''j''' <br/><br />
sposta cursore giù - '''k'''<br />
<br />
sposta cursore avanti all'inizio della parola successiva - '''w''' <br/><br />
sposta cursore indietro all'inizio della parola successiva - '''b'''<br />
<br />
sposta cursore avanti all'inizio della parola successiva ignorando la punteggiatura - '''W''' <br/><br />
sposta cursore indietro all'inizio della parola successiva ignorando la punteggiatura - '''B'''<br />
<br />
sposta cursore tre parole avanti all'inizio della parola - '''3w''' <br/><br />
sposta cursore tre parole indietro all'inizio della parola - '''3b'''<br />
<br />
sposta cursore avanti alla fine della parola - '''e''' <br/><br />
sposta cursore indietro alla fine della parola - '''ge'''<br />
<br />
sposta cursore avanti alla fine della parola successiva ignorando la punteggiatura - '''E''' <br/><br />
sposta cursore indietro alla fine della parola successiva ignorando la punteggiatura - '''gE'''<br />
<br />
sposta cursore tre parole avanti alla fine - '''3e''' <br/><br />
sposta cursore al primo carattere della riga - '''|''' <br/><br />
sposta cursore al terzo carattere della riga - '''3|''' <br/><br />
sposta cursore al primo carattere non bianco - '''^'''<br />
<br />
sposta cursore ad inizio riga - '''0''' <br/><br />
sposta cursore a fine riga - '''$'''<br />
<br />
sposta cursore una pagina avanti - '''Ctrl-f''' (oppure '''Ctrl-d''') <br/><br />
sposta cursore una pagina indietro - '''Ctrl-b''' (oppure '''Ctrl-u''')<br />
<br />
sposta cursore avanti ad inizio frase - ''')''' <br/><br />
sposta cursore indietro ad inizio frase - '''('''<br />
<br />
sposta cursore su ad inizio paragrafo - '''{''' <br/><br />
sposta cursore giù a fine paragrafo - '''}'''<br />
<br />
sposta cursore a inizio documento - '''gg''' (oppure '''[[''') <br/><br />
sposta cursore a fine documento - '''G''' (oppure ''']]''') <br/><br />
sposta cursore alla riga 33 - '''33 G''' (oppure ''':33''')<br />
<br />
sposta cursore alla prima riga dello schermo - '''H''' <br/><br />
sposta cursore all'ultima riga dello schermo - '''L''' <br/><br />
sposta cursore alla riga al centro dello schermo - '''M''' <br/><br />
sposta cursore alla terza riga dello schermo - '''3H''' <br/><br />
sposta cursore alla terzultima riga dello schermo - '''3L'''<br />
<br />
sposta il cursore sulla parentesi corrispondente ad una chiusa o aperta - '''%'''<br />
<br />
sposta il cursore alla parola successiva uguale a quella attuale - '''*'''<br />
<br />
sposta il cursore alla parola precedente uguale a quella attuale - '''#'''<br />
<br />
mostra il nome del file, la quantità di righe e la posizione in cui è il cursore - '''Ctrl-g'''<br />
<br />
<br />
Spostandosi da un punto all'altro del documento, Vim ricorda gli ultimi due; paragonando questo<br />
comportamento a bash, si pensi ai comandi <code>cd</code> e <code>cd -</code> : <br/><br />
: torna alla posizione precedente - '''Ctrl-o''' <br/><br />
: vai alla posizione successiva - '''Ctrl-i'''<br />
<br />
Se invece volessimo una specie di segnalibro per tornare ad un punto preciso: <br/><br />
: '''m''' (seguito dal carattere)<br />
<br />
e quindi tornarvi in qualsiasi momento: <br/><br />
: ' (seguito dal carattere)<br />
<br />
<br />
I comandi disponibili sono moltissimi, ecco cosa dice il saggio vimgor, il bot del canale IRC, in proposito: <br/><br />
<skizzhg> vimgor: movement <br/><br />
<vimgor> In normal mode, all of these keys can move the cursor: ` # $ % ^ * ( ) 0 _ - + w W e E t T I o O { } [[ [] ][ ]] [m [M ]m ]M [( ]) [{ ]} | A f F ge gE gg G g0 g^ g$ g, g; gj gk gI h H j k l L ; ' z. z<CR> z- zz zt zb b B n N M , / ? <C-b> <C-d> <C-e> <C-f> <C-h> <C-i> <C-o> <C-t> <C-u> <C-y> - learn to use all of them<br />
<br />
<br />
= Salvare il documento =<br />
salva file già esistente - ''':w''' <br/><br />
salva file non esistente - ''':w nome_file'''<br />
<br />
salva più file aperti, che siano buffer o tab - ''':wa''' <br/><br />
salva con altro nome, fa una copia mantendendo l'originale - ''':sav nome_file'''<br />
<br />
<br />
= Uscire da Vim =<br />
esce - ''':q''' <br/><br />
esce da tutti, che siano buffer o tab - ''':qa''' <br/><br />
salva ed esce - ''':wq''' <br/><br />
salva solo se sono state fatte modifiche ed esce - ''':x''' (oppure '''ZZ''') <br/><br />
salva tutti, che siano buffer o tab - ''':wa''' <br/><br />
esce senza salvare - ''':q!''' (oppure '''ZQ''')<br />
<br />
mappa la sequenza di tasti <code>ZW</code> per salvare senza chiudere: <br/><br />
: ''':map ZW :w<cr>'''</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Basi&diff=29281VimCS: Basi2012-08-31T17:11:18Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
= Iniziare a scrivere =<br />
Ci sono vari modi di attivare la modalità inserimento, a seconda delle esigenze e della posizione del cursore.<br />
<br />
a sinistra del cursore - '''i''' <br/><br />
a destra del cursore - '''a''' <br/><br />
a inizio riga - '''I''' <br/><br />
a fine riga - '''A''' <br/><br />
sulla riga sotto il cursore - '''o''' <br/><br />
sulla riga sopra il cursore - '''O''' <br/><br />
<br />
<br />
= Come muoversi =<br />
sposta cursore a sinistra - '''h''' <br/><br />
sposta cursore a destra - '''l''' <br/><br />
sposta cursore su - '''j''' <br/><br />
sposta cursore giù - '''k'''<br />
<br />
sposta cursore avanti all'inizio della parola successiva - '''w''' <br/><br />
sposta cursore indietro all'inizio della parola successiva - '''b'''<br />
<br />
sposta cursore avanti all'inizio della parola successiva ignorando la punteggiatura - '''W''' <br/><br />
sposta cursore indietro all'inizio della parola successiva ignorando la punteggiatura - '''B'''<br />
<br />
sposta cursore tre parole avanti all'inizio della parola - '''3w''' <br/><br />
sposta cursore tre parole indietro all'inizio della parola - '''3b'''<br />
<br />
sposta cursore avanti alla fine della parola - '''e''' <br/><br />
sposta cursore indietro alla fine della parola - '''ge'''<br />
<br />
sposta cursore avanti alla fine della parola successiva ignorando la punteggiatura - '''E''' <br/><br />
sposta cursore indietro alla fine della parola successiva ignorando la punteggiatura - '''gE'''<br />
<br />
sposta cursore tre parole avanti alla fine - '''3e''' <br/><br />
sposta cursore al primo carattere della riga - '''|''' <br/><br />
sposta cursore al terzo carattere della riga - '''3|''' <br/><br />
sposta cursore al primo carattere non bianco - '''^'''<br />
<br />
sposta cursore ad inizio riga - '''0''' <br/><br />
sposta cursore a fine riga - '''$'''<br />
<br />
sposta cursore una pagina avanti - '''Ctrl-f''' (oppure '''Ctrl-d''') <br/><br />
sposta cursore una pagina indietro - '''Ctrl-b''' (oppure '''Ctrl-u''')<br />
<br />
sposta cursore avanti ad inizio frase - ''')''' <br/><br />
sposta cursore indietro ad inizio frase - '''('''<br />
<br />
sposta cursore su ad inizio paragrafo - '''{''' <br/><br />
sposta cursore giù a fine paragrafo - '''}'''<br />
<br />
sposta cursore a inizio documento - '''gg''' (oppure '''[[''') <br/><br />
sposta cursore a fine documento - '''G''' (oppure ''']]''') <br/><br />
sposta cursore alla riga 33 - '''33 G''' (oppure ''':33''')<br />
<br />
sposta cursore alla prima riga dello schermo - '''H''' <br/><br />
sposta cursore all'ultima riga dello schermo - '''L''' <br/><br />
sposta cursore alla riga al centro dello schermo - '''M''' <br/><br />
sposta cursore alla terza riga dello schermo - '''3H''' <br/><br />
sposta cursore alla terzultima riga dello schermo - '''3L'''<br />
<br />
sposta il cursore sulla parentesi corrispondente ad una chiusa o aperta - '''%'''<br />
<br />
sposta il cursore alla successiva parola uguale a quella attuale - '''Ctrl-*'''<br />
<br />
mostra il nome del file, la quantità di righe e la posizione in cui è il cursore - '''Ctrl-g'''<br />
<br />
<br />
Spostandosi da un punto all'altro del documento, Vim ricorda gli ultimi due; paragonando questo<br />
comportamento a bash, si pensi ai comandi <code>cd</code> e <code>cd -</code> : <br/><br />
: torna alla posizione precedente - '''Ctrl-o''' <br/><br />
: vai alla posizione successiva - '''Ctrl-i'''<br />
<br />
Se invece volessimo una specie di segnalibro per tornare ad un punto preciso: <br/><br />
: '''m''' (seguito dal carattere)<br />
<br />
e quindi tornarvi in qualsiasi momento: <br/><br />
: ' (seguito dal carattere)<br />
<br />
<br />
I comandi disponibili sono moltissimi, ecco cosa dice il saggio vimgor, il bot del canale IRC, in proposito: <br/><br />
<skizzhg> vimgor: movement <br/><br />
<vimgor> In normal mode, all of these keys can move the cursor: ` # $ % ^ * ( ) 0 _ - + w W e E t T I o O { } [[ [] ][ ]] [m [M ]m ]M [( ]) [{ ]} | A f F ge gE gg G g0 g^ g$ g, g; gj gk gI h H j k l L ; ' z. z<CR> z- zz zt zb b B n N M , / ? <C-b> <C-d> <C-e> <C-f> <C-h> <C-i> <C-o> <C-t> <C-u> <C-y> - learn to use all of them<br />
<br />
<br />
= Salvare il documento =<br />
salva file già esistente - ''':w''' <br/><br />
salva file non esistente - ''':w nome_file'''<br />
<br />
salva più file aperti, che siano buffer o tab - ''':wa''' <br/><br />
salva con altro nome, fa una copia mantendendo l'originale - ''':sav nome_file'''<br />
<br />
<br />
= Uscire da Vim =<br />
esce - ''':q''' <br/><br />
esce da tutti, che siano buffer o tab - ''':qa''' <br/><br />
salva ed esce - ''':wq''' <br/><br />
salva solo se sono state fatte modifiche ed esce - ''':x''' (oppure '''ZZ''') <br/><br />
salva tutti, che siano buffer o tab - ''':wa''' <br/><br />
esce senza salvare - ''':q!''' (oppure '''ZQ''')<br />
<br />
mappa la sequenza di tasti <code>ZW</code> per salvare senza chiudere: <br/><br />
: ''':map ZW :w<cr>'''</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Fluxbox,_un_Window_Manager_per_Computer_con_poche_risorse&diff=29255Fluxbox, un Window Manager per Computer con poche risorse2012-08-23T14:52:46Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
<br />
==Introduzione==<br />
Questa guida mostra come installare il Window Manager Fluxbox su un PC in cui sia stata fatta un'installazione base di Debian, senza server grafico X. Fluxbox è un Window Manager leggero, che consuma poche risorse di sistema e che può dare nuova vita a macchine obsolete<br />
<br />
==Installazione==<br />
Come al solito in Debian l'installazione consta di pochi comandi:<br />
<pre><br />
# aptitude install xorg fluxbox<br />
</pre><br />
<br />
==Programmi utili==<br />
Sebbene Fluxbox e il nostro server grafico X siano già funzionanti, abbiamo bisogno ancora di alcuni programmi, prima di poter utilizzare con profitto il nostro nuovo Window Manager:<br />
<br />
# aptitude install xterm feh<br />
<br />
Per apprendere come aggiungere programmi al menù di Fluxbox vedere la sezione apposita più avanti.<br />
<br />
==Avvio di Fluxbox==<br />
Notare che in questa installazione di Fluxbox non è stato installato alcun Login Manager; pertanto sarà necessario effettuare il login in maniera testuale da shell e poi avviare Fluxbox.<br/><br />
<br />
Prima di poterlo fare, però, è necessario creare il file di avvio per <code>startx</code>:<br />
<br />
$ echo "exec startfluxbox" > ~/.xinitrc<br />
<br />
Se preferite, è possibile installare un Login Manager come <code>xdm, gdm, kdm</code>.<br/><br />
<br />
L'avvio di fluxbox dal gestore di login avviene andando a leggere il file '''<code>/usr/share/xsessions/fluxbox.desktop</code>''' il cui contenuto è il seguente:<br />
<br />
<pre><br />
[Desktop Entry]<br />
Name=Fluxbox<br />
Comment=Highly configurable and low resource X11 Window manager<br />
Exec=/usr/bin/startfluxbox<br />
Terminal=false<br />
TryExec=/usr/bin/startfluxbox<br />
Type=Application<br />
<br />
[X-Window Manager]<br />
SessionManaged=true<br />
</pre><br />
<br />
==Abbellimento del Desktop==<br />
Prima di installare altre applicazioni ci dedicheremo a rendere più gradevole l'ambiente di lavoro, installando:<br />
<br />
# aptitude install conky<br />
<br />
Per fare in modo che conky appaia sul desktop di Fluxbox è necessario creare il suo file di configurazione:<br />
<br />
$ conky -C > $HOME/.conkyrc<br />
<br />
modificando poi al suo interno la linea '''own_window yes''' in '''own_window no'''<br />
<br />
Per avere conky che si avvia insieme a Fluxbox modificate invece il file:<br />
<br />
$ nano $HOME/.fluxbox/startup<br />
<br />
aggiungendo la linea<br />
<br />
conky &<br />
<br />
'''prima''' della linea<br />
<br />
exec /usr/bin/fluxbox<br />
<br />
che deve essere sempre l'ultima.<br />
<br />
==Software per vecchi Laptop==<br />
Installiamo adesso alcuni software leggeri, adatti per notebook non proprio giovanissimi:<br />
<br />
# aptitude install wifi-radar cpufreqd<br />
<br />
Quindi avviamo il demone appena installato:<br />
<br />
# /etc/init.d/cpufreqd start<br />
<br />
Se il demone non partisse, occorre caricare il corretto modulo:<br />
<br />
* AMD Sempron/Athlon/MP ( K7 )<br />
<br />
# modprobe powernow-k7<br />
<br />
* AMD Duron/Sempron/Athlon/Opteron 64 ( K8 )<br />
<br />
# modprobe powernow-k8<br />
<br />
* Intel Core Duo and Intel Pentium M<br />
<br />
# modprobe speedstep-centrino<br />
<br />
* Intel Pentium IV<br />
<br />
# modprobe acpi-cpufreq<br />
<br />
==Software applicativo==<br />
# aptitude install iceweasel icedove centericq htop vim gftp abiword gnumeric<br />
<br />
==Dove trovare i temi GTK==<br />
È possibile ottenere i temi GTK da [http://xfce-look.org/index.php?xcontentmode=100 xfce-look.org],<br />
[http://gnome-look.org/index.php?xcontentmode=100 gnome-look.org], [http://browse.deviantart.com/?qh=&section=&q=GTK+theme deviantart.com]<br />
<br />
Per installare i temi c'è solo bisogno di decomprimere questi file in <code>~/.themes</code>. Quindi:<br />
<br />
<pre><br />
$ mkdir ~/.themes<br />
$ cd ~/.themes<br />
$ tar -zxvf theme-name-here.tar.gz<br />
$ tar -jxvf theme-name-here.tar.bz2<br />
</pre><br />
<br />
Alcuni temi sono installabili anche via <code>aptitude</code>:<br />
<br />
# aptitude install gtk2-engines-pixbuf<br />
<br />
oppure<br />
<br />
# aptitude install gtk2-engines-*<br />
<br />
Per utilizzare i temi scaricati, basta installare:<br />
<br />
# aptitude install gtk-theme-switch<br />
<br />
oppure<br />
<br />
# aptitude install gtk-chtheme<br />
<br />
==Il menù di Fluxbox==<br />
Il file di configurazione del menù di fluxbox di default è <code>~/.fluxbox/menu</code>. <br/><br />
<br />
Il file ha una struttura molto elementare. Di seguito è riportato uno stralcio del file di configurazione del menù di default su debian (/etc/X11/fluxbox/fluxbox-menu):<br />
<br />
<pre><br />
[begin] (Fluxbox)<br />
# Automatically generated file. Do not edit (see /usr/share/doc/menu/html/index.html)<br />
[submenu] (Aiuto) {}<br />
[exec] (Debian Reference) {/usr/bin/debian-reference} <br />
[exec] (Info) { x-terminal-emulator -T "Info" -e info} <br />
[exec] (Xman) {xman} <br />
[end]<br />
[submenu] (Applicazioni) {}<br />
[submenu] (Editor) {}<br />
[exec] (Nano) { x-terminal-emulator -T "Nano" -e /bin/nano} <br />
[end]<br />
[submenu] (Emulatori di terminale) {}<br />
[exec] (XTerm) {xterm} <br />
[exec] (XTerm (Unicode\)) {uxterm} <br />
[end]<br />
[submenu] (Grafica) {}<br />
[exec] (X Window Snapshot) {xwd | xwud} <br />
[end]<br />
[submenu] (Navigazione web) {}<br />
[exec] (w3m) { x-terminal-emulator -T "w3m" -e /usr/bin/w3m /usr/share/doc/w3m/MANUAL.html} <br />
[end]<br />
[end] <br />
</pre><br />
<br />
Le principali caratteristiche di questo file di testo sono:<br />
# Ogni riga ha una sintassi molto intuitiva e semplice;<br />
# L'indentatura del codice permette di "immaginarsi" il risultato finale.<br />
# Ogni riga ha una sintassi di questo tipo:<br />
<br />
<pre><br />
[tag] (label o nome del file) {comando o nomefile}<br />
</pre><br />
<br />
L'indentatura del file è una caratteristica molto importante che semplfica l'operazione di generazione del menù e della sua successiva modifica, perciò è bene mantenere questa struttura gerarchica ogni volta che si mette mano al menù.<br />
<br />
===Sintassi generica delle righe del file ===<br />
Ciascuna riga del file di configurazione del menù di fluxbox ha una struttura di questo tipo:<br />
[tag] (label o nome del file) {comando o nomefile}<br />
<br />
Perciò a ciascuna coppia di parentesi corrisponde un significato ben preciso e questo aiuta molto a far risparmiare tempo in fase di modifica del file. <br/><br />
<br />
Il menù inizia sempre con una riga di codice simile alla seguente:<br />
[begin] (Titolo_menù)<br />
<br />
il tag <code>[begin]</code> deve essere presente nel file, altrimenti fluxbox cerca il file di configurazione di default del sistema, mentre (Titolo_menù) può essere omesso. Titolo_menù è il testo che verrà visualizzato in cima al menù di fluxbox. <br/><br />
<br />
Per la chiusura del menù viene utilizzata il tag <code>[end]</code>. Questo può essere utilizzato sia per chiudere un menù che un sottomenù. In ogni menù deve essere presente un tag <code>[end]</code> per ogni tag <code>[submenu]</code> più uno che comunque è presente e che corrisponde al tag <code>[begin]</code>. Quindi un menù ha la seguente struttura:<br />
<pre><br />
[begin] (Titolo Menu)<br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
Per creare un sottomenù nel menù principale si usa il tag <code>[submenu]</code>. Ogni sottomenù viene chiuso dal tag <code>[end]</code>. Il tag <code>[submenu]</code> deve essere seguito dagli attributi (label) e . Il secondo attributo è opzionale e se omesso viene assunto uguale a (label). Riassumendo un sottomenù avrà il seguente aspetto:<br />
<pre><br />
[submenu] (label) <br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
dove tra <code>[submenu]</code> e <code>[end]</code> vengono incluse tutte le voci del menù. <br/><br />
<br />
Dal momento che fluxbox legge i menù in maniera ricorsiva non c'è limite al numero di sottomenù che possono essere annidati, vi consiglio però di non esagerare per non complicare troppo la ricerca di una applicazione.<br />
<br />
===Elemento del menù (Eseguibili)===<br />
Per popolare ciascun menù di voci che corrispondono all'esecuzione di un programma si utilizza la seguente istruzione:<br />
[exec] (label) {command}<br />
<br />
A questa riga viene associata nel menù una voce che viene chiamata "label" e che esegue il comando "command".<br />
<br />
===Elemento del menù (file e directory)===<br />
Per inserire il collegamento ad un file o ad una directory all'interno del menù di fluxbox si usa la seguente riga:<br />
[include] (nome_file_o_dir)<br />
<br />
===Separatore===<br />
A volte, per aumentare la chiarezza del menù può essere utile inserire un separatore. Questo può essere aggiunto inserendo una riga contenente l'istruzione <code>[separator]</code>:<br />
[separator]<br />
<br />
===Istruzioni aggiuntive===<br />
Fluxbox mette a disposizione una serie di istruzioni addizionali per personalizzare ulteriormente il menù. Le principali sono:<br />
* Inserimento di una voce che permette la chiusura e l'uscita da fluxbox<br />
[exit] (label)<br />
<br />
* Inserimento di una voce "estetica nel menù". In altre parole: inserimento di una voce che se selezionata non comporta l'esecuzione di nessun comando. La sintassi è:<br />
[nop] (label)<br />
<br />
se label viene omessa di default viene inserita una voce vuota.<br />
<br />
* Rilettura di tutti i file di configurazione di fluxbox<br />
[reconfig] (label)<br />
<br />
Questa voce è utile per creare nuovi temi e stili e non dover rilanciare fluxbox tutte le volte che è necessario testare il tema.<br />
* Riavvio del solo eseguibile di fluxbox, X e gli eventuali programmi rimarranno in esecuzione<br />
[restart] (label) {command}<br />
<br />
Verrà creata una voce nel menù con il nome "label" e una volta selezionata fluxbox verrà arrestato e all'uscita da fluxbox verrà eseguito il comando "command". Comunemente il comando fornito è quello necessario ad avviare un altro windows manager. Il parametro "command" è opzionale.<br />
* Voce per la configurazione di fluxbox<br />
[config] (label)<br />
<br />
Viene inserita una voce nel menù chiamata "label" che permette di accedere a numerose opzioni di configurazione riguardanti il comportamento delle finestre.<br />
* Directory dei wallpaper<br />
<br />
È possibile inserire una voce all'interno del menù che permetta di cambiare rapidamente lo sfondo di fluxbox attraverso la seguente riga:<br />
[wallpapers] (directory) {command}<br />
<br />
Cliccando su una immagine questa viene immediatamente impostata come sfondo. Ovviamente <code>directory</code> è la directory contenente le immagini.<br />
<br />
==Windowmenu==<br />
Windowmenu è il menù che si ottiene con un click destro del mouse sulla barra del titolo di una finestra, premere il tasto menù sulla barra del titolo, utilizzare il comando '':WindowMenu'' tramite tastiera o anche dal menù delle aree di lavoro. Di default ha opzioni per massimizzare, minimizzare, nascondere la finestra ecc, impostare le finestre su diversi livelli o inviare ad aree di lavoro e ricordare le opzioni delle finestre.<br />
<br />
===Modificare il menù===<br />
Windowmenu è come il rootmenu, eccetto alcune voci speciali che il menù normale non ha, il file di configurazione è ~/.fluxbox/windowmenu.<br />
<br />
Il menù dovrebbe iniziare con [begin] e finire con [end].<br />
<br />
Si possono usare i normali elementi del menù oppure quelli speciali della lista sottostante. Notare che (label) è facoltativo, senza di esso sarà utilizzato quello di default:<br />
<br />
[shade] (label)<br />
Questa opzione riduce la finestra alla sola barra del titolo "arrotolandola".<br />
<br />
Lo stesso effetto cliccando due volte sul titolo, scegliendo "Riduci a barra", utilizzando una scorciatoia da tastiera o la rotellina del mouse (comandi :Shade :ShadeOn :ShadeOff).<br />
<br />
[close] (label)<br />
Chiude la finestra. Proprio come premendo il tasto X nell'angolo.<br />
<br />
[stick] (label)<br />
Rende la finestra appiccicosa, ovvero visibile su tutte le aree di lavoro.<br />
<br />
[maximize] (label)<br />
Massimizza e ripristina la finestra.<br />
<br />
[iconify] (label)<br />
Minimizza (riduce a icona) la finestra.<br />
<br />
[raise] (label)<br />
Solleva la finestra al livello superiore portandola quindi in primo piano.<br />
<br />
[lower] (label)<br />
Porta la finestra al livello inferiore, dietro tutte le altre.<br />
<br />
[sendto] (label)<br />
Mostra il menù "Invia a..." che permette l'invio delle finestre in un'altra area di lavoro.<br />
<br />
[layer] (label)<br />
Mostra il menù "Livello..." che permette all'utente di cambiare facilmente il livello della finestra.<br />
<br />
[extramenus]<br />
Mostra il menù "Ricorda..." per salvare alcune impostazioni della finestra nel file ~/.fluxbox/apps.<br />
<br />
[alpha] (label)<br />
Un sottomenù contenente varie opzioni per la trasparenza della finestra.<br />
<br />
[separator]<br />
Linea di separazione orizzontale, non fa altro che creare una linea divisoria.<br />
<br />
===Esempi===<br />
Questo dovrebbe creare un menù simile a quello di default:<br />
<br />
# ~./fluxbox/windowmenu<br />
[begin]<br />
[shade] (Shade)<br />
[stick] (Stick)<br />
[maximize]<br />
[iconify] (Iconify)<br />
[raise]<br />
[lower]<br />
[sendto]<br />
[layer]<br />
[extramenus]<br />
[separator]<br />
[close] (Close)<br />
[end]<br />
<br />
Questo è un pò differente:<br />
<br />
[begin]<br />
[exec] (terminal) {xterm}<br />
[maximize] (maximize)<br />
[iconify] (minimize)<br />
[submenu] (advanced)<br />
[layer] (layer)<br />
[extramenus] (remember)<br />
[sendto] (send to)<br />
[end]<br />
[separator]<br />
[close] (close)<br />
[end]<br />
<br />
==Applicazioni e accessori aggiuntivi==<br />
Fluxbox non integra un file manager, un emulatore di terminale o altro, perciò si può installare praticamente [http://fluxbox-wiki.org/index.php?title=FAQ#Apps.2C_Window_Managers.2C_Desktop_Managers tutto quel che si vuole].<br />
<br />
--[[Utente:Ferdybassi|Ferdybassi]] 18:11, 10 mar 2010 (CET)<br />
<br />
----<br />
<br />
[[Categoria:Fluxbox]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Varie&diff=29151VimCS: Varie2012-08-08T20:48:57Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
= Differenze =<br />
Una funzione irrinunciabile, controllare le differenze tra due o più file.<br />
<br />
apre una finestra orizzontale diff - ''':diffsplit''' <br/><br />
apre una finestra verticale diff - ''':vert diffsplit''' <br/><br />
aggiorna diff dopo cambiamenti - ''':diffupdate'''<br />
<br />
espande blocco sotto il cursore - '''zo''' <br/><br />
collassa blocco sotto il cursore - '''zc''' <br/><br />
espande tutti i blocchi - '''zr''' <br/><br />
collassa tutti i blocchi - '''zm''' <br/><br />
espande tutti i blocchi e gli eventuali nidificati - '''zR''' <br/><br />
collassa tutti i blocchi e gli eventuali nidificati - '''zM'''<br />
<br />
'''<nowiki>:</nowiki>help :fold'''<br />
<br />
vimdiff è un modo per richiamare vim con l'opzione ''-d'':<br />
$ vimdiff nome_file1 nome_file2<br />
<br />
Un paio di hack per controllare le differenze tra directory:<br />
<pre><br />
$ vimdiff <(ls -R $DIR1) <(ls -R $DIR2)<br />
$ vim -c 'e nome_directory1' -c diffthis -c 'vert split nome_directory2' -c diffthis<br />
</pre><br />
<br />
Apre due tab con il diff di due file in ognuno:<br />
<pre><br />
$ vim -c 'e nome_file1' -c diffthis -c 'vert split nome_file2' -c diffthis -c 'tabnew' \ <br />
-c 'e nome_file3' -c diffthis -c 'vert split nome_file3' -c diffthis<br />
</pre><br />
<br />
<br />
= Creare html =<br />
Converte in html il buffer corrente, mostrandolo in una finestra orrizzontale, il nuovo file avrà lo stesso nome con l'aggiunta dell'estensione .html, ereditando i colori dello schema in uso: <br/><br />
'''<nowiki>:</nowiki>TOhtml'''<br />
<br />
crea un html da linea di comando:<br />
$ ex -X -n -c 'TOhtml' -c 'xa' nome_file > /dev/null 2>&1<br />
<br />
testo scuro su sfondo chiaro:<br />
$ ex -X -n -c 'set background=light' -c 'TOhtml' -c 'xa' nome_file > /dev/null 2>&1<br />
<br />
testo chiaro su sfondo scuro:<br />
$ ex -X -n -c 'set background=dark' -c 'TOhtml' -c 'xa' nome_file > /dev/null 2>&1<br />
<br />
<br />
= Cifratura testo =<br />
$ vim -x nome_file<br />
<br />
cifratura senza file swap (più sicuro):<br />
$ vim -x -n nome_file<br />
<br />
Per aprirlo le volte successive non serve l'opzione ''-x'', Vim aggiunge una stringa per il riconoscimento. Per disattivare la cifratura dal file aperto digitare: <br/><br />
<nowiki>:</nowiki>set key= <br/><br />
<br />
ovvero omettendo un valore, per riattivarla si usa invece: <br/><br />
'''<nowiki>:</nowiki>X'''<br />
<br />
La chiave viene sostituita da asterischi altrimenti sarebbe in chiaro (ma non viene memorizzata nella history).<br />
<br />
ROT13 encoding/decoding - '''g?'''<br />
<br />
<br />
= Vim remote =<br />
Vim può funzionare come un server che accetta istruzioni da linea di comando. Aprire un terminale e digitare:<br />
$ vim --servername debianizzati<br />
<br />
Il nome dato è assolutamente arbitrario. <br/><br />
Ora si può aprire un altro terminale che fungerà da client e fare qualche prova.<br />
Passiamo in modalità inserimento e scriviamo qualcosa:<br />
$ vim --servername debianizzati --remote-send 'i La guida su Vim di Debianizzati.org<CR>'<br />
<br />
Torniamo in modalità comando e apriamo un'altra finestra:<br />
$ vim --servername debianizzati --remote-send '<Esc><C-w>s<CR>'<br />
<br />
Salviamo il file e chiudiamo Vim:<br />
$ vim --servername debianizzati --remote-send '<Esc>:w /tmp/debianizzati<CR>:xa<CR>'<br />
<br />
Non sarà comodissimo ma si può fare anche questo :) <br/><br />
Per gli altri comandi leggere l'help. <br/><br />
'''<nowiki>:</nowiki>help --remote'''</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Extra&diff=29150VimCS: Extra2012-08-08T20:47:39Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
Ovviamente uso Vim anche per mutt, in questo modo componendo un nuovo messaggio mi troverò in modalità inserimento, con il cursore sotto gli header dell'email e con la limitazione di 73 caratteri per riga:<br />
vim -f -c 'set tw=73' -c '/^$/' -c 'normal o' -c startinsert<br />
<br />
apre Vim con limite di caratteri per riga (73):<br />
$ vim -c 'set tw=73'<br />
<br />
apre file alla riga 5:<br />
$ vim +5 nome_file<br />
<br />
apre file alla riga 5 in insert mode:<br />
$ vim -c startinsert +5 nome_file<br />
<br />
apre file in insert mode sotto la riga 5:<br />
$ vim -c 'normal o' -c startinsert +5 nome_file<br />
<br />
dato un file di 8 righe, si posiziona sotto l'ultima creandone una nuova:<br />
$ vim +9 -c 'put_ | startinsert' nome_file<br />
<br />
apre file cercando la parola foobar:<br />
$ vim +/foobar nome_file<br />
<br />
apre due file affiancati impostando lo scorrimento simultaneo:<br />
$ vim -c 'windo set scrollbind' -O nome_file1 nome_file2<br />
<br />
apre file cercando corrispondenza della data corrente:<br />
$ vim +/$(date '+%b %e') nome_file<br />
<br />
cambia variabile lingua e cerca data in formato inglese:<br />
$ LANG=C; vim +/$(date '+%b %e') nome_file<br />
<br />
<br />
col cursore su un link scarica e apre sorgente - '''gf'''<br />
<br />
col cursore su un link scarica e apre sorgente in uno split - '''Ctrl-w Ctrl-f'''<br />
<br />
col cursore su una parola apre la manpage corrispondente (ci prova comunque, se non esiste restituisce un errore) - '''K'''<br />
<br />
col cursore su un carattere mostra i valori ASCII, esadecimale e ottale del carattere sotto il cursore - '''ga'''<br />
<br />
crea un file nuovo come DOS invece che Unix, permettendo una formattazione leggibile dal notepad di Windows - ''':set ff=dos'''<br />
<br />
crea un file nuovo con codifica iso-8859-1 - ''':set fenc=latin1'''<br />
<br />
apre un file e ne converte la codifica in iso-8859-1 - ''':e ++enc=latin1'''<br />
<br />
Giacché ":e ++enc=latin1" richiede un file come argomento, per impostarlo da riga di comando si può usare 'set fenc=latin1':<br />
$ vim -c 'set fenc=latin1'<br />
<br />
<br />
= Easter egg =<br />
'''<nowiki>:</nowiki>help 42''' <br/><br />
'''<nowiki>:</nowiki>help!''' <br/><br />
'''<nowiki>:</nowiki>help holy-grail''' <br/><br />
'''<nowiki>:</nowiki>help map-modes''' (see comment below the table about :nunmap) <br/><br />
'''<nowiki>:</nowiki>help UserGettingBored''' <br/><br />
'''<nowiki>:</nowiki>help spoon''' <br/><br />
'''<nowiki>:</nowiki>help showmatch (read the note)''' <br/><br />
'''<nowiki>:</nowiki>Ni!''' <br/><br />
'''<nowiki>:</nowiki>help bar''' <br/><br />
<br />
<br />
= Riferimenti =<br />
Vim ha un help interno strepitoso - ''':help help''' <br/><br />
Durante la consultazione si trovano dei collegamenti ad altri capitoli o pagine racchiusi tra due pipe, per seguirli posizionarvi sopra il cursore e premere '''Ctrl-]'''<br />
<br />
*[http://www.vim.org/ Homepage]<br />
*[http://vim.wikia.com/wiki/Vim_Tips_Wiki Wiki]<br />
*[http://www.pluto.it/files/ildp/traduzioni/vimhelp-it/index72.html Help in italiano (non aggiornato)]<br />
*[http://www.siforge.org/articles/2003/12/15-guida_vim.html Guida introduttiva] in italiano, semplice e completa</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Configurazione&diff=29149VimCS: Configurazione2012-08-08T20:46:05Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
= Configurazione =<br />
Personalmente utilizzo una statusbar ben configurata, ma a qualcuno piace avere i numeri delle righe alla sinistra del testo: <br/><br />
visualizza numeri riga - ''':set number''' <br/><br />
rimuove visualizzazione - ''':set nonumber'''<br />
<br />
C'è anche chi vuole il mouse. <br/><br />
abilita uso del mouse - ''':set mouse=a''' <br/><br />
disabilita - ''':set mouse='''<br />
<br />
L'unica vera comodità che trovo è nel poter ridimensionare facilmente le finestre ma di contro ha che il cursore viene spostato quando si clicca in un punto dello schermo, ed è un comportamento che detesto.<br />
<br />
<br />
== .vimrc ==<br />
Il file di configurazione è una cosa molto personale, citando vimgor: <br/><br />
<skizzhg> vimgor, :kill_kittens <br/><br />
<vimgor> The Command that Cannot Be Named. :kill_kittens is what will happen if you use someone else's vimrc.<br />
<br />
Voglio però riportare alcuni stralci del mio, in particolare: <br/><br />
* la statusbar che fornisce molte informazioni sul documento<br />
<br />
'''set laststatus=2''' <br/><br />
'''set statusline=(%n)\ %F\ [%{strlen(&fenc)?&fenc:'none'},%{&ff}]%h%m%r%y%=%c,%l/%L\ %P'''<br />
<br />
(fonte: [http://got-ravings.blogspot.com/2008/08/vim-pr0n-making-statuslines-that-own.html Vim statusline])<br />
<br />
<br />
* la visualizzazione dei comandi parziali, se stiamo per digitare ''ZZ'' per chiudere Vim, verrà<br />
mostrata la prima ''Z'', in caso ci fossimo sbagliati basterà usare ''Esc''<br />
<br />
'''set showcmd'''<br />
<br />
<br />
* la gestione dei buffer, ci sono vari plugin più o meno comodi o invasivi, ho preferito creare delle semplici scorciatoie<br />
<br />
questo è indispensabile per muoversi tra uno e l'altro senza doverlo prima salvare<br />
<br />
'''set hidden'''<br />
<br />
<br />
la mappatura dei tasti, <Leader> è il backslash <br/><br />
* L: elenca i buffer aperti e aspetta un numero per selezionarne uno<br />
* l: li elenca soltanto<br />
* b: passa al precedente<br />
* f: passa al successivo<br />
* g: alterna tra l'attuale e il precedente, stesso comportamento di Ctrl-^<br />
* D: rimuove un buffer dalla lista<br />
* numeri: passaggio dal buffer 1 al 10<br />
<br />
'''nnoremap <Leader>L :ls<CR>:buffer<Space> <br/><br />
'''nnoremap <Leader>l :ls<CR>''' <br/><br />
'''nnoremap <Leader>b :bp<CR>''' <br/><br />
'''nnoremap <Leader>f :bn<CR>''' <br/><br />
'''nnoremap <Leader>g :e#<CR>''' <br/><br />
'''nnoremap <Leader>D :bd<CR>''' <br/><br />
'''nnoremap <Leader>1 :1b<CR>''' <br/><br />
'''nnoremap <Leader>2 :2b<CR>''' <br/><br />
'''nnoremap <Leader>3 :3b<CR>''' <br/><br />
'''nnoremap <Leader>4 :4b<CR>''' <br/><br />
'''nnoremap <Leader>5 :5b<CR>''' <br/><br />
'''nnoremap <Leader>6 :6b<CR>''' <br/><br />
'''nnoremap <Leader>7 :7b<CR>''' <br/><br />
'''nnoremap <Leader>8 :8b<CR>''' <br/><br />
'''nnoremap <Leader>9 :9b<CR>''' <br/><br />
'''nnoremap <Leader>0 :10b<CR>'''<br />
<br />
<br />
* per la creazione di file html non include i numeri delle righe, se impostati, e usa la formattazione per mezzo di regole css al posto dei tag e attributi di formattazione pesanti e ormai deprecati <br/><br />
'''let html_number_lines=0''' <br/><br />
'''let html_use_css=1'''<br />
<br />
<br />
== .vim/ ==<br />
Normalmente il file di configurazione e quello della cronologia risiedono nella home, mentre tutti gli eventuali plugin e documentazione, schema colori e altro vanno nella directory <code>.vim/</code> con una struttura simile a <code>/usr/share/vim/vimcurrent/</code>. <br/><br />
Per coerenza e ordine si farà in modo che i file <code>.viminfo</code> e <code>.vimrc</code> vengano spostati nella directory <code>.vim/</code> insieme a tutto il resto.<br />
<br />
Per <code>.viminfo</code>, aggiungere la seguente riga in <code>.vimrc</code>:<br />
set viminfo='55,<55,s11,:99,h,n~/.vim/viminfo<br />
<br />
<br />
I parametri con le relative spiegazioni si trovano nell'help: <br/><br />
'''<nowiki>:</nowiki>help 'viminfo''''<br />
<br />
Per .vimrc inserire la seguente variabile in bash_profile (o .profile):<br />
export VIMINIT="source $HOME/.vim/vimrc"<br />
<br />
Per ulteriori informazioni vedere: <br/><br />
'''<nowiki>:</nowiki>help VIMINIT'''<br />
<br />
<br />
== Gerarchia della directory <code>.vim/</code> ==<br />
<code>.vim/colors</code>: dove risiedono gli eventuali schemi colore aggiunti.<br />
<br />
Visualizza lo schema in uso - ''':colorscheme'''<br />
<br />
<br />
<code>.vim/doc</code>: la documentazione dei plugin.<br />
<br />
Per far sì che Vim riconosca i cambiamenti, usare il comando: <br/><br />
'''<nowiki>:</nowiki>helptags <code>.vim/doc/</code>'''<br />
<br />
Per ulteriori informazioni vedere: <br/><br />
'''<nowiki>:</nowiki>help :helptags'''<br />
<br />
<br />
<code>.vim/plugin</code>: i plugin aggiunti<br />
<br />
Per ulteriori informazioni vedere: <br/><br />
'''<nowiki>:</nowiki>help plugin'''<br />
<br />
Visualizza tutti i plugin, temi e altro caricati - ''':scriptnames'''<br />
<br />
<br />
<code>.vim/ftdetect</code>: dove ho inserito il menu di gvim, che è ampiamente customizzabile, per evitare che gli aggiornamenti sovrascrivano l'originale in <code>$VIMRUNTIME/menu.vim</code>; in realtà ftdetect servirebbe per la sintassi dei tipi di file ma pare l'unico modo per farglielo vedere.<br />
<br />
Per ulteriori informazioni vedere: <br/><br />
'''<nowiki>:</nowiki>echo $VIMRUNTIME''' <br/><br />
'''<nowiki>:</nowiki>help ftdetect''' <br/><br />
'''<nowiki>:</nowiki>help menu.vim'''<br />
<br />
<br />
<code>lessvim</code>: lo script che utilizza vim in modalità less e richiama <code>$VIMRUNTIME/macros/less.vim</code>. <br/><br />
Tengo entrambi i file in home per via di alcune modifiche, un alias bash fa il resto: <br/><br />
alias less='$HOME/.vim/lessvim'<br />
<br />
Lo scopo è avere <code>less</code> con gli stessi vantaggi di Vim, sebbene in certe occasioni non funzioni a dovere, una volta dentro premere il tasto '''h''' per l'help.<br />
<br />
La panoramica è ovviamente parziale e riguarda le mie modeste esigenze.</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Editing&diff=29142VimCS: Editing2012-08-07T09:21:48Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
== Sostituzione ==<br />
entra in modalità sostituzione - '''R''' <br/><br />
sostituisce singolo carattere e torna in modalità comando - '''r''' (seguito dal carattere)<br />
<br />
maiuscole in minuscole e viceversa - '''~''' <br/><br />
tutta la riga minuscola - '''guu''' (oppure '''vu''') <br/><br />
solo una parola minuscola - '''vEu''' <br/><br />
tutta la riga maiuscola - '''gUU''' (oppure '''VU''') <br/><br />
solo una parola maiuscola - '''vEU''' <br/><br />
inverte maiuscole e minuscole di una parola - '''vE~''' <br/><br />
inverte maiuscole e minuscole di una riga - '''g~~''' <br/><br />
intero file minuscolo - '''ggguG''' <br/><br />
intero file maiuscolo - '''gggUG'''<br />
<br />
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo/''' <br/><br />
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/><br />
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/><br />
sostituzione in tutto il documento - ''':%s/vecchio/nuovo/g''' <br/><br />
<br />
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''<br />
<br />
elimina le terminazioni di riga in stile DOS, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/><br />
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>Ctrl-v</code> e <code>Ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/><br />
'''<nowiki>:</nowiki>%s/^M//g'''<br />
<br />
<br />
dato un file con tante righe nella forma di ''foo bar baz <nowiki>http://bla</nowiki>'',<br />
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:<br />
'''<nowiki>:</nowiki>%s/^.\{-}\zehttp//g'''<br />
<br />
<br />
data una riga nella forma '11. foo' sostituisce il punto con un tab<br />
'''<nowiki>:</nowiki>s/\(^[0-9]\+\)\. /\1\t/'''<br />
<br />
<br />
cancella tutto ciò che c'è dopo le virgolette<br />
'''<nowiki>:</nowiki>%s/".*//'''<br />
<br />
<br />
cancella spazi non voluti a fine riga (trailing whitespace); <br />
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:<br />
'''<nowiki>:</nowiki>%s/\s\+$//'''<br />
<br />
cerca soltanto:<br />
'''/\s\+$'''<br />
<br />
<br />
seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata<br />
'''Ctrl-v I # <esc>'''<br />
<br />
'''<nowiki>:</nowiki>help v_b_I'''<br />
<br />
<br />
manda a capo in corrispondenza di ogni tag <br><br />
'''<nowiki>:g,<br>,s,<br>,<br>\r,g</nowiki>'''<br />
<br />
<br />
in una riga con molteplici 'foo' sostituisce solo il secondo<br />
'''<nowiki>:</nowiki>s/\(.*\)foo/\1bar/'''<br />
<br />
<br />
ordina testo alfabeticamente - ''':sort'''<br />
<br />
elimina righe uguali - ''':sort u'''<br />
<br />
<br />
mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto<br />
'''<nowiki>:</nowiki>3p|45p|180p'''<br />
<br />
<br />
Alcuni semplici esempi di cosa si può fare con ex:<br />
<br />
cancella terza riga di un file<br />
$ ex file.txt <<< $'3d\nw'<br />
cancella righe commentate<br />
$ ex file.txt <<< $'g/^#/d\nw'<br />
<br />
dato un file contenente una sequenza di numeri (uno per riga) cancella tutto tranne 1 e 7<br />
$ printf '%s\n' 1 2 3 4 5 6 7 > file.txt; ex file.txt <<< $'v/[17]/d\nw'<br />
<br />
''v'' è l'opposto di ''g'', come ''grep -v''<br />
<br />
<br />
== Selezione e inserimento ==<br />
Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre. <br/><br />
Come accennato all'inizio, la modalità visuale seleziona il testo. <br />
<br />
inizia selezione - '''v''' <br/><br />
seleziona intera riga - '''V''' <br/><br />
seleziona blocco (per colonne) - '''Ctrl-v''' <br/><br />
seleziona tutto - '''ggVG''' <br/><br />
<br />
<br />
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se<br />
selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre<br />
sopra, basterà premere '''o''' e il cursore si sposterà alla prima riga della selezione corrente quindi<br />
muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/><br />
'''Vjok'''<br />
<br />
<br />
Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio. <br/><br />
Ecco ad esempio come copiare del testo salvandolo in altro file: <br/><br />
'''v''' <br/><br />
'''<nowiki>:</nowiki>'<,'>w nome_file'''<br />
<br />
Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il<br />
cursore: <br/><br />
'''<nowiki>:</nowiki>r nome_file'''<br />
<br />
<br />
Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una shell in una porzione di finestra e lo esegue: <br/><br />
'''<nowiki>:</nowiki>!ls'''<br />
<br />
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/><br />
'''<nowiki>:</nowiki>r !ls'''<br />
<br />
In caso servisse una shell con piena funzionalità: <br/><br />
'''<nowiki>:</nowiki>shell'''<br />
<br />
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)<br />
<br />
<br />
== Indentazione ==<br />
inserisce un'indentazione su riga - ''':>''' <br/><br />
inserisce due indentazioni su riga - ''':>>''' <br/><br />
toglie un'indentazione su riga - :<''' <br/><br />
toglie due indentazioni su riga - ''':<<''' <br/><br />
inserisce un'indentazione su 3 righe - ''':>3''' <br/><br />
inserisce un'indentazione sulla terza riga - ''':3>''' <br/><br />
<br />
inserisce - '''>>'''<br />
toglie - '''<<'''<br />
inserisce su tre righe - '''3>>'''<br />
toglie su tre righe - '''3<<'''<br />
inserisce sulla terza riga partendo da dove è posizionato il cursore - '''2j>>'''<br />
<br />
rimuove indentazione all'intero file - '''gg=G'''<br />
<br />
<br />
== Copia, taglia, incolla, cancella ==<br />
Questo funziona solo all'interno della sessione corrente di Vim. <br/><br />
copia testo selezionato - '''y''' <br/><br />
copia prima parola di una riga - '''yw''' <br/><br />
copia intera riga - '''yy'''<br />
<br />
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/><br />
incolla testo tagliato sopra la riga dove è il cursore - '''P'''<br />
<br />
mette la riga sottostante in coda alla corrente - '''J'''<br />
<br />
<br />
cancella carattere - '''x''' <br/><br />
cancella tre caratteri - '''3x''' <br/><br />
cancella dal cursore all'inizio della parola seguente - '''dw''' <br/><br />
cancella dal cursore alla fine della parola corrente - '''de''' <br/><br />
cancella dal cursore all'inizio della parola corrente - '''db''' <br/><br />
cancella la parola che si trova sotto al cursore - '''daw''' <br/><br />
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - '''caw''' <br/><br />
cancella dal cursore alla fine della riga - '''D''' <br/><br />
cancella dal cursore alla fine della riga - '''d$''' <br/><br />
cancella intera riga compreso spazio occupato - '''dd''' <br/><br />
cancella tre righe - '''3dd''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - '''df''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - '''dt''' (seguito dal carattere) <br/><br />
cancella tutte le righe dello schermo sotto il cursore - '''dL''' <br/><br />
cancella dalla riga in cui si trova il cursore alla fine del documento - '''dG''' <br/><br />
cancella dalla riga in cui si trova il cursore all'inizio del documento - '''dg''' <br/><br />
cancella intero documento - '''ggdG''' <br/><br />
cancella parola e passa alla modalità inserimento - '''cw''' <br/><br />
cancella riga e passa alla modalità inserimento - '''cc''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla<br />
modalità inserimento - '''cf''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla<br />
modalità inserimento - '''ct''' (seguito dal carattere)<br />
<br />
cancella ogni riga che inizia con una certa parola - ''':g/^parola/d''' <br/><br />
cancella ogni riga che termina con una certa parola - ''':g/parola$/d''' <br/><br />
cancella ogni riga che contiene una certa parola - ''':g/parola/d''' <br/><br />
cancella le righe commentate - ''':g/^#/d''' <br/><br />
cancella le righe vuote - ''':v/\S/d'''<br />
<br />
inserisce commento (#) ad inizio riga - ''':s/^/#/'''<br />
<br />
<br />
== Annulla, ripeti, cronologia e ricerca ==<br />
Per annullare o ripetere una modifica si userà: <br/><br />
undo - '''u''' <br/><br />
undo di una riga - '''U'''<br />
<br />
redo - '''Ctrl-r'''<br />
<br />
<br />
Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po'<br />
le ripetizioni si usa il punto: <br/><br />
'''.'''<br />
<br />
<br />
Per la modalità comando: <br/><br />
ripete ultima operazione - '''@:''' <br/><br />
mostra la history dei comandi - ''':history''' <br/><br />
mostra la history con comandi selezionabili - '''q:''' <br/><br />
mostra la history di ricerca con comandi selezionabili - '''q/''' (successivo) <br/><br />
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/><br />
<br />
mostra la lista dei comandi interni che iniziano per a - ''':a Ctrl-d'''<br />
<br />
La ricerca funziona come per tante altre applicazioni: <br/><br />
cerca parola in avanti - '''/parola''' <br/><br />
ripete ricerca in avanti - '''n''' <br/><br />
cerca indietro - '''N'''<br />
<br />
cerca parola indietro - '''?parola''' <br/><br />
ripete ricerca indietro - '''n''' <br/><br />
cerca in avanti - '''N'''<br />
<br />
<br />
== Autocompletamento ==<br />
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate<br />
precedentemente. <br/><br />
'''Ctrl-x''' <br/><br />
scorrimento tra i risultati - '''Ctrl-n''' / '''Ctrl-p''' <br/><br />
annulla - '''Ctrl-e''' <br/><br />
accetta parola selezionata - '''Ctrl-y''' (oppure Enter)<br />
<br />
<br />
== Clipboard ==<br />
Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono<br />
utilizzate. <br/><br />
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1<br />
(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).<br />
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie Ctrl-c/Ctrl-x/Ctrl-v. <br/><br />
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]<br />
<br />
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.<br />
:PRIMARY: <br/><br />
copia - '''"*y''' <br/><br />
taglia - '''"*x''' <br/><br />
incolla - '''"*p'''<br />
<br />
:CLIPBOARD: <br/><br />
copia - '''"+y''' <br/><br />
taglia - '''"+x''' <br/><br />
incolla - '''"+p'''<br />
<br />
Allo stesso modo, per copiare una riga senza prima selezionarla si useranno '''"*yy''' e '''"+yy'''<br />
<br />
Il '''"''' (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo.<br />
'''*''' (asterisco) e '''+''' (più) fanno parte dei registri di selezione e rilascio del testo da e verso la<br />
clipboard di Xorg.<br />
Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard.<br />
Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.<br />
<br />
cancella riga - '''"_dd'''<br />
cancella tre righe - '''"_3dd'''<br />
<br />
Per approfondire e sapere di più sugli altri sette registri consultare la documentazione:<br />
'''<nowiki>:</nowiki>help "'''<br />
'''<nowiki>:</nowiki>help :registers'''<br />
<br />
<br />
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/><br />
'''<nowiki>:</nowiki>version'''<br />
<br />
cercando <code>clipboard</code> e <code>xterm_clipboard</code> nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà '''1''' se presente o '''0''' se non lo è: <br/><br />
'''<nowiki>:</nowiki>echo has('clipboard')''' <br/><br />
'''<nowiki>:</nowiki>echo has('xterm_clipboard')'''<br />
<br />
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/><br />
* vim-gtk<br />
* vim-gnome<br />
* vim-athena</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Editing&diff=29141VimCS: Editing2012-08-07T07:31:37Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
== Sostituzione ==<br />
entra in modalità sostituzione - '''R''' <br/><br />
sostituisce singolo carattere e torna in modalità comando - '''r''' (seguito dal carattere)<br />
<br />
maiuscole in minuscole e viceversa - '''~''' <br/><br />
tutta la riga minuscola - '''guu''' (oppure '''vu''') <br/><br />
solo una parola minuscola - '''vEu''' <br/><br />
tutta la riga maiuscola - '''gUU''' (oppure '''VU''') <br/><br />
solo una parola maiuscola - '''vEU''' <br/><br />
inverte maiuscole e minuscole di una parola - '''vE~''' <br/><br />
inverte maiuscole e minuscole di una riga - '''g~~''' <br/><br />
intero file minuscolo - '''ggguG''' <br/><br />
intero file maiuscolo - '''gggUG'''<br />
<br />
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo/''' <br/><br />
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/><br />
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/><br />
sostituzione in tutto il documento - ''':%s/vecchio/nuovo/g''' <br/><br />
<br />
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''<br />
<br />
elimina le terminazioni di riga in stile DOS, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/><br />
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>Ctrl-v</code> e <code>Ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/><br />
'''<nowiki>:</nowiki>%s/^M//g'''<br />
<br />
<br />
dato un file con tante righe nella forma di ''foo bar baz <nowiki>http://bla</nowiki>'',<br />
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:<br />
'''<nowiki>:</nowiki>%s/^.\{-}\zehttp//g'''<br />
<br />
<br />
data una riga nella forma '11. foo' sostituisce il punto con un tab<br />
'''<nowiki>:</nowiki>s/\(^[0-9]\+\)\. /\1\t/'''<br />
<br />
<br />
cancella tutto ciò che c'è dopo le virgolette<br />
'''<nowiki>:</nowiki>%s/".*//'''<br />
<br />
<br />
cancella spazi non voluti a fine riga (trailing whitespace); <br />
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:<br />
'''<nowiki>:</nowiki>%s/\s\+$//'''<br />
<br />
cerca soltanto:<br />
'''/\s\+$'''<br />
<br />
<br />
seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata<br />
'''Ctrl-v I # <esc>'''<br />
<br />
'''<nowiki>:</nowiki>help v_b_I'''<br />
<br />
<br />
manda a capo in corrispondenza di ogni tag <br><br />
'''<nowiki>:</nowiki>g,<br>,s,<br>,<br>\r,g'''<br />
<br />
<br />
in una riga con molteplici 'foo' sostituisce solo il secondo<br />
'''<nowiki>:</nowiki>s/\(.*\)foo/\1bar/'''<br />
<br />
<br />
ordina testo alfabeticamente - ''':sort'''<br />
<br />
elimina righe uguali - ''':sort u'''<br />
<br />
<br />
mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto<br />
'''<nowiki>:</nowiki>3p|45p|180p'''<br />
<br />
<br />
== Selezione e inserimento ==<br />
Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre. <br/><br />
Come accennato all'inizio, la modalità visuale seleziona il testo. <br />
<br />
inizia selezione - '''v''' <br/><br />
seleziona intera riga - '''V''' <br/><br />
seleziona blocco (per colonne) - '''Ctrl-v''' <br/><br />
seleziona tutto - '''ggVG''' <br/><br />
<br />
<br />
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se<br />
selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre<br />
sopra, basterà premere '''o''' e il cursore si sposterà alla prima riga della selezione corrente quindi<br />
muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/><br />
'''Vjok'''<br />
<br />
<br />
Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio. <br/><br />
Ecco ad esempio come copiare del testo salvandolo in altro file: <br/><br />
'''v''' <br/><br />
'''<nowiki>:</nowiki>'<,'>w nome_file'''<br />
<br />
Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il<br />
cursore: <br/><br />
'''<nowiki>:</nowiki>r nome_file'''<br />
<br />
<br />
Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una shell in una porzione di finestra e lo esegue: <br/><br />
'''<nowiki>:</nowiki>!ls'''<br />
<br />
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/><br />
'''<nowiki>:</nowiki>r !ls'''<br />
<br />
In caso servisse una shell con piena funzionalità: <br/><br />
'''<nowiki>:</nowiki>shell'''<br />
<br />
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)<br />
<br />
<br />
== Indentazione ==<br />
inserisce un'indentazione su riga - ''':>''' <br/><br />
inserisce due indentazioni su riga - ''':>>''' <br/><br />
toglie un'indentazione su riga - :<''' <br/><br />
toglie due indentazioni su riga - ''':<<''' <br/><br />
inserisce un'indentazione su 3 righe - ''':>3''' <br/><br />
inserisce un'indentazione sulla terza riga - ''':3>''' <br/><br />
<br />
inserisce - '''>>'''<br />
toglie - '''<<'''<br />
inserisce su tre righe - '''3>>'''<br />
toglie su tre righe - '''3<<'''<br />
inserisce sulla terza riga partendo da dove è posizionato il cursore - '''2j>>'''<br />
<br />
rimuove indentazione all'intero file - '''gg=G'''<br />
<br />
<br />
== Copia, taglia, incolla, cancella ==<br />
Questo funziona solo all'interno della sessione corrente di Vim. <br/><br />
copia testo selezionato - '''y''' <br/><br />
copia prima parola di una riga - '''yw''' <br/><br />
copia intera riga - '''yy'''<br />
<br />
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/><br />
incolla testo tagliato sopra la riga dove è il cursore - '''P'''<br />
<br />
mette la riga sottostante in coda alla corrente - '''J'''<br />
<br />
<br />
cancella carattere - '''x''' <br/><br />
cancella tre caratteri - '''3x''' <br/><br />
cancella dal cursore all'inizio della parola seguente - '''dw''' <br/><br />
cancella dal cursore alla fine della parola corrente - '''de''' <br/><br />
cancella dal cursore all'inizio della parola corrente - '''db''' <br/><br />
cancella la parola che si trova sotto al cursore - '''daw''' <br/><br />
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - '''caw''' <br/><br />
cancella dal cursore alla fine della riga - '''D''' <br/><br />
cancella dal cursore alla fine della riga - '''d$''' <br/><br />
cancella intera riga compreso spazio occupato - '''dd''' <br/><br />
cancella tre righe - '''3dd''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - '''df''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - '''dt''' (seguito dal carattere) <br/><br />
cancella tutte le righe dello schermo sotto il cursore - '''dL''' <br/><br />
cancella dalla riga in cui si trova il cursore alla fine del documento - '''dG''' <br/><br />
cancella dalla riga in cui si trova il cursore all'inizio del documento - '''dg''' <br/><br />
cancella intero documento - '''ggdG''' <br/><br />
cancella parola e passa alla modalità inserimento - '''cw''' <br/><br />
cancella riga e passa alla modalità inserimento - '''cc''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla<br />
modalità inserimento - '''cf''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla<br />
modalità inserimento - '''ct''' (seguito dal carattere)<br />
<br />
cancella ogni riga che inizia con una certa parola - ''':g/^parola/d''' <br/><br />
cancella ogni riga che termina con una certa parola - ''':g/parola$/d''' <br/><br />
cancella ogni riga che contiene una certa parola - ''':g/parola/d''' <br/><br />
cancella le righe commentate - ''':g/^#/d''' <br/><br />
cancella le righe vuote - ''':v/\S/d'''<br />
<br />
inserisce commento (#) ad inizio riga - ''':s/^/#/'''<br />
<br />
<br />
== Annulla, ripeti, cronologia e ricerca ==<br />
Per annullare o ripetere una modifica si userà: <br/><br />
undo - '''u''' <br/><br />
undo di una riga - '''U'''<br />
<br />
redo - '''Ctrl-r'''<br />
<br />
<br />
Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po'<br />
le ripetizioni si usa il punto: <br/><br />
'''.'''<br />
<br />
<br />
Per la modalità comando: <br/><br />
ripete ultima operazione - '''@:''' <br/><br />
mostra la history dei comandi - ''':history''' <br/><br />
mostra la history con comandi selezionabili - '''q:''' <br/><br />
mostra la history di ricerca con comandi selezionabili - '''q/''' (successivo) <br/><br />
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/><br />
<br />
mostra la lista dei comandi interni che iniziano per a - ''':a Ctrl-d'''<br />
<br />
La ricerca funziona come per tante altre applicazioni: <br/><br />
cerca parola in avanti - '''/parola''' <br/><br />
ripete ricerca in avanti - '''n''' <br/><br />
cerca indietro - '''N'''<br />
<br />
cerca parola indietro - '''?parola''' <br/><br />
ripete ricerca indietro - '''n''' <br/><br />
cerca in avanti - '''N'''<br />
<br />
<br />
== Autocompletamento ==<br />
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate<br />
precedentemente. <br/><br />
'''Ctrl-x''' <br/><br />
scorrimento tra i risultati - '''Ctrl-n''' / '''Ctrl-p''' <br/><br />
annulla - '''Ctrl-e''' <br/><br />
accetta parola selezionata - '''Ctrl-y''' (oppure Enter)<br />
<br />
<br />
== Clipboard ==<br />
Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono<br />
utilizzate. <br/><br />
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1<br />
(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).<br />
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie Ctrl-c/Ctrl-x/Ctrl-v. <br/><br />
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]<br />
<br />
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.<br />
:PRIMARY: <br/><br />
copia - '''"*y''' <br/><br />
taglia - '''"*x''' <br/><br />
incolla - '''"*p'''<br />
<br />
:CLIPBOARD: <br/><br />
copia - '''"+y''' <br/><br />
taglia - '''"+x''' <br/><br />
incolla - '''"+p'''<br />
<br />
Allo stesso modo, per copiare una riga senza prima selezionarla si useranno '''"*yy''' e '''"+yy'''<br />
<br />
Il '''"''' (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo.<br />
'''*''' (asterisco) e '''+''' (più) fanno parte dei registri di selezione e rilascio del testo da e verso la<br />
clipboard di Xorg.<br />
Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard.<br />
Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.<br />
<br />
cancella riga - '''"_dd'''<br />
cancella tre righe - '''"_3dd'''<br />
<br />
Per approfondire e sapere di più sugli altri sette registri consultare la documentazione:<br />
'''<nowiki>:</nowiki>help "'''<br />
'''<nowiki>:</nowiki>help :registers'''<br />
<br />
<br />
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/><br />
'''<nowiki>:</nowiki>version'''<br />
<br />
cercando <code>clipboard</code> e <code>xterm_clipboard</code> nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà '''1''' se presente o '''0''' se non lo è: <br/><br />
'''<nowiki>:</nowiki>echo has('clipboard')''' <br/><br />
'''<nowiki>:</nowiki>echo has('xterm_clipboard')'''<br />
<br />
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/><br />
* vim-gtk<br />
* vim-gnome<br />
* vim-athena</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Gestione&diff=29140VimCS: Gestione2012-08-07T07:28:50Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
= Apertura e gestione dei file =<br />
Si possono aprire molteplici file e gestirli in vari modi: <br/><br />
* visualizzandone uno alla volta, questi sono chiamati buffer<br />
* dividerli in split orizzontali e verticali, questi sono chiamati finestre<br />
* visualizzazione in tab<br />
<br />
Proprio come un browser web, l'uso dei tab è preferibilmente confinato a dividere progetti diversi, "un file = un tab" non è nella filosofia di un "vimmer" che si rispetti :) e il passaggio tra uno e l'altro è inoltre più scomodo di quanto si possa pensare. <br/><br />
Con l'aiuto di alcune mappe di tasti create appositamente o di plugin, i buffer restano il modo più pratico e veloce per tenere aperti tanti file e muoversi tra di essi.<br />
<br />
apre file - ''':e nome_file'''<br />
<br />
apre file nuovo - ''':enew'''<br />
<br />
<br />
== Buffer ==<br />
Aprendo due o più file ci si può spostare tra uno e l'altro usando: <br/><br />
'''<nowiki>:</nowiki>next''' (successivo) <br/><br />
'''<nowiki>:</nowiki>prev''' (precedente) <br/><br />
'''<nowiki>:</nowiki>bn''' (successivo) <br/><br />
'''<nowiki>:</nowiki>bp''' (precedente) <br/><br />
'''<nowiki>:</nowiki>e#''' (consente il passaggio veloce tra il precedente buffer e il corrente)<br />
<br />
Il passaggio veloce tra l'ultimo buffer e il corrente si ottiene anche con: <br/><br />
'''Ctrl-^''' (oppure '''Ctrl-6''') <br/><br />
'''N Ctrl-^''' (dove '''N''' è il numero del buffer) <br/><br />
<br />
Si può ottenere una lista dei buffer aperti in tre modi diversi: <br/><br />
'''<nowiki>:</nowiki>ls''' <br/><br />
'''<nowiki>:</nowiki>buffers''' <br/><br />
'''<nowiki>:</nowiki>files''' <br/><br />
<br />
Verrà mostrata una riga per ogni file aperto con un numero che lo identifica, un indicatore dello stato, il nome del file e la riga in cui è il cursore; si noti che il numero è univoco e non cambia, se si chiude un file rimarrà il "buco" nella sequenza numerica. <br/><br />
Per la spiegazione degli indicatori leggere il relativo help. <br/><br />
'''<nowiki>:</nowiki>h :ls'''<br />
<br />
passa a un buffer specifico - ''':b numero_buffer''' <br/><br />
chiude il buffer corrente - ''':bd''' <br/><br />
chiude un buffer specifico - ''':bd numero_buffer'''<br />
<br />
http://vim.wikia.com/wiki/Vim_buffer_FAQ<br />
<br />
<br />
== Finestre ==<br />
divide finestra orizzontalmente - ''':split''' (oppure '''Ctrl-w s''') <br/><br />
divide finestra verticalmente - ''':vsplit''' (oppure '''Ctrl-w v''')<br />
<br />
Il comportamento predefinito è di riportare nello split lo stesso file, dopodiché si può aprirne<br />
uno diverso usando i comandi dei buffer; in caso si voglia subito una finestra vuota possiamo farlo tranquillamente per lo split orizzontale, mentre per il verticale dovremo ricorrere ad una mappa. <br/><br />
<br />
divide creando finestra orizzontale vuota - '''Ctrl-w n''' <br/><br />
mappa la sequenza di tasti <code>Ctrl-w V</code> per creare una finestra verticale vuota: <br/><br />
'''<nowiki>:</nowiki>nnoremap <C-W>V :vne<CR>'''<br />
<br />
Come si può vedere il comando è <code>:nnoremap</code> seguito dalla scorciatoia desiderata, i caratteri speciali come Control e le eventuali sequenze vanno messe tra less e greater, poi il carattere aggiuntivo, quindi il comando vero e proprio, che è <code>:vne</code>, ed infine <code><CR></code> che è carriage return ed equivale a premere il tasto Return appunto (l'invio, quello che impropriamente chiamiamo Enter, è invece quello sul tastierino numerico :).<br />
<br />
Tutti i comandi dati in questo modo durano solo per la sessione in corso, per averli permanenti vanno inseriti nel file <code>~/.vimrc</code>; i due punti possono essere omessi.<br />
<br />
È possibile aprire una finestra con una dimensione predefinita (ad esempio, :33split): <br/><br />
'''<nowiki>:</nowiki>NUMEROsplit''' <br/><br />
'''<nowiki>:</nowiki>NUMEROvsplit'''<br />
<br />
muoversi tra le finestre - '''Ctrl-w w''' <br/><br />
muoversi in una finestra precisa: <br/><br />
'''Ctrl-w h''' sinistra <br/><br />
'''Ctrl-w j''' sotto <br/><br />
'''Ctrl-w k''' sopra <br/><br />
'''Ctrl-w l''' destra <br/><br />
'''Ctrl-w t''' più in alto <br/><br />
'''Ctrl-w b''' più in basso<br />
<br />
ridimensionare orizzontalmente: <br/><br />
'''Ctrl-w +''' <br/><br />
'''Ctrl-w -'''<br />
<br />
con numero di righe predefinito (ad esempio, 33 Ctrl-w +): <br/><br />
'''NUMERO Ctrl-w +''' <br/><br />
'''NUMERO Ctrl-w -'''<br />
<br />
con dimensione predefinita: '''NUMERO Ctrl-w _''' <br/><br />
<br />
ridimensiona verticalmente: <br/><br />
'''NUMERO Ctrl-w <''' <br/><br />
'''NUMERO Ctrl-w >''' <br/><br />
'''NUMERO Ctrl-w ='''<br />
<br />
inverte posizione finestra orizzontale: <br/><br />
verso l'alto - '''Ctrl-w R''' <br/><br />
verso il basso - '''Ctrl-w r''' <br/><br />
indipendente dal focus - '''Ctrl-w x'''<br />
<br />
inverte posizione finestra verticale: <br/><br />
muovi a sinistra - '''Ctrl-w H''' <br/><br />
muovi a destra - '''Ctrl-w L''' <br/><br />
muovi in alto - '''Ctrl-w K''' <br/><br />
muovi in basso - '''Ctrl-w J'''<br />
<br />
chiude finestra - ''':close''' (oppure '''Ctrl-w c''') <br/><br />
chiudi finestra tranne la corrente - ''':only''' (oppure '''Ctrl-w o''')<br />
<br />
Si possono aprire in finestre più buffer già presenti: <br/><br />
apre tutti in finestre orizzontali - ''':ball''' <br/><br />
apre tutti in finestre verticali - ''':vertical ball'''<br />
<br />
apre più file in finestre orizzontali:<br />
$ vim -o nome_file1 nome_file2<br />
<br />
apre più file in finestre verticali<br />
$ vim -O nome_file1 nome_file2<br />
<br />
apre finestra corrente in un tab - '''Ctrl-w T'''<br />
<br />
scorre le finestre assieme in stile vimdiff - ''':set scrollbind'''<br />
<br />
apre esplorazione file - ''':Explore''' <br/><br />
apre finestra verticale di esplorazione file - ''':Vexplore'''<br />
<br />
<br />
== Tab ==<br />
apre tab - ''':tabnew''' <br/><br />
chiude tab - ''':close'''<br />
<br />
apre file in un nuovo tab - ''':tabedit nome_file'''<br />
<br />
apre più file in tab:<br />
$ vim -p nome_file1 nome_file2<br />
<br />
apre più buffer in tab - ''':tab ball'''<br />
<br />
muoversi tra tab: <br/><br />
successivo - ''':tabn''' (oppure '''gt''') <br/><br />
precedente - ''':tabp''' (oppure '''gT''')</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Configurare_un_client_IRC_per_collegarsi_al_canale_debianizzati&diff=29139Configurare un client IRC per collegarsi al canale debianizzati2012-08-07T07:25:32Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<br />
Capita spesso di accedere al canale [http://it.wikipedia.org/wiki/Internet_Relay_Chat IRC] di debianizzati per risolvere un problema, o semplicemente per scambiare qualche parola con i numerosi utenti della comunità. Così, come alternativa alla [http://irc.debianizzati.org/ webchat], ecco una breve panoramica dei client IRC più usati e la rispettiva configurazione necessaria.<br />
<br />
Nelle immagini verrà indicato anche come e dove inserire la password del nick; per gli utenti che frequentano spesso il canale si invita a registrare il nick, è un'identità e come tale considerata un metodo di riconoscimento da parte degli altri utenti. <br><br />
I passi da compiere per registrarsi su azzurra.<br />
<br />
Scegliere un nick e applicarlo:<br />
<pre>/nick nick_scelto</pre><br />
<br />
Nel caso in cui il nick sia già registrato verrete avvertiti.<br />
<br />
L'aiuto in linea generale:<br />
<pre>/msg help nickserv</pre><br />
<br />
L'aiuto in linea mirato al comando per la registrazione:<br />
<pre>/msg nickserv help register</pre><br />
<br />
Un esempio:<br />
<pre>/msg nickserv register nick_scelto indirizzo_email_valido</pre><br />
<br />
Quando riceverete l'email questa conterrà il comando per confermare la registrazione.<br />
<br />
[http://www.azzurra.org/irchelp.php?mod=helpservices&type=NickServ NickServ help]<br />
<br />
[http://en.wikipedia.org/wiki/List_of_Internet_Relay_Chat_commands Elenco dei comandi IRC]<br />
<br />
<br />
== Xchat ==<br />
=== Installazione ===<br />
Xchat è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install xchat</code><br />
<br />
=== Configurazione ===<br />
La parte relativa alle Informazioni Utente riguarda la personalizzazione del nickname, ovvero il nome con cui si apparirà nel canale. Bisogna completare le voci inerenti, aggiungendone uno "principale" e, almeno un'altro in caso di disconnessioni o se già utilizzato da un altro utente.<br />
<br />
=== ===<br />
Reti mostra l'elenco di tutte le network memorizzate in modo predefinito alle quali collegarsi, permette inoltre la loro gestione: aggiunta, rimozione e modifica. <br />
Per aggiungere il nostro canale selezionare AzzurraNet e prmeere il bottone "Modifica"<br />
<br />
[[File:Xchat1.png|271px]]<br />
<br />
<br />
Da qui si può impostare l'indirizzo del server, il canale in cui entrare alla connessione e la password del nick.<br />
<br />
<code>Server: irc.azzurra.net/6667</code><br />
<br />
<code>Favorite channels: #debianizzati</code><br />
<br />
Inoltre, bisogna spuntare le caselle "Connetti solo al server selezionato" e, per utilizzare i nickname impostati precedentemente, "Usa informazioni utente globali".<br />
<br />
[[File:Xchat2.png|300px]]<br />
<br />
<br />
Infine, selezioniamo il canale "debianizzati" e clicchiamo su "Connetti", si può ora dare inizio alla conversazione!<br />
<br />
<br />
== Pidgin ==<br />
=== Installazione ===<br />
Pidgin è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install pidgin</code><br />
=== Configurazione ===<br />
<br />
Scegliere la voce "Gestisci gli account" dal menu "Account" nella finestra della lista contatti, quindi cliccare su "Aggiungi" nella finestra che si aprirà. <br><br />
Selezionare IRC come protocollo, impostare il proprio nome utente, l'indirizzo del server e la password spuntando la casella per memorizzarla. Una volta cliccato su "Aggiungi" ci si connetterà ad azzurra.<br />
<br />
[[File:Pidgin1.png|296px]]<br />
<br />
<br />
Quando si stabilisce la connessione si aprirà la finestra della chat, per entrare in canale si può scrivere "/join #debianizzati" nella parte sottostante, dove lampeggia il cursore, o selezionare "Entra in una Chat" dal menu "Conversazione", scrivere "#debianizzati" nello spazio riservato al canale quindi premere il bottone "Entra". <br><br />
Per entrare automaticamente in canale alla connessione selezionare "Aggiungi chat" dal menu "Contatti" nella finestra della lista contatti; inserire il nome del canale, gruppo IRC e spuntare la casella che automatizza il processo.<br />
<br />
[[File:Pidgin2.png|385px]]<br />
<br />
<br />
== Quassel ==<br />
=== Installazione ===<br />
Quassel è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install quassel</code><br />
=== Configurazione ===<br />
Nelle impostazioni si inserisce la password per nickserv relativa al profilo della network selezionata.<br />
<br />
Il canale in cui entrare automaticamente si aggiunge tramite la linguetta "Comandi" inserendo "/join #debianizzati"<br />
<br />
Il nick si inserisce scegliendo "Identità" nell'albero a sinistra. <br />
<br />
[[File:Quassel1.png|533px]]<br />
<br />
<br />
Il profilo viene creato scegliendo "Aggiungi" nell'immagine precedente, contiene l'indirizzo e la porta del server e un nome arbitrario per il profilo stesso.<br />
<br />
[[File:Quassel2.png|329px]]<br />
<br />
<br />
== KVirc ==<br />
=== Installazione ===<br />
KVirc è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install kvirc</code><br />
=== Configurazione ===<br />
Il server a cui connettersi. A questa finestra si accede scegliendo "Server" dalle impostazioni generali.<br />
<br />
[[File:Kvirc1.png|430px]]<br />
<br />
<br />
Il canale in cui entrare automaticamente. A questa finestra si accede scegliendo "Server" dalle impostazioni generali, doppio click su "irc.azzurra.org" e aggiungendo una regola.<br />
<br />
[[File:Kvirc2.png|503px]]<br />
<br />
<br />
Le opzioni di nickserv dove inserire nick e password. A questa finestra si accede scegliendo "IRC > Strumenti > Nickserv" dalle impostazioni generali.<br />
<br />
[[File:Kvirc3.png|304px]]<br />
<br />
<br />
== Irssi ==<br />
Vedere la [http://guide.debianizzati.org/index.php/Irssi,_chattare_da_terminale guida] dedicata.<br />
<br />
<br />
<br /><br /><br />
{{ Warningbox | Chi fa parte dell'accademia Debianizzati, può seguire i corsi impostando #debianizzati-corsi come canale }}<br />
<br />
'''Vi aspettiamo numerosi!'''<br />
<br />
----<br />
<br />
--[[Utente:Ernestus|Ernestus]] 17:44, 10 feb 2011 (CET)<br />
[[Categoria:Instant Messaging]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Vim_Cheat_Sheet&diff=29132Vim Cheat Sheet2012-08-06T09:18:43Z<p>Skizzhg: ex man, man ex!</p>
<hr />
<div>{{Versioni compatibili}}<br />
= Introduzione =<br />
Parlare di Vim non è facile, è complesso, infinito e oltre a questo esiste già moltissima documentazione. <br/><br />
Perciò questa vuole essere una raccolta di comandi spiegata in modo schematico e di facile consultazione in caso di bisogno. <br/><br />
La caratteristica fondamentale di Vim è di avere varie modalità differenti; nonostante all'inizio ciò possa far sentire a disagio, è anche uno dei suoi punti forti, che con l'abitudine non faranno rimpiangere nessun altro editor. <br/><br />
<br />
* '''Modalità comando:''' è la prima che si incontra appena aperto, si possono impartire comandi specifici che spaziano dalle opzioni di configurazione stesse all'editing in modo massiccio, uso di regex e molto altro. In caso ci si trovi in altre modalità, questa si ottiene con il tasto Escape. <br/><br />
<br />
* '''Modalità inserimento:''' per inserire testo come un normale editor, dalla modalità comando vi si accede con '''i''' (lettera i). <br/><br />
<br />
* '''Modalità visuale:''' selezione del testo con la possibilità di compiere operazioni su interi blocchi. Dalla modalità comando si attiva in tre modi differenti:<br />
** '''v''' (lettera v) : normale, parte da dove è posizionato il cursore;<br />
** '''V''' (lettera v maiuscola) : a linee, seleziona per righe, dall'inizio alla fine di ognuna;<br />
** '''Ctrl-v''' : a blocchi, seleziona seguendo le colonne.<br />
<br />
* '''Modalità sostituzione:''' è simile all'inserimento con la differenza che qualsiasi cosa verrà digitata compierà una sostituzione sovrascrivendo il vecchio testo, dalla modalità comando si attiva con '''R''' (quindi Shift-r). Esiste anche una sostituzione temporanea attivabile con la lettera '''r''' seguita da cosa si vuole sostituire, vale solo per un carattere, nello specifico quello sotto il cursore.<br />
<br />
* '''Modalità Ex:''' è come avere il prompt dei comandi sempre attivo, ovvero non è necessario usare ''':''' (due punti) e lo schermo non viene aggiornato dopo ogni comando. Questo riduce di molto i tempi di esecuzione ed equivale a richiamare '''ex''' o Vim con l'opzione -e. <br><br />
** Utilissima per operazioni non interattive quali script e funzioni [http://guide.debianizzati.org/index.php/Categoria:Bash Bash], è considerata una versione migliorata di GNU Ed.<br />
: :help Ex-mode<br />
<br />
In modalità comando le istruzioni vengono passate tramite una sorta di attivatore, ovvero ''':''' (due punti). Tranne quando si inserisce effettivamente del testo è preferibile restare in modalità comando; infatti nonostante in modalità inserimento i classici tasti di direzione funzionino, trovarsi in modalità comando diventa essenziale per muoversi ed operare velocemente all'interno del documento, grazie alla maggiore quantità di scelte rapide disponibili. <br/><br />
C'è la possibilità di usare comandi in modalità inserimento senza premere Esc, ma non l'ho mai apprezzata, giacché la scorciatoia è Ctrl-o che trovo decisamente scomoda.<br />
<br />
Di seguito una breve legenda affinché ci sia un minimo di chiarezza su quanto andrò ad esporre. <br/><br />
Tutti i comandi sono da intendere in modo letterale, nel senso che vanno digitati così come sono scritti, sia quelli preceduti dai due punti che quelli senza, quelli composti da più lettere vanno usati in sequenza e senza aspettare troppo tempo tra una e l'altra perché c'è un timer.<br />
Fanno eccezione i comandi preceduti da un '''$''' (il prompt Bash) che sono invece istruzioni a linea di comando da utilizzare in un terminale. <br/><br />
Ctrl-f significa premere contemporaneamente il tasto Control e il tasto f. <br/><br />
Ctrl-w c significa premere contemporaneamente il tasto Control e il tasto w, rilasciarli e premere il tasto c (funziona anche senza rilasciare ma le acrobazie da pianista le lasciamo agli utenti emacs :). <br/><br />
Per schermo si intende la porzione visibile dell'intero documento, ovvero la parte di testo contenuta nella finestra, che ovviamente varia a seconda delle dimensioni del terminale e del monitor.<br />
<br />
All'avvio Vim carica un serie di file, se completo di backend grafico carica anche varie utilità per gestire la clipboard, macro e plugin, oltre ad acquisire la variabile d'ambiente TERM e inizializzare una shell; per queste ragioni ne è sconsigliato l'uso come utente root. Lo stesso vale per "sudo vim" col quale si otterrebbero i privilegi.<br />
È invece preferibile usare il comando sudoedit dopo averlo configurato con qualcosa di simile:<br />
<br />
skizzhg jackinthebox = sudoedit<br />
<br />
Si può vedere cosa succede durante lo startup con:<br />
<br />
$ vim -V<br />
<br />
e<br />
<br />
$ vim --startuptime /tmp/vim.log<br />
<br />
che apre Vim e salva l'output in /tmp/vim.log.<br />
<br />
Una lettura interessante sono i capitoli 4 e 5 di<br />
: :help starting<br />
<br />
<br />
= [[VimCS:_Basi|Basi]] =<br />
* Iniziare a scrivere<br />
* Come muoversi<br />
* Salvare il documento<br />
* Uscire da Vim<br />
<br />
<br />
= [[VimCS:_Gestione|Gestione]] =<br />
* Buffer<br />
* Finestre<br />
* Tab<br />
<br />
<br />
= [[VimCS:_Editing|Editing]] =<br />
* Sostituzione<br />
* Selezione e inserimento<br />
* Indentazione<br />
* Copia, taglia, incolla, cancella<br />
* Annulla, ripeti, cronologia e ricerca<br />
* Autocompletamento<br />
* Clipboard<br />
<br />
<br />
= [[VimCS:_Varie|Varie]] =<br />
* Differenze<br />
* Creare html<br />
* Cifratura testo<br />
* Vim remote<br />
<br />
<br />
= [[VimCS:_Configurazione|Configurazione]] =<br />
* .vimrc<br />
* .vim/<br />
* Gerarchia della directory .vim/<br />
<br />
<br />
= [[VimCS:_Extra|Extra]] =<br />
* Extra<br />
* Easter egg<br />
* Riferimenti<br />
<br />
<br/><br/><br />
: Autore: [[Utente:Skizzhg|skizzhg]]<br />
: Credits: Plutonio (revisione e suggerimenti)<br />
[[Categoria: Elaborazione_testi]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Basi&diff=29123VimCS: Basi2012-08-04T17:52:44Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
= Iniziare a scrivere =<br />
Ci sono vari modi di attivare la modalità inserimento, a seconda delle esigenze e della posizione del cursore.<br />
<br />
a sinistra del cursore - '''i''' <br/><br />
a destra del cursore - '''a''' <br/><br />
a inizio riga - '''I''' <br/><br />
a fine riga - '''A''' <br/><br />
sulla riga sotto il cursore - '''o''' <br/><br />
sulla riga sopra il cursore - '''O''' <br/><br />
<br />
<br />
= Come muoversi =<br />
sposta cursore a sinistra - '''h''' <br/><br />
sposta cursore a destra - '''l''' <br/><br />
sposta cursore su - '''j''' <br/><br />
sposta cursore giù - '''k'''<br />
<br />
sposta cursore avanti all'inizio della parola successiva - '''w''' <br/><br />
sposta cursore indietro all'inizio della parola successiva - '''b'''<br />
<br />
sposta cursore avanti all'inizio della parola successiva ignorando la punteggiatura - '''W''' <br/><br />
sposta cursore indietro all'inizio della parola successiva ignorando la punteggiatura - '''B'''<br />
<br />
sposta cursore tre parole avanti all'inizio della parola - '''3w''' <br/><br />
sposta cursore tre parole indietro all'inizio della parola - '''3b'''<br />
<br />
sposta cursore avanti alla fine della parola - '''e''' <br/><br />
sposta cursore indietro alla fine della parola - '''ge'''<br />
<br />
sposta cursore avanti alla fine della parola successiva ignorando la punteggiatura - '''E''' <br/><br />
sposta cursore indietro alla fine della parola successiva ignorando la punteggiatura - '''gE'''<br />
<br />
sposta cursore tre parole avanti alla fine - '''3e''' <br/><br />
sposta cursore al primo carattere della riga - '''|''' <br/><br />
sposta cursore al terzo carattere della riga - '''3|''' <br/><br />
sposta cursore al primo carattere non bianco - '''^'''<br />
<br />
sposta cursore ad inizio riga - '''0''' <br/><br />
sposta cursore a fine riga - '''$'''<br />
<br />
sposta cursore una pagina avanti - '''Ctrl-f''' (oppure '''Ctrl-d''') <br/><br />
sposta cursore una pagina indietro - '''Ctrl-b''' (oppure '''Ctrl-u''')<br />
<br />
sposta cursore avanti ad inizio frase - ''')''' <br/><br />
sposta cursore indietro ad inizio frase - '''('''<br />
<br />
sposta cursore su ad inizio paragrafo - '''{''' <br/><br />
sposta cursore giù a fine paragrafo - '''}'''<br />
<br />
sposta cursore a inizio documento - '''gg''' (oppure '''[[''') <br/><br />
sposta cursore a fine documento - '''G''' (oppure ''']]''') <br/><br />
sposta cursore alla riga 33 - '''33 G''' (oppure ''':33''')<br />
<br />
sposta cursore alla prima riga dello schermo - '''H''' <br/><br />
sposta cursore all'ultima riga dello schermo - '''L''' <br/><br />
sposta cursore alla riga al centro dello schermo - '''M''' <br/><br />
sposta cursore alla terza riga dello schermo - '''3H''' <br/><br />
sposta cursore alla terzultima riga dello schermo - '''3L'''<br />
<br />
sposta il cursore sulla parentesi corrispondente ad una chiusa o aperta - '''%''' <br/><br />
<br />
mostra il nome del file, la quantità di righe e la posizione in cui è il cursore - '''Ctrl-g'''<br />
<br />
<br />
Spostandosi da un punto all'altro del documento, Vim ricorda gli ultimi due; paragonando questo<br />
comportamento a bash, si pensi ai comandi <code>cd</code> e <code>cd -</code> : <br/><br />
: torna alla posizione precedente - '''Ctrl-o''' <br/><br />
: vai alla posizione successiva - '''Ctrl-i'''<br />
<br />
Se invece volessimo una specie di segnalibro per tornare ad un punto preciso: <br/><br />
: '''m''' (seguito dal carattere)<br />
<br />
e quindi tornarvi in qualsiasi momento: <br/><br />
: ' (seguito dal carattere)<br />
<br />
<br />
I comandi disponibili sono moltissimi, ecco cosa dice il saggio vimgor, il bot del canale IRC, in proposito: <br/><br />
<skizzhg> vimgor: movement <br/><br />
<vimgor> In normal mode, all of these keys can move the cursor: ` # $ % ^ * ( ) 0 _ - + w W e E t T I o O { } [[ [] ][ ]] [m [M ]m ]M [( ]) [{ ]} | A f F ge gE gg G g0 g^ g$ g, g; gj gk gI h H j k l L ; ' z. z<CR> z- zz zt zb b B n N M , / ? <C-b> <C-d> <C-e> <C-f> <C-h> <C-i> <C-o> <C-t> <C-u> <C-y> - learn to use all of them<br />
<br />
<br />
= Salvare il documento =<br />
salva file già esistente - ''':w''' <br/><br />
salva file non esistente - ''':w nome_file'''<br />
<br />
salva più file aperti, che siano buffer o tab - ''':wa''' <br/><br />
salva con altro nome, fa una copia mantendendo l'originale - ''':sav nome_file'''<br />
<br />
<br />
= Uscire da Vim =<br />
esce - ''':q''' <br/><br />
esce da tutti, che siano buffer o tab - ''':qa''' <br/><br />
salva ed esce - ''':wq''' <br/><br />
salva solo se sono state fatte modifiche ed esce - ''':x''' (oppure '''ZZ''') <br/><br />
salva tutti, che siano buffer o tab - ''':wa''' <br/><br />
esce senza salvare - ''':q!''' (oppure '''ZQ''')<br />
<br />
mappa la sequenza di tasti <code>ZW</code> per salvare senza chiudere: <br/><br />
: ''':map ZW :w<cr>'''</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Vim_Cheat_Sheet&diff=29122Vim Cheat Sheet2012-08-04T17:37:18Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
= Introduzione =<br />
Parlare di Vim non è facile, è complesso, infinito e oltre a questo esiste già moltissima documentazione. <br/><br />
Perciò questa vuole essere una raccolta di comandi spiegata in modo schematico e di facile consultazione in caso di bisogno. <br/><br />
La caratteristica fondamentale di Vim è di avere varie modalità differenti; nonostante all'inizio ciò possa far sentire a disagio, è anche uno dei suoi punti forti, che con l'abitudine non faranno rimpiangere nessun altro editor. <br/><br />
<br />
* '''Modalità comando:''' è la prima che si incontra appena aperto, si possono impartire comandi specifici che spaziano dalle opzioni di configurazione stesse all'editing in modo massiccio, uso di regex e molto altro. In caso ci si trovi in altre modalità, questa si ottiene con il tasto Escape. <br/><br />
<br />
* '''Modalità inserimento:''' per inserire testo come un normale editor, dalla modalità comando vi si accede con '''i''' (lettera i). <br/><br />
<br />
* '''Modalità visuale:''' selezione del testo con la possibilità di compiere operazioni su interi blocchi. Dalla modalità comando si attiva in tre modi differenti:<br />
** '''v''' (lettera v) : normale, parte da dove è posizionato il cursore;<br />
** '''V''' (lettera v maiuscola) : a linee, seleziona per righe, dall'inizio alla fine di ognuna;<br />
** '''Ctrl-v''' : a blocchi, seleziona seguendo le colonne.<br />
<br />
* '''Modalità sostituzione:''' è simile all'inserimento con la differenza che qualsiasi cosa verrà digitata compierà una sostituzione sovrascrivendo il vecchio testo, dalla modalità comando si attiva con '''R''' (quindi Shift-r). Esiste anche una sostituzione temporanea attivabile con la lettera '''r''' seguita da cosa si vuole sostituire, vale solo per un carattere, nello specifico quello sotto il cursore.<br />
In modalità comando le istruzioni vengono passate tramite una sorta di attivatore, ovvero ''':''' (due punti). Tranne quando si inserisce effettivamente del testo è preferibile restare in modalità comando; infatti nonostante in modalità inserimento i classici tasti di direzione funzionino, trovarsi in modalità comando diventa essenziale per muoversi ed operare velocemente all'interno del documento, grazie alla maggiore quantità di scelte rapide disponibili. <br/><br />
C'è la possibilità di usare comandi in modalità inserimento senza premere Esc, ma non l'ho mai apprezzata, giacché la scorciatoia è Ctrl-o che trovo decisamente scomoda.<br />
<br />
Di seguito una breve legenda affinché ci sia un minimo di chiarezza su quanto andrò ad esporre. <br/><br />
Tutti i comandi sono da intendere in modo letterale, nel senso che vanno digitati così come sono scritti, sia quelli preceduti dai due punti che quelli senza, quelli composti da più lettere vanno usati in sequenza e senza aspettare troppo tempo tra una e l'altra perché c'è un timer.<br />
Fanno eccezione i comandi preceduti da un '''$''' (il prompt Bash) che sono invece istruzioni a linea di comando da utilizzare in un terminale. <br/><br />
Ctrl-f significa premere contemporaneamente il tasto Control e il tasto f. <br/><br />
Ctrl-w c significa premere contemporaneamente il tasto Control e il tasto w, rilasciarli e premere il tasto c (funziona anche senza rilasciare ma le acrobazie da pianista le lasciamo agli utenti emacs :). <br/><br />
Per schermo si intende la porzione visibile dell'intero documento, ovvero la parte di testo contenuta nella finestra, che ovviamente varia a seconda delle dimensioni del terminale e del monitor.<br />
<br />
All'avvio Vim carica un serie di file, se completo di backend grafico carica anche varie utilità per gestire la clipboard, macro e plugin, oltre ad acquisire la variabile d'ambiente TERM e inizializzare una shell; per queste ragioni ne è sconsigliato l'uso come utente root. Lo stesso vale per "sudo vim" col quale si otterrebbero i privilegi.<br />
È invece preferibile usare il comando sudoedit dopo averlo configurato con qualcosa di simile:<br />
<br />
skizzhg jackinthebox = sudoedit<br />
<br />
Si può vedere cosa succede durante lo startup con:<br />
<br />
$ vim -V<br />
<br />
e<br />
<br />
$ vim --startuptime /tmp/vim.log<br />
<br />
che apre Vim e salva l'output in /tmp/vim.log.<br />
<br />
Una lettura interessante sono i capitoli 4 e 5 di<br />
: :help starting<br />
<br />
<br />
= [[VimCS:_Basi|Basi]] =<br />
* Iniziare a scrivere<br />
* Come muoversi<br />
* Salvare il documento<br />
* Uscire da Vim<br />
<br />
<br />
= [[VimCS:_Gestione|Gestione]] =<br />
* Buffer<br />
* Finestre<br />
* Tab<br />
<br />
<br />
= [[VimCS:_Editing|Editing]] =<br />
* Sostituzione<br />
* Selezione e inserimento<br />
* Indentazione<br />
* Copia, taglia, incolla, cancella<br />
* Annulla, ripeti, cronologia e ricerca<br />
* Autocompletamento<br />
* Clipboard<br />
<br />
<br />
= [[VimCS:_Varie|Varie]] =<br />
* Differenze<br />
* Creare html<br />
* Cifratura testo<br />
* Vim remote<br />
<br />
<br />
= [[VimCS:_Configurazione|Configurazione]] =<br />
* .vimrc<br />
* .vim/<br />
* Gerarchia della directory .vim/<br />
<br />
<br />
= [[VimCS:_Extra|Extra]] =<br />
* Extra<br />
* Easter egg<br />
* Riferimenti<br />
<br />
<br/><br/><br />
: Autore: [[Utente:Skizzhg|skizzhg]]<br />
: Credits: Plutonio (revisione e suggerimenti)<br />
[[Categoria: Elaborazione_testi]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Vim_Cheat_Sheet&diff=29120Vim Cheat Sheet2012-08-04T09:26:21Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
= Introduzione =<br />
Parlare di Vim non è facile, è complesso, infinito e oltre a questo esiste già moltissima documentazione. <br/><br />
Perciò questa vuole essere una raccolta di comandi spiegata in modo schematico e di facile consultazione in caso di bisogno. <br/><br />
La caratteristica fondamentale di Vim è di avere varie modalità differenti; nonostante all'inizio ciò possa far sentire a disagio, è anche uno dei suoi punti forti, che con l'abitudine non faranno rimpiangere nessun altro editor. <br/><br />
<br />
* '''Modalità comando:''' è la prima che si incontra appena aperto, si possono impartire comandi specifici che spaziano dalle opzioni di configurazione stesse all'editing in modo massiccio, uso di regex e molto altro. In caso ci si trovi in altre modalità, questa si ottiene con il tasto Escape. <br/><br />
<br />
* '''Modalità inserimento:''' per inserire testo come un normale editor, dalla modalità comando vi si accede con '''i''' (lettera i). <br/><br />
<br />
* '''Modalità visuale:''' selezione del testo con la possibilità di compiere operazioni su interi blocchi. Dalla modalità comando si attiva in tre modi differenti:<br />
** '''v''' (lettera v) : normale, parte da dove è posizionato il cursore;<br />
** '''V''' (lettera v maiuscola) : a linee, seleziona per righe, dall'inizio alla fine di ognuna;<br />
** '''Ctrl-v''' : a blocchi, seleziona seguendo le colonne.<br />
<br />
* '''Modalità sostituzione:''' è simile all'inserimento con la differenza che qualsiasi cosa verrà digitata compierà una sostituzione sovrascrivendo il vecchio testo, dalla modalità comando si attiva con '''R''' (quindi Shift-r). Esiste anche una sostituzione temporanea attivabile con la lettera '''r''' seguita da cosa si vuole sostituire, vale solo per un carattere, nello specifico quello sotto il cursore.<br />
In modalità comando le istruzioni vengono passate tramite una sorta di attivatore, ovvero ''':''' (due punti). Tranne quando si inserisce effettivamente del testo è preferibile restare in modalità comando; infatti nonostante in modalità inserimento i classici tasti di direzione funzionino, trovarsi in modalità comando diventa essenziale per muoversi ed operare velocemente all'interno del documento, grazie alla maggiore quantità di scelte rapide disponibili. <br/><br />
C'è la possibilità di usare comandi in modalità inserimento senza premere Esc, ma non l'ho mai apprezzata, giacché la scorciatoia è Ctrl-o che trovo decisamente scomoda.<br />
<br />
Di seguito una breve legenda affinché ci sia un minimo di chiarezza su quanto andrò ad esporre. <br/><br />
Tutti i comandi sono da intendere in modo letterale, nel senso che vanno digitati così come sono scritti, sia quelli preceduti dai due punti che quelli senza, quelli composti da più lettere vanno usati in sequenza e senza aspettare troppo tempo tra una e l'altra perché c'è un timer.<br />
Fanno eccezione i comandi preceduti da un '''$''' (il prompt Bash) che sono invece istruzioni a linea di comando da utilizzare in un terminale. <br/><br />
Ctrl-f significa premere contemporaneamente il tasto Control e il tasto f. <br/><br />
Ctrl-w c significa premere contemporaneamente il tasto Control e il tasto w, rilasciarli e premere il tasto c (funziona anche senza rilasciare ma le acrobazie da pianista le lasciamo agli utenti emacs :). <br/><br />
Per schermo si intende la porzione visibile dell'intero documento, ovvero la parte di testo contenuta nella finestra, che ovviamente varia a seconda delle dimensioni del terminale e del monitor.<br />
<br />
<br />
= [[VimCS:_Basi|Basi]] =<br />
* Iniziare a scrivere<br />
* Come muoversi<br />
* Salvare il documento<br />
* Uscire da Vim<br />
<br />
<br />
= [[VimCS:_Gestione|Gestione]] =<br />
* Buffer<br />
* Finestre<br />
* Tab<br />
<br />
<br />
= [[VimCS:_Editing|Editing]] =<br />
* Sostituzione<br />
* Selezione e inserimento<br />
* Indentazione<br />
* Copia, taglia, incolla, cancella<br />
* Annulla, ripeti, cronologia e ricerca<br />
* Autocompletamento<br />
* Clipboard<br />
<br />
<br />
= [[VimCS:_Varie|Varie]] =<br />
* Differenze<br />
* Creare html<br />
* Cifratura testo<br />
* Vim remote<br />
<br />
<br />
= [[VimCS:_Configurazione|Configurazione]] =<br />
* .vimrc<br />
* .vim/<br />
* Gerarchia della directory .vim/<br />
<br />
<br />
= [[VimCS:_Extra|Extra]] =<br />
* Extra<br />
* Easter egg<br />
* Riferimenti<br />
<br />
<br/><br/><br />
: Autore: [[Utente:Skizzhg|skizzhg]]<br />
: Credits: Plutonio (revisione e suggerimenti)<br />
[[Categoria: Elaborazione_testi]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Irssi,_chattare_da_terminale&diff=29104Irssi, chattare da terminale2012-07-30T00:26:31Z<p>Skizzhg: </p>
<hr />
<div>==Introduzione==<br />
<code>irssi</code> è un client IRC che funziona da linea di comando. È un programma estremamente spartano, ma che ha al suo arco molte frecce.<br />
<br />
==Installazione==<br />
L'installazione di <code>irssi</code> su Debian è molto semplice:<br />
# apt-get install irssi<br />
<br />
Una volta installato, il programma è già funzionante e potete avviarlo come ogni altro programma da shell:<br />
$ irssi<br />
<br />
==Configurazione==<br />
Vi troverete davanti ad una semplice console dove a prima vista non sembrano esserci comandi disponibili. <br><br />
Per iniziare basta però digitare:<br />
/set <invio><br />
<br />
e verrete sommersi da un nugolo di opzioni da selezionare. <br><br />
Le opzioni e i parametri seguono una sintassi standard:<br />
/set nome_opzione_da_selezionare = parametro_che_si_vuole_impostare<invio><br />
<br />
Potete usare il completamento automatico: ossia una volta scritta una parte del comando:<br />
/set nome_opzione<br />
<br />
potete premere il tasto <code>TAB</code> per completare il comando. <br><br />
Il comando /set si comporta in modo simile a grep, per cui si possono ottenere tutte le opzioni riguardanti un certo pattern:<br />
/set name <br><br />
[dcc]<br />
dcc_autorename = OFF<br />
[lookandfeel]<br />
actlist_names = ON<br />
names_max_columns = 6<br />
names_max_width = 0<br />
show_names_on_join = ON<br />
[server]<br />
hostname = <br />
real_name = skizzhg<br />
user_name = skizzhg<br />
<br />
Come prima cosa conviene impostare il vostro nick name:<br />
/set nick il_mio_nick <invio><br />
<br />
dove al posto di <code>il_mio_nick</code> dovrete scrivere il nickname con cui volete essere riconosciuti su IRC. <br><br />
Se si vuole annullare una modifica e tornare allo stato iniziale:<br />
/set -clear opzione<br />
<br />
Data la complessità del file di configurazione è fortemente sconsigliato modificarlo manualmente tramite un editor, usate invece i comandi interni e il ricco help ottenibile con <code>/help</code> e quindi <code>/help comando</code>; ad esempio: <code>/help set</code>.<br />
<br />
==Collegamento ad un server IRC==<br />
Digitate:<br />
/connect nome_server_irc <invio><br />
<br />
e <code>irssi</code> cercherà immediatamente di collegarsi. Un esempio:<br />
/connect irc.azzurra.org <invio><br />
<br />
Una volta collegati al server potrete raggiungere un canale. Se non conoscete a priori il nome del canale o se volete sfogliare la lista dei canali disponibili, il comando irc <code>list</code>, magari specificando l'argomento di interesse, ad esempio <code>linux</code>, è quello che fa per voi:<br />
/list #linux*<br />
<br />
Sarà elencata una serie di canali inerenti questo tema. Per entrare in un canale usate il comando <code>join</code>:<br />
/join #debianizzati<br />
<br />
Si aprirà un'altra finestra con l'elenco delle persone collegate e il topic del canale; per iniziare a chattare basta digitare quello che volete comunicare e poi premere invio. <br><br />
Se volete ritornare alla finestra iniziale del server a cui siete collegati basta premere <code>ALT+1</code>.<br />
<br />
Automatizziamo la connessione al server e il join al canale:<br />
/server add -ssl -auto -network azzurra irc.azzurra.org 9999<br />
/network add -nick skizzhg -user skizzhg -realname skizzhg azzurra<br />
<br />
aggiungere la seguente stringa solo se si ha un nick registrato sostituendo mia_password con la propria password:<br />
/network add -autosendcmd "/quote nickserv identify mia_password; wait 3000" azzurra<br />
<br />
quindi l'autojoin<br />
/channel add -auto #debianizzati azzurra<br />
<br />
e infine salviamo il tutto (le impostazioni verranno scritte nel file <code>~/.irssi/config</code>)<br />
/save<br />
<br />
==All'interno di un canale==<br />
Quando si è in un canale, se volete aprire una finestra privata col vostro interlocutore dovete digitare il comando:<br />
/query nick_con_cui_volete_parlare <invio><br />
<br />
Per passare da una finestra ad un'altra è possibile utilizzare varie combinazioni di tasti:<br />
* <code>ALT+numero</code> (oltre le 10 finestre ci si muove con Alt+q,w,e,r...)<br />
* <code>ESC+numero</code> (premere e rilasciare ESC e quindi il numero)<br />
* <code>CRTL-n / CTRL-p</code><br />
* scrivendo <code>/window goto N</code> (dove N è il numero della finestra o il nome del canale)<br />
mentre premere <code>ALTt+a</code> porta alla prima finestra dove c'è attività.<br />
<br />
Se invece volete spedire un file ad un utente usate:<br />
/dcc send nick_destinatario file_da_spedire<invio><br />
<br />
Per ricevere un file:<br />
/dcc get nick_che_spedisce file_da_ricevere <invio><br />
<br />
Per chiudere una qualsiasi finestra è sufficiente trovarsi nella finestra che si vuol chiudere e digitare:<br />
/wc (ovvero window close)<invio><br />
<br />
Tutti i comandi standard di IRC funzionano sotto <code>irssi</code>. <br><br />
Per uscire utilizzate il comando:<br />
/quit<invio><br />
<br />
==Alias==<br />
Come per qualsiasi altro client IRC possiamo creare tanti alias quanto le esigenze e la fantasia ci suggeriscono, ecco qualche esempio. <br><br />
Innanzitutto dobbiamo creare gli alias per i service dell'Ircd perché irssi, al contrario di altri, non interpreta le consuete abbreviazioni:<br />
/alias CS quote chanserv<br />
/alias NS quote nickserv<br />
/alias MS quote memoserv<br />
/alias HS quote helpserv<br />
/alias SEEN quote seenserv seennick<br />
<br />
Spesso irssi viene usato insieme a [[GNU/Screen]] per restare connessi a lungo, in questo caso non vogliamo uscire per sbaglio:<br />
/alias quit echo ^C5 sei sicuro? usa //quit<br />
<br />
<code>^C5</code> significa premere e rilasciare <code>CTRL-c</code> e quindi <code>5</code> per ottenere il testo colorato di rosso, lo stesso si ottiene con<br />
/alias quit echo \0035 sei sicuro? usa //quit<br />
<br />
D'ora in poi per chiudere realmente si userà il comando <code>//quit</code>. È bene anche eliminare gli altri alias predefiniti che rimandano a <code>quit</code>:<br />
/unalias BYE<br />
/unalias EXIT<br />
/unalias SIGNOFF<br />
<br />
È possibile dividere orizzontalmente la finestra per visualizzare più canali contemporaneamente, in questo caso prendiamo l'esempio della finestra di status (la 1) dove finiscono ad esempio i notice, i memo e altri messaggi che altrimenti possiamo facilmente non notare; creiamo una piccola porzione (11 righe) dello status sopra la finestra solita:<br />
/alias SPLIT window show 1; window shrink 11<br />
<br />
e un altro in caso volessimo tornare allo stato iniziale (espanderlo per quante finestre occorrono):<br />
/alias UNSPLIT window goto 1; window stick off; window goto 2; window stick off; window goto 3; window stick off; \<br><br />
window goto 4; window stick off; window goto 5; window stick off; window goto 1; window hide<br />
<br />
Stanchi di scrivere sempre la ragione per cui si è away? Mettiamone una fissa:<br />
/alias A away non sono al pc<br />
<br />
e con questo torniamo:<br />
/alias B away<br />
<br />
Capita di dimenticarsi finestre aperte, controlliamo cosa c'è:<br />
/alias WL window list<br />
<br />
Uno dei punti forti di irssi è la ricerca di pattern nel buffer della finestra, proprio come se usassimo grep:<br />
<br />
normale, cerca qualsiasi cosa, ad esempio <code>/ll debian</code> mostrerà tutte le righe che contengono la parola debian:<br />
/alias LL lastlog<br />
<br />
mostra tutte le righe nelle quali si è stati nominati:<br />
/alias LLH lastlog -hilight<br />
<br />
pulisce i risultati, elimina quindi le righe mostrate in precedenza:<br />
/alias LLC lastlog -clear<br />
<br />
Una volta che abbiamo trovato una certa riga con <code>/lastlog</code> vogliamo anche risalire a quel punto per leggere un certo pezzo di conversazione o altro, il comando <code>/scrollback</code> fa proprio questo:<br />
<br />
normale, per il gusto di digitare meno lettere:<br />
/alias SB scrollback<br />
<br />
va all'inizio del buffer:<br />
/alias SBH scrollback home<br />
<br />
va alla fine del buffer:<br />
/alias SBE scrollback end<br />
<br />
va in un punto preciso secondo determinati pattern che spaziano dal numero di riga al timestamp, ad esempio <code>/sbg 21:33</code> risalirà in prossimità della prima corrispondenza dell'orario richiesto, mentre <code>/sbg -1 21:33</code> alla stessa ora ma del giorno precedente, <code>/sbg -11</code> invece scrollerà in su di 11 righe:<br />
/alias SBG scrollback goto<br />
<br />
A questo proposito consiglio di aumentare visibilmente il buffer:<br />
/set scrollback_time 3day<br />
<br />
Tramite il comando <code>/exec</code> possiamo invocare comandi esterni, e qui ci si può davvero sbizzarrire.<br />
<br />
grep:<br />
/alias GREP exec - grep<br />
<br />
tail:<br />
/alias TAIL exec - tail<br />
<br />
controllo del volume (down, up, mute, normal, valore impostabile)<br />
/alias VD exec - echo "\033[35mvolume: $$(amixer set Master 1- | grep -m 1 -Eo '[0-9]+%')"<br />
/alias VU exec - echo "\033[35mvolume: $$(amixer set Master 1+ | grep -m 1 -Eo '[0-9]+%')"<br />
/alias VM exec - echo "\033[35mvolume: $$(amixer set Master 0 | grep -m 1 -Eo '[0-9]+%')"<br />
/alias VN exec - echo "\033[35mvolume: $$(amixer set Master 19% | grep -m 1 -Eo '[0-9]+%')"<br />
/alias VS exec - echo "\033[35mvolume: $$(amixer set Master '$*'% | grep -m 1 -Eo '[0-9]+%')"<br />
<br />
pastebinit, l'opzione <code>-o</code> manda l'output in canale:<br />
/alias PB exec - -o pastebinit<br />
/alias PBC exec - -o $* | pastebinit<br />
/alias PBG exec - -o grep $* | pastebinit<br />
<br />
URL shrinker:<br />
/alias US exec - -o w3m -no-cookie -dump <nowiki>'http://2tu.us/?save=y&url=$*'</nowiki> | awk '/Your tight URL is/ {print $$5}'<br />
<br />
Il comando <code>/alias</code> senza argomenti mostra tutti quelli impostati, mentre <code>/alias w</code> tutti quelli che iniziano con la lettera <code>w</code>.<br />
<br />
==Riferimenti==<br />
* http://irssi.org/documentation<br />
* http://irssi.org/themes<br />
* http://scripts.irssi.org/<br />
* http://wouter.coekaerts.be/site/irssi/aliases<br />
* https://github.com/shabble/irssi-docs/wiki<br />
<br />
<br />
<br />
--[[Utente:Ferdybassi|Ferdybassi]] 16:03, 10 mar 2010 (CET)<br />
----<br />
[[Categoria:Shell]]<br />
[[Categoria:Instant Messaging]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Tabella_Software&diff=29103Tabella Software2012-07-30T00:15:10Z<p>Skizzhg: modificato URL alla guida di irssi</p>
<hr />
<div>Questa tabella cerca di riassumere le alternative libere a diffusi programmi proprietari, a prescindere dal sistema operativo sul quale essi girano. <br />
<br />
Vale la pena di notare che moltissimi programmi liberi che funzionano su Linux possono funzionare, previa ricompilazione, su MacOSX (che è un sistema unix, proprio come Linux) e anche su Windows usando [http://www.cygwin.com Cygwin] (che riproduce un sistema unix), e che spesso è anche possibile trovarli in internet già ricompilati.<br />
<br />
Per rendere la pagina di una qualche utilità è necessario il contributo di molte persone, quindi tutti sono invitati a partecipare inserendo link a nuove applicazioni oppure scrivendo una breve pagina riassuntiva dedicata ad un particolare programma libero.<br />
<br />
Inizialmente la priorità sarà popolare la tabella, quindi metteremo semplicemente un link alla homepage dei progetti liberi. Si potrà poi affiancare al link della homepage un link '''scheda''' che punta all'eventuale pagina del wiki dedicata a quel programma.<br />
<br />
Per ogni proposta, suggerimento o critica usate la pagina di discussione o postate sul forum.<br />
<br />
==Tabella Software==<br />
{| class="wikitable" style="width:100%"<br />
| style="width:20%; text-align:center; background-color:#cedff2;"| '''Descrizione'''<br />
| style="text-align:center; background-color:#cedff2;" | '''Closed Source'''<br />
| style="text-align:center; background-color:#cedff2;" | '''Free Software'''<br />
<br />
|-<br />
| colspan="3" style="text-align:center; background-color:#EFEFEF;" |<br />
===Educativi===<br />
|-<br />
| style="font-size: 90%; text-align:center;" | <br />
====Apprendimento utilizzo tastiera====<br />
|<br />
<br />
|<br />
[http://klavaro.sourceforge.net/ Klavaro] {{linux}}{{deb}}{{windows}}<br />
[http://ktouch.sourceforge.net/ KTouch] {{linux}}{{deb}}(Kde)<br />
<br />
[http://tux4kids.alioth.debian.org/tuxtype/index.php TuxType] {{linux}}{{deb}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Attività Didattiche<br />per Bambini====<br />
|<br />
<br />
|<br />
[http://schoolsplay.sourceforge.net/ Childsplay] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://gcompris.net/ GCompris] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://omnitux.sourceforge.net/ Omnitux] {{linux}}{{udeb|http://sourceforge.net/projects/omnitux/files/omnitux/}}{{windows}}<br />
[http://www.pysycache.org/ Pysycache] {{linux}}{{deb}}-FreeBSD-{{windows}}{{mac}}<br />
[http://wiki.ooo4kids.org/ OOo4Kids] {{linux}}{{udeb|http://deb.ooo4kids.org/}}{{windows}}{{mac}}<br />
[http://tux4kids.alioth.debian.org/tuxmath/index.php TuxMath] {{linux}}{{deb}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
<br />
====Astronomia====<br />
|<br />
<br />
| <br />
[http://celestia.sourceforge.net/ Celestia] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://www.ap-i.net/skychart/it/start/ SkyChart/Cartes du Ciel] {{linux}}{{udeb|http://sourceforge.net/projects/skychart/files/1-%20cdc-skychart/}}{{windows}}{{mac}}<br />
[http://www.stellarium.org/ Stellarium] {{linux}}{{deb}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" | <br />
====Disegno====<br />
|<br />
<br />
|<br />
[http://www.tuxpaint.org/ TuxPaint] {{linux}}{{deb}}{{windows}}{{mac}}[[Immagine:Wiki-logo.png|25px|link=http://guide.debianizzati.org/index.php/Tuxpaint]]<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Dizionari e Traduttori====<br />
|<br />
<br />
|<br />
[http://www.stardict.org/ StarDict] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://www.omegat.org/ OmegaT] {{linux}}{{deb}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Notazione Musicale====<br />
|<br />
[http://www.finalemusic.com/default.aspx Finale] {{windows}}{{mac}}<br />
|<br />
[http://www.denemo.org/ Denemo] (interfaccia a Lilypond) {{windows}}{{mac}}{{linux}}{{deb}}<br />
[http://lilypond.org/ Lilypond] {{windows}}{{mac}}{{linux}}{{deb}}<br />
[http://www.solfege.org/ GNU Solfege] {{linux}}{{deb}}{{windows}}<br />
[http://musescore.org/ MuseScore] {{windows}}{{mac}}{{linux}}{{deb}}<br />
[http://noteedit.berlios.de/ NoteEdit] (sviluppo fermo) {{linux}}{{deb}}<br />
[http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml NtEd] (successore di NoteEdit) {{linux}}{{deb}}<br />
[http://www.mindmatter.it/scoredate/index_it.html ScoreDate] {{linux}}{{deb}}{{windows}}<br />
|-<br />
| colspan="3" style="text-align:center; background-color:#EFEFEF" |<br />
===Network===<br />
|-<br />
| style="font-size: 90%; text-align:center;" | <br />
====Browser Web====<br />
|<br />
[http://windows.microsoft.com/en-US/internet-explorer/products/ie/home Internet Explorer] {{windows}}{{mac}}<br />
[http://www.opera.com Opera] {{windows}}{{mac}}{{linux}}<br />
[http://www.apple.com/safari/ Safari] {{mac}}{{windows}}<br />
[http://www.google.com/chrome/ Chrome] {{windows}}{{mac}}{{linux}}<br />
|<br />
[http://www.mozilla.com/it/firefox/ Firefox] {{linux}}{{windows}}{{mac}}{{deb}}(Iceweasel)<br />
<br />
[http://konqueror.kde.org/ Konqueror] {{linux}}{{deb}}<br />
[http://projects.gnome.org/epiphany/ Epiphany] {{linux}}{{deb}}<br />
[http://caminobrowser.org/ Camino] {{mac}}<br />
[http://www.seamonkey-project.org/ Seamonkey (Suite)] {{windows}}{{mac}}{{linux}}{{deb}}(Iceape)<br />
<br />
[http://www.chromium.org/ Chromium] {{windows}}{{mac}}{{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Client Email====<br />
|<br />
[http://office.microsoft.com/it-it/ Outlook] {{windows}}<br />
[http://www.microsoft.com/ Outlook Express] {{windows}}<br />
[http://www.eudora.com/ Eudora] {{windows}}<br />
[http://www.ritlabs.com/en/products/thebat/ TheBat!] {{windows}}<br />
[http://www.pmail.com/ Pegasus Mail] {{windows}}<br />
|<br />
[http://projects.gnome.org/evolution/ Evolution] {{linux}}{{deb}}<br />
[http://www.mozilla.org/projects/thunderbird/ Thunderbird] {{linux}}{{windows}}{{mac}}{{deb}}(Icedove)<br />
<br />
[http://userbase.kde.org/Kmail Kmail] {{linux}}{{deb}}<br />
[http://sylpheed.sraoss.jp/en/ Sylpheed ] {{linux}}{{windows}}{{deb}}<br />
[http://www.claws-mail.org/ Claws Mail] {{linux}}{{windows}}{{deb}}<br />
[http://www.mutt.org/ Mutt] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====IRC====<br />
|<br />
[http://www.mirc.com/ Mirc] {{windows}}<br />
[http://www.hydrairc.com/ HydraIRC] {{windows}}''[http://www.hydrairc.com/index.php?page=developers non opensource!]''<br />
|<br />
[http://konversation.kde.org/ Konversation] {{linux}}{{deb}}<br />
[http://www.xchat.org/ Xchat] {{linux}}{{windows}}{{deb}}<br />
[http://www.pidgin.im/ Pidgin (ex Gaim)] {{linux}}{{windows}}{{deb}}<br />
[http://developer.pidgin.im/ Finch] {{linux}}{{deb}}<br />
[http://www.kvirc.net/ Kvirc] {{linux}}{{deb}}<br />
[http://quassel.eu/ Quassel] {{linux}}{{deb}}<br />
[http://www.irssi.org/ Irssi] {{linux}}{{deb}}&nbsp;[[Immagine:Wiki-logo.png|25px|link=http://guide.debianizzati.org/index.php/Irssi,_chattare_da_terminale]]<br />
<br />
[http://www.weechat.org/ WeeChat] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Firewall====<br />
|<br />
[http://www.agnitum.com/products/outpost/index.php OutPost] {{windows}}<br />
[http://www.zonealarm.com/ ZoneAlarm] {{windows}}<br />
|<br />
[http://www.netfilter.org/ iptables] {{linux}}{{deb}}&nbsp;[[Immagine:Wiki-logo.png|25px|link=http://guide.debianizzati.org/index.php/Debian_e_iptables]]&nbsp;[[Immagine:Wiki-logo.png|25px|link=http://guide.debianizzati.org/index.php/Impostare_un_firewall_con_uno_script_iptables]]&nbsp;[[Immagine:Wiki-logo.png|25px|link=http://guide.debianizzati.org/index.php/NAT_con_iptables]]<br />
<br />
<br />
<u>Frontend per iptables:</u><br />
<br />
[http://www.simonzone.com/software/guarddog/ Guarddog] {{linux}}{{deb}}<br />
[http://www.kmyfirewall.org/ kmyfirewall] {{linux}}{{deb}}<br />
[http://www.fs-security.com/ Firestarter] {{linux}}{{deb}}<br />
[http://www.shorewall.net/ Shorewall] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Ftp Client====<br />
|<br />
[http://www.globalscape.com/products/ftp_clients.aspx CuteFTP] {{windows}}<br />
|<br />
[http://filezilla-project.org/ Filezilla] {{windows}} <br />
[http://gftp.seul.org/ gftp] {{linux}}{{deb}}<br />
[http://sourceforge.net/projects/kbear/ kbear] {{linux}}<br />
[http://www.kftp.org/ kftpgrabber] {{linux}}{{udeb|http://repos.knio.it}} <br />
[http://kasablanca.berlios.de/ kasablanca] {{linux}}{{deb}}<br />
[http://bareftp.org/ bareFTP] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Instant Messaging====<br />
|<br />
[http://www.icq.com/ Icq] {{windows}}{{mac}}<br />
[http://it.msn.com/ Msn] {{windows}}<br />
[http://www.mercury.im/ Mercury] {{linux}}{{windows}}{{mac}}<br />
|<br />
[http://kopete.kde.org/ Kopete] {{linux}}{{deb}}<br />
[http://www.pidgin.im/ Pidgin (ex Gaim)] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://developer.pidgin.im/ Finch] {{linux}}{{deb}}<br />
[http://www.amsn-project.net/ Amsn] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://emesene-msn.blogspot.com/ Emesene] {{linux}}{{windows}}{{deb}}<br />
[http://www.miranda-im.org/ Miranda] {{windows}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====News Reader====<br />
|<br />
[http://www.microsoft.com Microsoft Outlook] {{windows}}{{mac}}<br />
|<br />
[http://pan.rebelbase.com/ Pan] {{linux}}{{mac}}{{windows}}{{deb}}<br />
[http://userbase.kde.org/KNode/it Knode] {{linux}}{{deb}}<br />
[http://sylpheed.sraoss.jp/en/ Sylpheed] {{linux}}{{windows}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Voip====<br />
|<br />
[http://www.skype.com/ Skype] {{linux}}{{Mac}}{{windows}} <br />
|<br />
[http://trac.qutecom.org/ QuteCom] (ex OpenWengo) {{linux}}{{Mac}}{{windows}}{{deb}}<br />
[http://www.ekiga.org/ Ekiga (ex Gnomemeeting)] {{linux}}{{windows}}{{deb}}<br />
[http://www.twinklephone.com/ Twinkle] {{linux}}{{deb}}<br />
[http://jitsi.org/ Jitsi] {{windows}}{{Mac}}{{linux}}{{udeb|http://download.jitsi.org/jitsi/debian/}}<br />
|- <br />
| colspan="3" style="text-align:center; background-color:#EFEFEF;" |<br />
===Multimedia===<br />
|-<br />
| colspan="3" style="text-align:center;" |<br />
====Audio====<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
=====Audio Player=====<br />
|<br />
[http://www.winamp.com/ Winamp] {{windows}}<br />
|<br />
[http://coolplayer.sourceforge.net/ CoolPlayer] {{windows}}<br />
[http://audacious-media-player.org/ Audacious] {{linux}}{{deb}}<br />
[http://www.xmms.org/ Xmms] {{linux}}<br />
[http://xmms2.org/wiki/Main_Page Xmms2] {{linux}}{{deb}}<br />
[http://sourceforge.net/projects/beepmp/ Beep Media Player] {{linux}}<br />
[http://www.zinf.org/ Zinf] {{linux}}{{windows}}<br />
[http://projects.gnome.org/rhythmbox/ Rhythmbox] {{linux}}{{deb}}<br />
[http://kaffeine.kde.org/ Kaffeine] {{linux}}{{deb}}<br />
[http://moc.daper.net/ MOC] {{linux}}{{deb}}<br />
[http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki MPD] {{linux}}{{windows}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Editor Audio =====<br />
|<br />
[http://www.sonycreativesoftware.com/soundforge Soundforge] {{windows}}<br />
[http://www.adobe.com/it/products/audition.html Adobe Audition] {{windows}}<br />
|<br />
[http://audacity.sourceforge.net/ Audacity] {{linux}}{{mac}}{{windows}}{{deb}}<br />
[http://rezound.sourceforge.net/ Rezound] {{linux}}{{deb}}<br />
[http://www.metadecks.org/software/sweep/ Sweep] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
=====Gestione Raccolte Musicali=====<br />
|<br />
[http://www.apple.com/itunes/ iTunes] {{mac}}{{windows}}<br />
[http://windows.microsoft.com/en-US/windows/products/windows-media-player Windows Media Player] {{windows}}<br />
|<br />
[http://projects.gnome.org/rhythmbox/ Rhythmbox] (player di default di Gnome) {{linux}}{{deb}}<br />
[http://amarok.kde.org/ Amarok] {{linux}}{{deb}}<br />
[http://www.listen-project.org/ Listen] {{linux}}{{deb}}<br />
[http://code.google.com/p/quodlibet/ Quod Libet] {{linux}}{{deb}}<br />
[http://muine.gooeylinux.org/ Muine] {{linux}}{{deb}}<br />
[http://www.last.fm/tools/downloads/ Last FM] {{linux}}{{windows}}{{mac}}<br />
[http://www.clementine-player.org/ Clementine] {{linux}}{{windows}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
=====Gestione dei Tag=====<br />
|<br />
[http://www.xdlab.ru/ Tag Scanner] {{windows}}<br />
|<br />
[http://code.google.com/p/quodlibet/ Ex Falso] (parte di Quod Libet) {{linux}}{{deb}}<br />
[http://packages.debian.org/sid/tagtool Tagtool] {{linux}}{{deb}}<br />
[http://easytag.sourceforge.net/ Easytag] {{linux}}{{windows}}{{deb}}<br />
[http://kid3.sourceforge.net/ Kid3] {{linux}}{{deb}}<br />
|-<br />
| colspan="3" style="text-align:center;" |<br />
====Video====<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
=====Editor Video=====<br />
|<br />
[http://windows.microsoft.com/en-CA/windows7/products/features/movie-maker Windows Live Movie Maker] {{windows}}<br />
|<br />
[http://www.photofilmstrip.org/1-1-Home.html PhotoFilmStrip] (Creazione video da immagini) {{windows}}{{mac}}{{linux}}{{deb}}<br />
[http://imagination.sourceforge.net/ Imagination] (Creazione video da immagini) {{linux}}{{deb}}-FreeBSD<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
=====Video Player=====<br />
|<br />
[http://windows.microsoft.com/en-US/windows/products/windows-media-player Windows Media Player] {{windows}}<br />
|<br />
[http://www.videolan.org/vlc/ VLC] {{linux}}{{mac}}{{windows}}{{deb}}''(e molti altri)''<br />
<br />
[http://www.xine-project.org/home gXine] {{linux}}{{deb}}<br />
[http://www.mplayerhq.hu/design7/news.html MPlayer] {{linux}}{{mac}}{{windows}}{{udeb|http://www.debian-multimedia.org/dists/unstable/main/binary-i386/package/mplayer.php}}<br />
[http://projects.gnome.org/totem/ Totem] {{linux}}{{deb}}<br />
|-<br />
| colspan="3" style="text-align:center;" |<br />
==== Produzione Audio/Musica ====<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Architettura =====<br />
| Non esiste niente del genere!<br />
|<br />
[http://jackaudio.org/ JACK] {{linux}}{{mac}}{{deb}}<br />
[http://qjackctl.sourceforge.net/ qjackctl] (GUI per Jack) {{linux}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Registratori Multitraccia =====<br />
|<br />
[http://www.avid.com/US/ Protools] {{windows}}{{mac}}<br />
|<br />
[http://ardour.org Ardour] {{linux}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Editor Audio+Midi =====<br />
|<br />
[http://www.steinberg.net/en/products/cubase/cubase6_start.html Cubase] {{Windows}}{{mac}}<br />
|<br />
[http://www.rosegardenmusic.com/ Rosegarden] {{linux}}{{deb}}<br />
[http://www.muse-sequencer.org/ Muse] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Sequencer =====<br />
|<br />
<br />
|<br />
[http://www.filter24.org/seq24/ Seq24] {{linux}}{{Deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Editor Loop-Based =====<br />
|<br />
[http://flstudio.image-line.com/ Fruity Loops] {{windows}}<br />
|<br />
[http://lmms.sourceforge.net/ Lmms] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Framework Synth/Effetti =====<br />
|<br />
[http://www.steinberg.net/en/products/vst.html VST] {{windows}}{{mac}}<br />
|<br />
[http://dssi.sourceforge.net/ DSSI] {{linux}}{{deb}}<br />
[http://www.ladspa.org/ LADSPA] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
===== Synth =====<br />
|<br />
<br />
|<br />
[http://zynaddsubfx.sourceforge.net/ ZynAddSubFX] {{linux}}{{windows}}{{deb}}<br />
[http://drobilla.net/software/ingen/ Ingen] {{linux}}<br />
[http://www.smbolton.com/whysynth.html WhySynth] {{linux}}<br />
|-<br />
| style="font-size: 104.4%; text-align:center;" |<br />
<br />
===== Distribuzioni Gnu/linux =====<br />
|<br />
[http://www.sonicspot.com/studio-to-go/studio-to-go.html Studio To Go] {{windows}}<br />
|<br />
[http://www.64studio.com/ 64studio] {{linux}}<br />
[http://ubuntustudio.org/ Ubuntu Studio] {{linux}}<br />
|-<br />
| colspan="3" style="text-align:center; background-color:#EFEFEF"|<br />
<br />
===Grafica===<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Editing e Disegno====<br />
|<br />
[http://windows.microsoft.com/it-IT/windows7/Getting-started-with-Paint Microsoft Paint] {{windows}}<br />
[http://www.getpaint.net/ Paint.net] {{windows}}<br />
|<br />
[http://www.gnu.org/software/gpaint/ GNU Paint] {{linux}}{{deb}}<br />
[http://www.krita.org/ Krita] {{linux}}{{deb}}(kde: incluso nella suite koffice)<br />
<br />
[http://mtpaint.sourceforge.net/ mtPaint] {{linux}}{{deb}}{{windows}}<br />
[http://mypaint.intilinux.com/ MyPaint] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://paintbrush.sourceforge.net/ Paintbrush] {{mac}}<br />
[http://pinta-project.com/ Pinta] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://mtpaint.sourceforge.net/rgbpaint.html rgbPaint] {{linux}}{{deb}}<br />
http://converseen.sourceforge.net/<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Editor-Conversione Immagini====<br />
|<br />
[http://www.faststone.org/FSResizerDetail.htm FastStone Photo Resizer] {{windows}}<br />
[http://www.xnview.com/ XnView] {{linux}}{{windows}}{{mac}}<br />
|<br />
[http://converseen.sourceforge.net/ Converseen] {{linux}}{{windows}}<br />
[http://www.imagemagick.org/script/index.php ImageMagick] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://www.exactcode.de/site/open_source/exactimage/ ExactImage] {{linux}}{{deb}}<br />
[http://www.graphicsmagick.org/ GraphicsMagick] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://photobatch.stani.be/ Phatch] {{linux}}{{deb}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Fotoritocco====<br />
|<br />
[http://www.corel.com/servlet/Satellite/us/en/Product/1184951547051 Paint Shop Pro] {{windows}}<br />
[http://www.adobe.com/it/special/products/photoshop/compare/ Adobe PhotoShop] {{windows}}{{mac}}<br />
|<br />
[http://www.cinepaint.org/ CinePaint] {{linux}}<br />
[http://kornelix.squarespace.com/fotoxx/ Fotoxx] {{linux}}{{deb}}{{udeb|http://kornelix.squarespace.com/packages/}}<br />
[http://www.gimp.org/ GIMP] {{windows}}{{linux}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
<br />
====Gestione Foto====<br />
|<br />
[http://picasa.google.com/ Picasa] {{windows}}{{linux}}<br />
[http://www.apple.com/ilife/iphoto/ iPhoto] {{mac}}<br />
|<br />
[http://live.gnome.org/gthumb Gthumb] {{linux}}{{deb}}<br />
[http://www.digikam.org/ Digikam] {{linux}}{{deb}}<br />
[http://geeqie.sourceforge.net/ Geeqie] {{linux}}{{deb}}<br />
[http://f-spot.org/ F-Spot] {{linux}}{{deb}}<br />
[http://yorba.org/shotwell/ shotwell] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Vettoriale====<br />
|<br />
[http://www.corel.com/servlet/Satellite/us/en/Product/1191272117978 CorelDRAW] {{windows}}<br />
|<br />
[http://sourceforge.net/projects/sodipodi/ Sodipodi] {{windows}}{{linux}}<br />
[http://www.inkscape.org/ InkScape] {{windows}}{{linux}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Immagini RAW====<br />
| ''Vari plugin commerciali''<br />
|<br />
[http://www.cybercom.net/~dcoffin/dcraw/ dcraw] {{linux}}{{deb}}<br />
[http://ufraw.sourceforge.net/ UFRaw] {{linux}}{{deb}}<br />
[http://www.darktable.org/ Darktable] {{mac}}{{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Grafica Tridimensionale====<br />
|<br />
[http://usa.autodesk.com/maya/ Maya] {{windows}}{{linux}}{{mac}}<br />
[http://usa.autodesk.com/3ds-max/ 3D Studio Max] {{windows}}<br />
[http://www.rhino3d.com/ Rhinoceros] {{windows}}<br />
[http://www.newtek.com/lightwave/ Lightwave 3D] {{windows}}{{mac}}<br />
[http://www.povray.org/ POV-Ray] {{windows}}{{linux}}{{mac}}{{deb}}<br />
[http://usa.autodesk.com/adsk/servlet/pc/index?id=13571168&siteID=123112 Softimage XSI] {{windows}}{{linux}}<br />
|<br />
[http://blender.org/ Blender] {{windows}}{{linux}}{{mac}}- Solaris - Irix - FreeBSD -{{deb}}<br />
[http://www.k-3d.org/ K-3D] {{windows}}{{linux}}{{deb}}<br />
[http://www.wings3d.com/ Wings 3D] {{windows}}{{linux}}{{mac}}{{deb}}<br />
[http://www.artofillusion.org/ Art of Illusion] {{windows}}{{linux}}{{mac}}- Unix<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====CAD-CAM====<br />
|<br />
[http://www.autodesk.it/ AutoCAD] {{windows}}<br />
[http://www.3ds.com/it/products/draftsight/free-cad-software/ DraftSight] {{linux}}{{mac}}{{windows}}<br />
[http://www.bricsys.com/it_IT/ Bricscad] {{windows}}{{linux}}<br />
[http://varicad.com/ VariCAD] {{windows}}{{linux}}<br />
[http://www.qcad.org/en/ qcad] {{windows}}{{linux}}{{mac}}<br />
|<br />
[http://librecad.org/ LibreCAD] {{linux}}{{mac}}{{windows}}{{deb}}<br />
[http://free-cad.sourceforge.net/ FreeCAD] {{linux}}{{mac}}{{windows}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Rendering====<br />
|<br />
[https://renderman.pixar.com/ RenderMan] {{windows}}{{mac}}<br />
[http://www.3delight.com/en/ 3Delight] {{windows}}{{linux}}{{mac}}<br />
[http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=13566140 Mental Ray] {{windows}}{{linux}}{{mac}}<br />
[http://www.chaosgroup.com/en/2/index.html V-Ray] {{windows}}<br />
[http://www.cebas.com/ finalRender] {{windows}}<br />
[http://www.povray.org/ POV-Ray] {{windows}}{{linux}}{{mac}}{{deb}}<br />
[http://www.maxwellrender.com/ Maxwell Render] {{windows}}{{linux}}{{mac}}<br />
[http://www.indigorenderer.com/ Indigo] {{windows}}{{linux}}(con wine) <br />
|<br />
[http://www.blender.org/ Blender interno] {{windows}}{{linux}}{{mac}}{{deb}}<br />
[http://www.yafray.org/ YafRay] {{windows}}{{linux}}{{mac}}{{deb}}<br />
[http://www.aqsis.org/ Aqsis] {{windows}}{{linux}}{{mac}}<br />
[http://www.renderpixie.com/ Pixie] {{windows}}{{linux}}{{mac}}<br />
[http://sunflow.sourceforge.net/ Sunflow] {{windows}}{{linux}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====ScreenShot<br />(Cattura Schermate)====<br />
|<br />
[http://www.faststone.org/FSCaptureDetail.htm FastStone Capture] {{windows}}<br />
[http://www.picpick.org/ PicPick] {{windows}}<br />
[http://www.techsmith.com/snagit.html Snagit] {{windows}}{{mac}}<br />
|<br />
[http://getgreenshot.org/ Greenshot] {{windows}}<br />
[http://www.kde.org/applications/graphics/ksnapshot/ KSnapshot] {{linux}}{{deb}}(kde parte del pacchetto grafico)<br />
<br />
[http://lightscreen.sourceforge.net/ Lightscreen] {{windows}}<br />
[http://shutter-project.org/ Shutter] {{linux}}{{deb}}<br />
[http://code.google.com/p/sharex/ ShareX] successore di Zscreen {{windows}}<br />
|-<br />
| colspan="3" style="text-align:center; background-color:#EFEFEF;" |<br />
<br />
===Office===<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Suite Office====<br />
|<br />
[http://office.microsoft.com/it-it/ Microsoft Office] {{windows}}{{mac}}<br />
[http://www.software602.com/ 602 PC Suite] {{windows}}<br />
<!--[http://www.sun.com/software/star/staroffice/ StarOffice] {{linux}}{{windows}}--><br />
|<br />
[http://www.libreoffice.org/ LibreOffice] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.koffice.org Koffice] {{linux}}{{deb}}<br />
[http://live.gnome.org/GnomeOffice GnomeOffice] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.openoffice.org OpenOffice.Org] {{linux}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Edito Testi [http://it.wikipedia.org/wiki/Word_processor Word Processor]====<br />
|<br />
[http://office.microsoft.com/it-it/ Microsoft Word] {{windows}}{{mac}}<br />
[http://www.microsoft.com/products/works/default.mspx Microsoft Works] {{windows}}<br />
|<br />
[http://www.abisource.com/ Abiword] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.koffice.org Kword] (Parte di Koffice) {{linux}}{{deb}}<br />
[http://www.libreoffice.org/ LibreOfficeWriter] (Parte di LibreOffice) {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.openoffice.org OpenOfficeWriter] (Parte di OpenOffice) {{linux}}{{windows}}{{mac}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Editor di Testi [http://it.wikipedia.org/wiki/Desktop_publishing DTP]====<br />
|<br />
[http://www.adobe.com/products/pagemaker/index.html Adobe PageMaker] {{windows}}{{mac}}<br />
[http://office.microsoft.com/it-it/publisher/ Microsoft Office Publisher] {{windows}}(parte di Microsoft Office)<br />
<br />
[http://www.quark.com/ QuarkXPress] {{windows}}{{mac}}<br />
|<br />
[http://www.lyx.org/ Lyx] {{linux}}{{mac}}{{windows}}{{deb}}<br />
[http://www.stacken.kth.se/project/pptout/ Passepartout] {{linux}}{{mac}}{{deb}}<br />
[http://www.scribus.net/canvas/Scribus Scribus] {{linux}}{{mac}}{{windows}}{{deb}}<br />
'''''TeX/LaTeX''''' Informazioni:[http://www.guitex.org/ GuIT]{{linux}}{{windows}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Editor di Sceneggiature====<br />
|<br />
[http://www.finaldraft.com/ Final Draft] {{mac}}{{windows}}<br />
|<br />
[http://www.trelby.org/ Trelby] {{linux}}{{windows}}{{udeb|http://www.trelby.org/download}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Fogli di Calcolo====<br />
|<br />
[http://office.microsoft.com/it-it/ Microsoft Excel] {{windows}}{{mac}}<br />
[http://www.microsoft.com/products/works/default.mspx Microsoft Works] {{windows}}<br />
|<br />
[http://projects.gnome.org/gnumeric/ Gnumeric] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.koffice.org Kspread] (Parte di Koffice) {{linux}}{{deb}}<br />
[http://www.libreoffice.org/ LibreOfficeCalc] (Parte di LibreOffice) {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.openoffice.org OpenOfficeCalc] (Parte di OpenOffice.Org) {{linux}}{{windows}}{{mac}}<br />
|-<br />
| colspan="3" style="text-align:center; background-color:#EFEFEF;" |<br />
===Programmi Scientifici===<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Matlab====<br />
|<br />
[http://www.mathworks.com/ Matlab] {{linux}}{{windows}}{{mac}}<br />
|<br />
[http://www.gnu.org/software/octave/ Octave] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://www.scilab.org/ Scilab] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://matplotlib.sourceforge.net/ Matplotlib] {{linux}}{{windows}}{{mac}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Analisi Statistica====<br />
|<br />
[http://www.spss.com/ SPSS] {{windows}}<br />
|<br />
[http://www.r-project.org/ R-Project] {{linux}}{{windows}}{{mac}}{{deb}}<br />
|-<br />
|colspan="3" style="text-align:center; background-color:#EFEFEF;" |<br />
===Sviluppo/Programmazione - Strumenti Vari===<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Ambiente di Sviluppo Integrato [http://it.wikipedia.org/wiki/Integrated_development_environment IDE]====<br />
| <br />
[http://www.microsoft.com/visualstudio/it-it Microsoft Visual Studio] {{windows}}<br />
[http://www.ultraedit.com/products/uestudio/ UEStudio] {{windows}}<br />
|<br />
[http://www.aptana.com/ Aptana] {{linux}}{{windows}}{{mac}}<br />
[http://netbeans.org/ NetBeans] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://www.icsharpcode.net/OpenSource/SD/Default.aspx SharpDevelop] {{windows}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Diff-Merge dei file====<br />
| <br />
[http://cmpp.coodesoft.com/ Compare++] {{windows}}<br />
[http://www.grigsoft.com/wincmp3.htm Compare It] {{windows}}<br />
|<br />
[http://kdiff3.sourceforge.net/ KDiff3] {{linux}}{{deb}}{{windows}}{{mac}}<br />
[http://kile.sourceforge.net/ Kile] {{linux}}{{deb}}(kde)<br />
<br />
[http://meldmerge.org/ Melde] {{linux}}{{deb}}<br />
[http://winmerge.org/ WinMerge] {{windows}}<br />
[http://furius.ca/xxdiff/ xxdiff] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Editor di Testo orientati<br> alla programmazione====<br />
| <br />
[http://www.carthagosoft.net/twistpad/index.php Twistpad] {{windows}}<br />
[http://www.ultraedit.com/ Ultraedit] {{windows}}{{mac}}{{linux}}<br />
|<br />
[http://www.gnu.org/software/emacs/emacs.html Emacs] {{linux}}{{windows}}{{mac}}(''e molti altri''){{deb}}<br />
[http://projects.gnome.org/gedit/ Gedit] {{linux}}{{deb}}<br />
[http://www.geany.org/Main/About Geany] {{windows}}{{linux}}{{deb}}<br />
[http://www.vim.org/ GVim] (interfaccia grafica per Vim){{windows}}{{linux}}<br />
[http://kate.kde.org/ Kate] {{linux}}{{deb}}<br />
[http://www.kdevelop.org/ KDevelop] {{linux}}{{deb}}<br />
[http://kile.sourceforge.net/ Kile] {{linux}}{{deb}}(kde)<br />
<br />
[http://kate-editor.org/about-kate/ KWrite] {{linux}}{{deb}}<br />
[http://mooedit.sourceforge.net/ medit] {{linux}}{{deb}}{{windows}}<br />
[http://notepad-plus-plus.org/ Notepad++] {{windows}}<br />
[http://www.scintilla.org/SciTE.html Scite] {{linux}}{{deb}}{{windows}}<br />
[http://www.vim.org/ Vim] {{linux}}{{windows}}{{mac}}(''e molti altri''){{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Editor Web [http://it.wikipedia.org/wiki/WYSIWYG WYSIWYG]====<br />
|<br />
[http://www.adobe.com/it/products/dreamweaver.html Adobe Dreamweaver] {{windows}}{{mac}}<br />
|<br />
[http://www.w3.org/Amaya/ Amaya] {{linux}}{{udeb|http://www.w3.org/Amaya/User/BinDist.html}}{{windows}}{{mac}}<br />
[http://bluegriffon.org/ BlueGriffon] {{linux}}{{windows}}{{mac}}<br />
[http://kompozer.net/ KompoZer] {{linux}}{{windows}}{{mac}}{{deb}}<br />
|-<br />
|colspan="3" style="text-align:center; background-color:#EFEFEF;" |<br />
=== Utilità===<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Backup Dati====<br />
|<br />
[http://www.microsoft.com/en-us/default.aspx Windows Backup] {{windows}}<br />
[http://arcserve.com/Products/CA-ARCserve-Backup.aspx ARCserve Backup] {{windows}}<br />
|<br />
[http://www.bacula.org/en/ Bacula] {{linux}}{{windows}}{{mac}}{{deb}}<br />
[http://jr.falleri.free.fr/keep Keep] {{linux}}<br />
[http://backup2l.sourceforge.net/ backup2l] {{linux}}{{deb}}{{udeb|http://sourceforge.net/projects/backup2l/files/backup2l/}}[[Immagine:Wiki-logo.png|25px|link=http://guide.debianizzati.org/index.php/Mai_pi%C3%B9_senza_backup]]<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Backup e Ripristino Immagini Disco====<br />
|<br />
[http://www.acronis.com/ Acronis True Image] {{windows}}<br />
[http://it.norton.com/ghost/ Norton Ghost] {{windows}}<br />
|<br />
[http://clonezilla.org/ Clonezilla] {{linux}}{{windows}}{{mac}}<br />
[http://sourceforge.net/projects/g4l/ g4l] {{linux}}{{windows}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====File Manager====<br />
|<br />
[http://www.microsoft.com/en-us/default.aspx Explorer] {{windows}}<br />
[http://www.ghisler.com/ Total Commander] {{windows}}<br />
|<br />
[http://live.gnome.org/Nautilus Nautilus] (default di Gnome) {{linux}}{{deb}}<br />
[http://dolphin.kde.org/ Dolphin] (default di KDE) {{linux}}{{deb}}<br />
[http://konqueror.kde.org/ Konqueror] {{linux}}{{deb}}<br />
[http://roscidus.com/desktop/ROX-Filer ROX-filer] {{linux}}{{deb}}<br />
[http://www.obsession.se/gentoo/ Gentoo] {{linux}}{{deb}}<br />
[http://roland65.free.fr/xfe/ Xfe] {{linux}}{{deb}}<br />
[http://www.krusader.org/ Krusader] {{linux}}{{deb}}<br />
[http://tuxcmd.sourceforge.net/ Tux-commander] {{linux}}<br />
[http://www.nongnu.org/gcmd/ Gnome-commander] {{linux}}{{deb}}<br />
[http://thunar.xfce.org/index.html Thunar] {{linux}}{{deb}}<br />
[http://www.emelfm2.net/ emelFM2] {{linux}}<br />
[http://pcmanfm.sourceforge.net/ PCManFM] {{linux}}{{deb}}<br />
[http://www.midnight-commander.org/ MC] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Gestione Filesystem====<br />
| <br />
<br />
|<br />
[http://ftp.kernel.org/pub/linux/utils/util-linux/ fdisk] {{linux}}{{deb}}<br />
[http://ftp.kernel.org/pub/linux/utils/util-linux/ cfdisk] {{linux}}{{deb}}<br />
[http://www.gnu.org/software/parted/ parted] {{linux}}{{deb}}<br />
[http://qtparted.sourceforge.net/ qtparted] {{linux}}{{deb}}<br />
[http://gparted.sourceforge.net/ gparted] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Masterizzazione====<br />
|<br />
[http://www.nero.com/ita/index.html Nero Burning Rom] {{windows}}{{linux}}<br />
|<br />
[http://www.k3b.org/ K3b] {{linux}}{{deb}}<br />
[http://projects.gnome.org/brasero/ Brasero] {{linux}}{{deb}}<br />
[http://graveman.tuxfamily.org/index.php?l=e Graveman] {{linux}}<br />
[http://www.xcdroast.org/ X-CD-roast] {{linux}}{{deb}}<br />
[http://cdw.sourceforge.net/ cdw] {{linux}}{{deb}}<br />
[http://bashburn.dose.se/ bashburn] {{linux}}{{deb}}<br />
|-<br />
| style="font-size: 90%; text-align:center;" |<br />
====Sincronizzazione File e Cartelle====<br />
|<br />
[http://www.microsoft.com/en-us/download/details.aspx?id=15155/ SyncToy] {{windows}}<br />
|<br />
[http://freefilesync.sourceforge.net/ FreeFileSync] {{linux}}{{windows}}<br />
[http://www.opbyte.it/grsync/ Grsync] (gui per rsync) {{linux}}{{deb}}{{mac}}{{windows}}<br />
[http://synkron.sourceforge.net/ Synkron] {{linux}}{{mac}}{{windows}}<br />
[http://www.cis.upenn.edu/~bcpierce/unison/ Unison] {{linux}}{{deb}}-FreeBSD-{{mac}}{{windows}}<br />
|}<br />
<br />
==Legenda==<br />
Nella tabella sono presenti alcuni simboli, per identificare quali sistemi operativi sono supportati dalle applicazioni:<br />
: {{linux}} Indica che il programma è compatibile con Linux.<br />
: {{windows}} Indica che il programma è compatibile con Windows.<br />
: {{mac}} Indica che il programma è compatibile con MacOs.<br />
<br />
Sono, inoltre, presenti delle swirl, che indicano la presenza dei programmi in formato .deb.<br />
: {{deb}} Indica che il programma è stato pacchettizzato ed è presente nei repository ufficiali di Debian.<br />
: {{udeb|http://example.org/packages/}} Indica che il programma è stato pacchettizzato, ma è presente in un repository non ufficiale.<br />È inoltre presente un link al repository in cui si trova il pacchetto.<br />
<br />
<br />
La seguente icona rimanda ad una guida di debianizzati presente in questo wiki, relativa al programma in oggetto:<br />
: [[Immagine:Wiki-logo.png|25px|link=http://example.org/titolo_pagina]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Fluxbox,_un_Window_Manager_per_Computer_con_poche_risorse&diff=29102Fluxbox, un Window Manager per Computer con poche risorse2012-07-30T00:03:51Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
<br />
==Introduzione==<br />
Questa guida mostra come installare il Window Manager Fluxbox su un PC in cui sia stata fatta un'installazione base di Debian, senza server grafico X. Fluxbox è un Window Manager leggero, che consuma poche risorse di sistema e che può dare nuova vita a macchine obsolete<br />
<br />
==Installazione==<br />
Come al solito in Debian l'installazione consta di pochi comandi:<br />
<pre><br />
# aptitude install xserver-xorg fluxbox<br />
</pre><br />
<br />
==Programmi utili==<br />
Sebbene Fluxbox e il nostro server grafico X siano già funzionanti, abbiamo bisogno ancora di alcuni programmi, prima di poter utilizzare con profitto il nostro nuovo Window Manager:<br />
<br />
# aptitude install xterm feh<br />
<br />
Per apprendere come aggiungere programmi al menù di Fluxbox vedere la sezione apposita più avanti.<br />
<br />
==Avvio di Fluxbox==<br />
Notare che in questa installazione di Fluxbox non è stato installato alcun Login Manager; pertanto sarà necessario effettuare il login in maniera testuale da shell e poi avviare Fluxbox.<br/><br />
<br />
Prima di poterlo fare, però, è necessario creare il file di avvio per <code>startx</code>:<br />
<br />
$ echo "exec startfluxbox" > ~/.xinitrc<br />
<br />
Se preferite, è possibile installare un Login Manager come <code>xdm, gdm, kdm</code>.<br/><br />
<br />
L'avvio di fluxbox dal gestore di login avviene andando a leggere il file '''<code>/usr/share/xsessions/fluxbox.desktop</code>''' il cui contenuto è il seguente:<br />
<br />
<pre><br />
[Desktop Entry]<br />
Name=Fluxbox<br />
Comment=Highly configurable and low resource X11 Window manager<br />
Exec=/usr/bin/startfluxbox<br />
Terminal=false<br />
TryExec=/usr/bin/startfluxbox<br />
Type=Application<br />
<br />
[X-Window Manager]<br />
SessionManaged=true<br />
</pre><br />
<br />
==Abbellimento del Desktop==<br />
Prima di installare altre applicazioni ci dedicheremo a rendere più gradevole l'ambiente di lavoro, installando:<br />
<br />
# aptitude install conky<br />
<br />
Per fare in modo che conky appaia sul desktop di Fluxbox è necessario creare il suo file di configurazione:<br />
<br />
$ conky -C > $HOME/.conkyrc<br />
<br />
modificando poi al suo interno la linea '''own_window yes''' in '''own_window no'''<br />
<br />
Per avere conky che si avvia insieme a Fluxbox modificate invece il file:<br />
<br />
$ nano $HOME/.fluxbox/startup<br />
<br />
aggiungendo la linea<br />
<br />
conky &<br />
<br />
'''prima''' della linea<br />
<br />
exec /usr/bin/fluxbox<br />
<br />
che deve essere sempre l'ultima.<br />
<br />
==Software per vecchi Laptop==<br />
Installiamo adesso alcuni software leggeri, adatti per notebook non proprio giovanissimi:<br />
<br />
# aptitude install wifi-radar cpufreqd<br />
<br />
Quindi avviamo il demone appena installato:<br />
<br />
# /etc/init.d/cpufreqd start<br />
<br />
Se il demone non partisse, occorre caricare il corretto modulo:<br />
<br />
* AMD Sempron/Athlon/MP ( K7 )<br />
<br />
# modprobe powernow-k7<br />
<br />
* AMD Duron/Sempron/Athlon/Opteron 64 ( K8 )<br />
<br />
# modprobe powernow-k8<br />
<br />
* Intel Core Duo and Intel Pentium M<br />
<br />
# modprobe speedstep-centrino<br />
<br />
* Intel Pentium IV<br />
<br />
# modprobe acpi-cpufreq<br />
<br />
==Software applicativo==<br />
# aptitude install iceweasel icedove centericq htop vim gftp abiword gnumeric<br />
<br />
==Dove trovare i temi GTK==<br />
È possibile ottenere i temi GTK da [http://xfce-look.org/index.php?xcontentmode=100 xfce-look.org],<br />
[http://gnome-look.org/index.php?xcontentmode=100 gnome-look.org], [http://browse.deviantart.com/?qh=&section=&q=GTK+theme deviantart.com]<br />
<br />
Per installare i temi c'è solo bisogno di decomprimere questi file in <code>~/.themes</code>. Quindi:<br />
<br />
<pre><br />
$ mkdir ~/.themes<br />
$ cd ~/.themes<br />
$ tar -zxvf theme-name-here.tar.gz<br />
$ tar -jxvf theme-name-here.tar.bz2<br />
</pre><br />
<br />
Alcuni temi sono installabili anche via <code>aptitude</code>:<br />
<br />
# aptitude install gtk2-engines-pixbuf<br />
<br />
oppure<br />
<br />
# aptitude install gtk2-engines-*<br />
<br />
Per utilizzare i temi scaricati, basta installare:<br />
<br />
# aptitude install gtk-theme-switch<br />
<br />
oppure<br />
<br />
# aptitude install gtk-chtheme<br />
<br />
==Il menù di Fluxbox==<br />
Il file di configurazione del menù di fluxbox di default è <code>~/.fluxbox/menu</code>. <br/><br />
<br />
Il file ha una struttura molto elementare. Di seguito è riportato uno stralcio del file di configurazione del menù di default su debian (/etc/X11/fluxbox/fluxbox-menu):<br />
<br />
<pre><br />
[begin] (Fluxbox)<br />
# Automatically generated file. Do not edit (see /usr/share/doc/menu/html/index.html)<br />
[submenu] (Aiuto) {}<br />
[exec] (Debian Reference) {/usr/bin/debian-reference} <br />
[exec] (Info) { x-terminal-emulator -T "Info" -e info} <br />
[exec] (Xman) {xman} <br />
[end]<br />
[submenu] (Applicazioni) {}<br />
[submenu] (Editor) {}<br />
[exec] (Nano) { x-terminal-emulator -T "Nano" -e /bin/nano} <br />
[end]<br />
[submenu] (Emulatori di terminale) {}<br />
[exec] (XTerm) {xterm} <br />
[exec] (XTerm (Unicode\)) {uxterm} <br />
[end]<br />
[submenu] (Grafica) {}<br />
[exec] (X Window Snapshot) {xwd | xwud} <br />
[end]<br />
[submenu] (Navigazione web) {}<br />
[exec] (w3m) { x-terminal-emulator -T "w3m" -e /usr/bin/w3m /usr/share/doc/w3m/MANUAL.html} <br />
[end]<br />
[end] <br />
</pre><br />
<br />
Le principali caratteristiche di questo file di testo sono:<br />
# Ogni riga ha una sintassi molto intuitiva e semplice;<br />
# L'indentatura del codice permette di "immaginarsi" il risultato finale.<br />
# Ogni riga ha una sintassi di questo tipo:<br />
<br />
<pre><br />
[tag] (label o nome del file) {comando o nomefile}<br />
</pre><br />
<br />
L'indentatura del file è una caratteristica molto importante che semplfica l'operazione di generazione del menù e della sua successiva modifica, perciò è bene mantenere questa struttura gerarchica ogni volta che si mette mano al menù.<br />
<br />
===Sintassi generica delle righe del file ===<br />
Ciascuna riga del file di configurazione del menù di fluxbox ha una struttura di questo tipo:<br />
[tag] (label o nome del file) {comando o nomefile}<br />
<br />
Perciò a ciascuna coppia di parentesi corrisponde un significato ben preciso e questo aiuta molto a far risparmiare tempo in fase di modifica del file. <br/><br />
<br />
Il menù inizia sempre con una riga di codice simile alla seguente:<br />
[begin] (Titolo_menù)<br />
<br />
il tag <code>[begin]</code> deve essere presente nel file, altrimenti fluxbox cerca il file di configurazione di default del sistema, mentre (Titolo_menù) può essere omesso. Titolo_menù è il testo che verrà visualizzato in cima al menù di fluxbox. <br/><br />
<br />
Per la chiusura del menù viene utilizzata il tag <code>[end]</code>. Questo può essere utilizzato sia per chiudere un menù che un sottomenù. In ogni menù deve essere presente un tag <code>[end]</code> per ogni tag <code>[submenu]</code> più uno che comunque è presente e che corrisponde al tag <code>[begin]</code>. Quindi un menù ha la seguente struttura:<br />
<pre><br />
[begin] (Titolo Menu)<br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
Per creare un sottomenù nel menù principale si usa il tag <code>[submenu]</code>. Ogni sottomenù viene chiuso dal tag <code>[end]</code>. Il tag <code>[submenu]</code> deve essere seguito dagli attributi (label) e . Il secondo attributo è opzionale e se omesso viene assunto uguale a (label). Riassumendo un sottomenù avrà il seguente aspetto:<br />
<pre><br />
[submenu] (label) <br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
dove tra <code>[submenu]</code> e <code>[end]</code> vengono incluse tutte le voci del menù. <br/><br />
<br />
Dal momento che fluxbox legge i menù in maniera ricorsiva non c'è limite al numero di sottomenù che possono essere annidati, vi consiglio però di non esagerare per non complicare troppo la ricerca di una applicazione.<br />
<br />
===Elemento del menù (Eseguibili)===<br />
Per popolare ciascun menù di voci che corrispondono all'esecuzione di un programma si utilizza la seguente istruzione:<br />
[exec] (label) {command}<br />
<br />
A questa riga viene associata nel menù una voce che viene chiamata "label" e che esegue il comando "command".<br />
<br />
===Elemento del menù (file e directory)===<br />
Per inserire il collegamento ad un file o ad una directory all'interno del menù di fluxbox si usa la seguente riga:<br />
[include] (nome_file_o_dir)<br />
<br />
===Separatore===<br />
A volte, per aumentare la chiarezza del menù può essere utile inserire un separatore. Questo può essere aggiunto inserendo una riga contenente l'istruzione <code>[separator]</code>:<br />
[separator]<br />
<br />
===Istruzioni aggiuntive===<br />
Fluxbox mette a disposizione una serie di istruzioni addizionali per personalizzare ulteriormente il menù. Le principali sono:<br />
* Inserimento di una voce che permette la chiusura e l'uscita da fluxbox<br />
[exit] (label)<br />
<br />
* Inserimento di una voce "estetica nel menù". In altre parole: inserimento di una voce che se selezionata non comporta l'esecuzione di nessun comando. La sintassi è:<br />
[nop] (label)<br />
<br />
se label viene omessa di default viene inserita una voce vuota.<br />
<br />
* Rilettura di tutti i file di configurazione di fluxbox<br />
[reconfig] (label)<br />
<br />
Questa voce è utile per creare nuovi temi e stili e non dover rilanciare fluxbox tutte le volte che è necessario testare il tema.<br />
* Riavvio del solo eseguibile di fluxbox, X e gli eventuali programmi rimarranno in esecuzione<br />
[restart] (label) {command}<br />
<br />
Verrà creata una voce nel menù con il nome "label" e una volta selezionata fluxbox verrà arrestato e all'uscita da fluxbox verrà eseguito il comando "command". Comunemente il comando fornito è quello necessario ad avviare un altro windows manager. Il parametro "command" è opzionale.<br />
* Voce per la configurazione di fluxbox<br />
[config] (label)<br />
<br />
Viene inserita una voce nel menù chiamata "label" che permette di accedere a numerose opzioni di configurazione riguardanti il comportamento delle finestre.<br />
* Directory dei wallpaper<br />
<br />
È possibile inserire una voce all'interno del menù che permetta di cambiare rapidamente lo sfondo di fluxbox attraverso la seguente riga:<br />
[wallpapers] (directory) {command}<br />
<br />
Cliccando su una immagine questa viene immediatamente impostata come sfondo. Ovviamente <code>directory</code> è la directory contenente le immagini.<br />
<br />
==Windowmenu==<br />
Windowmenu è il menù che si ottiene con un click destro del mouse sulla barra del titolo di una finestra, premere il tasto menù sulla barra del titolo, utilizzare il comando '':WindowMenu'' tramite tastiera o anche dal menù delle aree di lavoro. Di default ha opzioni per massimizzare, minimizzare, nascondere la finestra ecc, impostare le finestre su diversi livelli o inviare ad aree di lavoro e ricordare le opzioni delle finestre.<br />
<br />
===Modificare il menù===<br />
Windowmenu è come il rootmenu, eccetto alcune voci speciali che il menù normale non ha, il file di configurazione è ~/.fluxbox/windowmenu.<br />
<br />
Il menù dovrebbe iniziare con [begin] e finire con [end].<br />
<br />
Si possono usare i normali elementi del menù oppure quelli speciali della lista sottostante. Notare che (label) è facoltativo, senza di esso sarà utilizzato quello di default:<br />
<br />
[shade] (label)<br />
Questa opzione riduce la finestra alla sola barra del titolo "arrotolandola".<br />
<br />
Lo stesso effetto cliccando due volte sul titolo, scegliendo "Riduci a barra", utilizzando una scorciatoia da tastiera o la rotellina del mouse (comandi :Shade :ShadeOn :ShadeOff).<br />
<br />
[close] (label)<br />
Chiude la finestra. Proprio come premendo il tasto X nell'angolo.<br />
<br />
[stick] (label)<br />
Rende la finestra appiccicosa, ovvero visibile su tutte le aree di lavoro.<br />
<br />
[maximize] (label)<br />
Massimizza e ripristina la finestra.<br />
<br />
[iconify] (label)<br />
Minimizza (riduce a icona) la finestra.<br />
<br />
[raise] (label)<br />
Solleva la finestra al livello superiore portandola quindi in primo piano.<br />
<br />
[lower] (label)<br />
Porta la finestra al livello inferiore, dietro tutte le altre.<br />
<br />
[sendto] (label)<br />
Mostra il menù "Invia a..." che permette l'invio delle finestre in un'altra area di lavoro.<br />
<br />
[layer] (label)<br />
Mostra il menù "Livello..." che permette all'utente di cambiare facilmente il livello della finestra.<br />
<br />
[extramenus]<br />
Mostra il menù "Ricorda..." per salvare alcune impostazioni della finestra nel file ~/.fluxbox/apps.<br />
<br />
[alpha] (label)<br />
Un sottomenù contenente varie opzioni per la trasparenza della finestra.<br />
<br />
[separator]<br />
Linea di separazione orizzontale, non fa altro che creare una linea divisoria.<br />
<br />
===Esempi===<br />
Questo dovrebbe creare un menù simile a quello di default:<br />
<br />
# ~./fluxbox/windowmenu<br />
[begin]<br />
[shade] (Shade)<br />
[stick] (Stick)<br />
[maximize]<br />
[iconify] (Iconify)<br />
[raise]<br />
[lower]<br />
[sendto]<br />
[layer]<br />
[extramenus]<br />
[separator]<br />
[close] (Close)<br />
[end]<br />
<br />
Questo è un pò differente:<br />
<br />
[begin]<br />
[exec] (terminal) {xterm}<br />
[maximize] (maximize)<br />
[iconify] (minimize)<br />
[submenu] (advanced)<br />
[layer] (layer)<br />
[extramenus] (remember)<br />
[sendto] (send to)<br />
[end]<br />
[separator]<br />
[close] (close)<br />
[end]<br />
<br />
==Applicazioni e accessori aggiuntivi==<br />
Fluxbox non integra un file manager, un emulatore di terminale o altro, perciò si può installare praticamente [http://fluxbox-wiki.org/index.php?title=FAQ#Apps.2C_Window_Managers.2C_Desktop_Managers tutto quel che si vuole].<br />
<br />
--[[Utente:Ferdybassi|Ferdybassi]] 18:11, 10 mar 2010 (CET)<br />
<br />
----<br />
<br />
[[Categoria:Fluxbox]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=29052GNU/Screen2012-07-24T20:00:20Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come [[Cron|Cron]].<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterranno esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br/><br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br/><br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br/><br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
<pre>Ctrl-a :</pre><br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di [[Vim Cheat Sheet|Vim]]; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
<pre>hardstatus alwayslastline</pre><br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt [http://guide.debianizzati.org/index.php/Categoria:Bash Bash] digitiamo:<br />
<pre>$ screen -X hardstatus string "$(man screen | grep %-L)"</pre><br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
<pre>%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<</pre><br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
<pre>Ctrl-a c</pre><br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
<pre>0$ bash 1-$* bash</pre><br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
<pre>Ctrl-a ?</pre><br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
<pre>Ctrl-a A</pre><br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
<pre>Ctrl-a :number</pre> <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare:<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
<pre>Ctrl-a k</pre><br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
<pre>Ctrl-a t</pre><br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
<pre>Ctrl-a m</pre><br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
<pre>Ctrl-a C-\</pre><br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
<pre>Ctrl-a :quit</pre><br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via [[SSH]]) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina;<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
<pre>Ctrl-a d</pre><br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare:<br />
<pre>$ screen -r nome_sessione -p nome_finestra</pre><br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un'unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br/><br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br/><br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
<pre>$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
</pre><br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
<pre>$ screen -r fugu</pre><br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
<pre>$ screen -S fugu</pre><br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
<pre>$ screen -x</pre><br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in Bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
<pre>Ctrl-a a </pre><br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
<pre>$ screen -e ^Ss</pre><br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
<pre>Ctrl-a S</pre><br />
<br />
Mentre per lo split verticale:<br />
<pre>Ctrl-a |</pre><br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
<pre>Ctrl-a TAB</pre><br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionamento, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
<pre>Ctrl-a X</pre><br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
<pre>Ctrl-a Q</pre><br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
<pre>Ctrl-a :resize valore</pre><br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
<pre>Ctrl-a :layout save nome_a_piacere</pre><br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
<pre>Ctrl-a :layout attach nome_usato_per_salvare</pre><br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
<pre>Ctrl-a :layout show</pre><br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
<pre>Ctrl-a :layout title nome_usato_per_salvare</pre><br />
<br />
E naturalmente rimuoverlo:<br />
<pre>Ctrl-a :layout remove nome_usato_per_salvare</pre><br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è quindi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
<pre>Ctrl-a [</pre><br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt Bash o un editor, e incolliamo con:<br />
<pre>Ctrl-a ]</pre><br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
<pre>Ctrl-a ></pre><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
<pre>Ctrl-a <</pre><br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
<pre>C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile</pre><br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
<pre>Ctrl-a h</pre><br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il [[path]] da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>$ screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
<pre>$ screen -X select 1</pre><br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
<pre>$ screen -p 9 -X number 11</pre><br />
<br />
Rinominare finestra:<br />
<pre>$ screen -p 9 -X title zut</pre><br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'</pre><br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
<pre>$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'</pre><br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
$ screen -X eval 'stuff comando "parametri \015"'<br />
$ screen -X eval 'stuff ./mio_script.sh "parametri_script \015"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi.<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
<pre>$ screen -X at bash# stuff 'ls ^M'</pre><br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate <code>bash</code> e alla finestra <code>l10n</code>:<br />
<pre>$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
<pre>$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'</pre><br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
<pre>$ screen -X at \# stuff 'ls ^M'</pre><br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^Q si ottiene premendo <code>ctrl-v</code> e <code>ctrl-q</code>):<br />
<pre>$ screen -p 7 -X stuff ^Q </pre><br />
<br />
nella finestra 7 ho solitamente <code>rtorrent</code>, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre<br />
(i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m http://it.search.yahoo.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
<pre>Ctrl-a :source .screenrc</pre><br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
{{Autori|Autore=[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST}}<br />
<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Repository_non_ufficiali&diff=29014Repository non ufficiali2012-07-17T17:29:57Z<p>Skizzhg: repository wine dismesso</p>
<hr />
<div>{{Repository<br />
|precedente_rep=Il repository LinuxMint<br />
|successivo_rep=Immagini iso Debian da usare come repository<br />
}}<br />
{{Versioni compatibili}}<br />
__TOC__<br />
== Introduzione ==<br />
<br />
Questa pagina ha lo scopo di raccogliere una lista dei [[repository]] non ufficiali più frequentemente usati dagli utenti Debian.<br />
<br />
Un elenco più completo è presente sul sito: http://www.apt-get.org.<br />
<br />
== Marillat Repository ==<br />
* '''Home page''': http://www.deb-multimedia.org/<br />
* '''Release Supportate''': Debian oldstable, stable, testing, unstable, experimental<br />
* '''Architetture''': alpha, amd64, armel, hppa, i386, ia64, mipsel, powerpc, sparc<br />
<br />
<br />
Repository principali (la sezione ''contrib'' non esiste e la ''non-free'' è a discrezione dell'utente):<br />
<pre><br />
## Binari per Squeeze (stable). Architetture: alpha, amd64, armel, hppa, i386, ia64, mipsel, powerpc, sparc<br />
deb http://www.deb-multimedia.org squeeze main<br />
deb http://www.deb-multimedia.org squeeze-backports main<br />
<br />
## Binari per Wheezy (testing). Architetture: amd64, armel, i386, ia64, mipsel, powerpc, sparc<br />
deb http://www.deb-multimedia.org wheezy main<br />
<br />
## Binari per Sid (unstable). Architetture: alpha, amd64, armel, hppa, i386, ia64, mipsel, powerpc, sparc<br />
deb http://www.deb-multimedia.org sid main<br />
<br />
## Binari per experimental. Architetture: amd64, i386, powerpc<br />
deb http://www.deb-multimedia.org experimental main<br />
</pre><br />
<br />
Per installare la chiave GPG per l'autenticazione dei pacchetti installare il pacchetto <code>'''deb-multimedia-keyring'''</code>.<br />
<pre># apt-get install deb-multimedia-keyring</pre><br />
Sorgenti per i repository Marillat:<br />
<pre> deb-src http://www.deb-multimedia.org sid main </pre><br />
<!--<br />
: ''La '''chiave GPG''' dei precedenti repository si può importare nel seguente modo (vedi [http://www.deb-multimedia.org/faq.html]):''<br />
# gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907<br />
# gpg --armor --export 1F41B907 | apt-key add -<br />
<br />
<br />
Pacchetti PPC per Sid, di ''Guido Guenther'' (vedi [http://honk.sigxcpu.org/linux-ppc/debian/mplayer/ unstable-ppc]):<br />
<br />
deb http://honk.sigxcpu.org/linux-ppc/debian/ mplayer/<br />
#deb-src http://honk.sigxcpu.org/linux-ppc/debian/ mplayer/<br />
<br />
: ''Trovate [http://honk.sigxcpu.org/misc/sigxcpu-archive-key.gpg qui] la '''chiave gpg''' per il precedente repository.''<br />
<br />
<br />
Pacchetti AMD-64 per Sid:<br />
<br />
## Entrambe le linee sono obbligatorie<br />
deb http://spello.sscnet.ucla.edu/marillat/ sid main<br />
deb http://www.debian-multimedia.org sid main<br />
<br />
<br />
Pacchetti AMD-64 per Sarge (vedi [http://spello.sscnet.ucla.edu/marillat/dists/sarge/main/binary-amd64/ stable-amd64]):<br />
<br />
## Entrambe le linee sono obbligatorie<br />
deb http://spello.sscnet.ucla.edu/marillat/ sarge main<br />
deb http://www.debian-multimedia.org sarge main<br />
--><br />
<br />
<!--<br />
== MaXeR Repository ==<br />
* '''Home page''': http://repos.knio.it<br />
* '''Release Supportate:''' Debian Stable, Testing, Unstable; Ubuntu Breezy<br />
* '''Architetture''': i386<br />
* '''Pacchetti importanti:''': k9copy, vamps, qvamps, keep, krecipes, kreetingkard, kleansweep<br />
<br />
sources.list:<br />
<pre><br />
deb http://repos.knio.it/ stable main contrib non-free<br />
deb-src http://repos.knio.it/ stable main contrib non-free<br />
<br />
deb http://repos.knio.it/ testing main contrib non-free<br />
deb-src http://repos.knio.it/ testing main contrib non-free<br />
<br />
deb http://repos.knio.it/ unstable main contrib non-free<br />
deb-src http://repos.knio.it/ unstable main contrib non-free<br />
<br />
deb http://repos.knio.it/ breezy main contrib non-free<br />
deb-src http://repos.knio.it/ breezy main contrib non-free<br />
</pre><br />
--><br />
<br />
== Wine HQ ==<br />
Wine non ha realmente un repository, c'era http://www.lamaresh.net/ ma non è più mantenuto, vengono invece forniti i pacchetti deb da installare manualmente, la spiegazione del maintainer a riguardo è la seguente: <br><br />
"I won't set up an APT repository for these packages, because I don't want to encourage people to install binary packages from third parties without thinking about what they're doing."<br />
<br />
* '''Home page''': http://www.winehq.org/<br />
* '''Download page''': http://www.winehq.org/site/download<br />
* '''Release Supportate:''' Debian Lenny, Squeeze, Sid<br />
* '''Architetture''': i386, amd64<br />
<br />
<br />
== Iceweasel ==<br />
Il Mozilla debian Team mette a disposizione questo repository semi-ufficiale per permettere agli utenti Debian di installare Iceweasel 4 (o superiore) su Squeeze, Wheezy o Sid.<br/><br />
L'indirizzo relativo a questo progetto, con relative e dettagliate istruzioni su cosa inserire in <code>/etc/apt/sources.list</code> e su come installare le chiavi per l'autenticazione dei pacchetti, è http://mozilla.debian.net/<br />
<!-- == Os-works ==<br />
<br />
TODO<br />
<br />
== Skype ==<br />
* '''Home page''': http://www.skype.com<br />
* '''Release Supportate:''' Debian Stable<br />
* '''Architetture''': i386<br />
<br />
<pre><br />
deb http://download.skype.com/linux/repos/debian/ stable non-free<br />
</pre> --><br />
<br />
[[Categoria:Repository non ufficiali]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Guida_ai_comandi_da_terminale&diff=28948Guida ai comandi da terminale2012-06-29T23:17:27Z<p>Skizzhg: comandi, per info sui pacchetti e altre cose minori</p>
<hr />
<div>{{Versioni compatibili}}<br />
= Introduzione =<br />
Qu(in ~/bin/ ad esempio) ale utente Linux non ha mai avuto bisogno di una raccolta di comandi base per gestire il suo sistema operativo al migliore dei modi da terminale?<br><br />
Questa pagina nasce in loro supporto. Qui proverò a creare una raccolta dei comandi base più utili, in modo da venire in aiuto di coloro che ne cercano uno per compiere la rispettiva operazione.<br><br />
{{ Warningbox | Nella guida viene talvolta usata l'opzione <code>-r</code> abbinata ad alcuni comandi. È utile rimarcare e tenere a mente che la ricorsività del comando derivante dall'utilizzo di questa opzione può avere effetti distruttivi sul sistema e che va quindi usata con cognizione di causa.}}<br />
<br />
= Gestione di repository e pacchetti =<br />
== Definizione di repository ==<br />
Il repository è un archivio ordinato dove sono raccolti i pacchetti software della vostra distribuzione (siano essi pacchetti binari o sorgenti), in modo ben organizzato e costantemente aggiornato. Da questi repository è possibile installare tutto il software che vi occorre per la vostra Debian. Per ottenere più informazioni potete dirigervi qui: http://guide.debianizzati.org/index.php/Indice_Guide#Gestione_dei_Pacchetti<br />
<br />
== Modifica della lista dei repository ==<br />
La lista dei repository configurati per il vostro sistema si trova nel file <code>/etc/apt/sources.list</code>. Per modificarla basta aprire il file con un qualsiasi editor di testo. Quindi, se vogliamo aprirlo con Gedit (editor di testo visuale; occorre avere un ambiente grafico installato) digiteremo:<br />
<pre><br />
gedit /etc/apt/sources.list<br />
</pre><br />
Se vogliamo aprirlo con Nano (editor di testo su console) digiteremo:<br />
<pre><br />
nano /etc/apt/sources.list<br />
</pre><br />
Con Vim (altro editor di testo per console):<br />
<pre><br />
vim /etc/apt/sources.list<br />
</pre><br />
E così via. Vi ricordo che questo file ha i permessi di scrittura riservati all’amministratore (root) o ad un sudoer. Se avete impostato al vostro utente i permessi di sudoer, o siete su Ubuntu, vi basterà aggiungere sudo prima di ogni comando (<code>sudo gedit</code> invece di <code>gedit</code>, ad esempio) per avere i permessi di scrittura e poter salvare il file. Se siete root, potete copiare ed incollare i comandi citati sopra sul terminale senza modificarli nella sintassi.<br />
<br />
== Aggiornamento del sistema operativo ==<br />
Per aggiornare Debian con gli ultimi pacchetti disponibili per la vostra versione dovrete lanciare due comandi:<br />
<pre><br />
apt-get update<br />
apt-get upgrade<br />
</pre><br />
Queste operazioni possono essere fatte solo da un sudoer o da un root.<br />
<br />
== Installazione di un programma o di un pacchetto ==<br />
Se vogliamo installare un programma o un pacchetto presente nei repo a vostra disposizione, ci basterà semplicemente digitare da terminale:<br />
<pre><br />
apt-get install programma<br />
</pre><br />
oppure:<br />
<pre><br />
aptitude install programma<br />
</pre><br />
Se vogliamo installare, ad esempio, VLC, digitiamo:<br />
<pre><br />
apt-get install vlc<br />
</pre><br />
Il nome del programma, e la possibilità di installarlo in questo modo, dipendono dalla presenza dei pacchetti nella vostra lista repo e dal loro nome. Una lista completa dei pacchetti repo presenti nel vostro sistema la avete andando su Sistema –> Amministrazione –> Gestore pacchetti Synaptic, e per poterli installare ovviamente avrete bisogno di permessi di sudoer o di root.<br />
Se il vostro programma non compare nell'elenco, ma avete trovato in giro dei repository che lo includono (righe di testo), per utilizzarle dovrete integrarle nella vostra lista repo, seguite il paragrafo “Modifica della lista dei repository”.<br />
<br />
== Ricerca di un pacchetto e informazioni ==<br />
Volete installare un programma, ma non conoscete il nome del pacchetto con il quale è stato inserito nei repository di Debian?<br><br />
Il seguente comando può esservi di aiuto:<br />
<pre><br />
apt-cache search nome_pacchetto<br />
</pre><br />
Il comando esegue una ricerca full text all'interno dei nomi e delle descrizioni dei pacchetti dei repository abilitati. Ad esempio:<br />
<pre><br />
apt-cache search tellico<br />
</pre><br />
ci restituirà:<br />
<pre><br />
alexandria - a GNOME application for managing book collections<br />
tellico - collection manager for books, videos, music<br />
tellico-data - collection manager for books, videos, music [data]<br />
tellico-scripts - collection manager for books, videos, music [scripts]<br />
</pre><br />
Quindi possiamo ottenere varie informazioni sul pacchetto che cerchiamo con:<br />
<pre><br />
apt-cache show nome_pacchetto<br />
</pre><br />
Ad esempio:<br />
<pre><br />
apt-cache show tellico<br />
</pre><br />
Elencare le sole dipendenze:<br />
* dirette (necessarie)<br />
<pre><br />
apt-cache depends tellico<br />
</pre><br />
* indirette (raccomandate o utili a seconda del tipo di richiesta o configurazione del sistema)<br />
<pre><br />
apt-cache rdepends tellico<br />
</pre><br />
Informazioni su quale repository abbia la priorità (utile nella gestione del pinning):<br />
<pre><br />
apt-cache policy tellico<br />
</pre><br />
Visionare il changelog prima di aggiornare il pacchetto:<br />
<pre><br />
apt-get changelog tellico<br />
</pre><br />
Sapere perché un pacchetto è installato o perché andrebbe installato:<br />
<pre><br />
aptitude why tellico<br />
</pre><br />
Sapere perché un pacchetto non è installato e se genera conflitti:<br />
<pre><br />
aptitude why-not tellico<br />
</pre><br />
<br />
== Disinstallazione base di un programma o di un pacchetto ==<br />
Si utilizza lo stesso strumento visto prima per l'installazione dei pacchetti. Digitiamo quindi:<br />
<pre><br />
apt-get remove programma<br />
</pre><br />
Se vogliamo rimuovere VLC:<br />
<pre><br />
apt-get remove vlc<br />
</pre><br />
Questo tipo di disinstallazione disinstalla il programma, ma lascia all’interno del sistema i file di configurazione del programma. Per poter eseguire il comando di disinstallazione descritto avrete bisogno di permessi di sudoer o di root.<br />
<br />
== Disinstallazione completa di un programma o di un pacchetto ==<br />
La differenza tra questa disinstallazione e quella base consiste nella liberazione completa dello spazio occupato dal programma che vogliamo rimuovere dal sistema. Con questo tipo di disinstallazione, infatti, oltre a disinstallare il programma dal sistema, cancelleremo anche i pacchetti e i relativi file di configurazione, che altrimenti non verrebbero rimossi, e che occuperebbero spazio inutile nel caso in cui non avessimo alcuna intenzione di reinstallare in futuro il programma. Digitiamo:<br />
<pre><br />
apt-get remove --purge programma<br />
</pre><br />
Oppure:<br />
<pre><br />
apt-get purge programma<br />
</pre><br />
Oppure:<br />
<pre><br />
aptitude purge programma<br />
</pre><br />
Se vogliamo rimuovere VLC:<br />
<pre><br />
apt-get remove --purge vlc<br />
</pre><br />
O in alternativa:<br />
<pre><br />
apt-get purge vlc<br />
</pre><br />
Per poter eseguire il comando di disinstallazione descritto avrete bisogno di permessi di sudoer o di root.<br />
<br />
== Reinstallazione di un programma o di un pacchetto ==<br />
Se abbiamo un programma già installato nel sistema, ma per un qualsiasi motivo volessimo reinstallarlo, il comando è:<br />
<pre><br />
apt-get install --reinstall programma<br />
</pre><br />
Se vogliamo reinstallare VLC:<br />
<pre><br />
apt-get install --reinstall vlc<br />
</pre><br />
Per poter eseguire il comando di reinstallazione descritto avrete bisogno di permessi di sudoer o di root.<br />
<br />
== Rimozione di un pacchetto non disinstallato completamente ==<br />
Per rimuovere completamente i pacchetti già disinstallati che, per qualche motivo, non riuscite a eliminare con <code>apt</code>, digitare:<br />
<pre><br />
dpkg -P programma<br />
</pre><br />
Se volessimo “purgare” VLC:<br />
<pre><br />
dpkg -P vlc<br />
</pre><br />
<br />
== Pulizia della cache dei pacchetti ==<br />
Per ripulire la cache dei pacchetti scaricati si utilizzano i comandi:<br />
<pre><br />
apt-get clean<br />
</pre><br />
O anche:<br />
<pre><br />
apt-get autoclean<br />
</pre><br />
Per poter eseguire il comando avrete bisogno di permessi di sudoer o di root.<br />
<br />
== Installazione dei sorgenti dei pacchetti ==<br />
A volte può esserci utile il download di codici sorgente, magari per correggere da noi una compilazione errata, o ricompilarlo reindirizzando delle dipendenze, o qualsiasi altro motivo.<br />
Possiamo farlo da aptitude, semplicemente con il comando:<br />
<pre><br />
apt-get source programma<br />
</pre><br />
Se volessimo ottenere i source di VLC:<br />
<pre><br />
apt-get source vlc<br />
</pre><br />
Non sono richiesti particolari permessi, per cui potete farlo anche da semplici user, il risultato non cambia.<br />
<br />
= Operazioni con programmi non presenti nei repository =<br />
== Premessa ==<br />
A mio parere, prima di procedere con l'installazione di un programma, è sempre bene verificare attentamente che non sia già presente nei repository ufficiali o in qualche repository aggiuntivo messo a disposizione, ad esempio, dagli sviluppatori del programma stesso. Installando da repository, infatti, si mantiene il sistema pulito e, soprattutto, si mantiene un archivio unico e completo di tutti i programmi installati, con la possibilità di rimuoverli utilizzando pochi strumenti nativi di Debian.<br />
<br />
== Compilazione dei sorgenti di un programma ==<br />
I sorgenti di un programma sono di solito contenuti in un file con estensione <code>.tar.gz</code>. Un file di questo genere è in gergo chiamato ''tarball'' e in genere vanno compiute due operazioni per compilarlo ed installarlo.<br />
* La prima è quella di scompattarlo:<br />
<pre><br />
$ tar -xzvf nome_programma.tar.gz<br />
</pre><br />
* La seconda è quella di spostarsi nella directory che si è venuta a creare e dare inizio alla compilazione:<br />
<pre><br />
$ cd nome_programma<br />
$ ./configure<br />
$ make<br />
# make install<br />
</pre><br />
Per disinstallare il programma bisogna portarsi nella directory dei sorgenti e digitare:<br />
<pre><br />
# make uninstall<br />
</pre><br />
<br />
=== Metodo alternativo I ===<br />
Un metodo alternativo consiste nel compilare il programma creando un pacchetto <code>.deb</code> da installare successivamente. Il primo passo è di installare il programma:<br />
<pre><br />
# apt-get install checkinstall<br />
</pre><br />
Ora seguite i normali passi per la compilazione dei sorgenti, variando solo l'ultimo comando:<br />
<pre><br />
$ ./configure<br />
$ make<br />
# checkinstall<br />
</pre><br />
Se tutto è andato per il verso giusto, verrà creato ed installato un pacchetto debian.<br />
=== Metodo alternativo II ===<br />
A volte <code>checkinstall</code> può dare problemi, non rispettando le politiche Debian di gestione e creazione dei pacchetti. E' possibile per fortuna sostituire <code>checkinstall</code> con un modo più professionale. Dovete innanzitutto scaricare dei tool di sviluppo:<br />
<pre><br />
# apt-get install devscripts dh-make make build-essential dpkg apt<br />
</pre><br />
Adesso posizionatevi dentro la cartella estratta dei sorgenti e lanciate:<br />
<pre><br />
$ dh_make<br />
$ debuild binary<br />
</pre><br />
A questo punto, dopo la compilazione, verrà creato un pacchetto <code>.deb</code>, che sarà collocato nella directory padre. Installatelo così:<br />
<pre><br />
# dpkg -i ../pacchetto.deb<br />
</pre><br />
e il gioco è fatto.<br />
<br />
== Esecuzione di uno script ==<br />
Spesso i programmi scaricati e scompattati contengono al loro interno uno script, da lanciare per effettuare l'installazione vera e propria del programma. Per lanciare questo tipo di installer si eseguano i comandi:<br />
<pre><br />
chmod +x installer.sh<br />
</pre><br />
e successivamente:<br />
<pre><br />
./installer.sh<br />
</pre><br />
<br />
== Installazione di un file .bin ==<br />
Se abbiamo scaricato un installer in .bin, per avviare la sua installazione da terminale non si deve fare altro che dirigersi nella directory in cui il .bin è stato salvato e lanciarlo scrivendo il nome del file. L’unico problema può nascere quando l'installer non da nativamente i permessi di esecuzione all’utente normale, la cosa si risolve con il comando <code>chmod</code>.<br><br />
Se, per esempio, abbiamo scaricato il programma <code>mio_programma.bin</code> dobbiamo compiere le seguenti operazioni.<br><br />
L'installer avrà bisogno prima di tutto di una rettifica sui permessi. Entriamo nella cartella in cui si trova il file e lanciamo questi comandi:<br />
<pre><br />
chmod +x mio_programma.bin<br />
</pre><br />
e successivamente:<br />
<pre><br />
./mio_programma.bin<br />
</pre><br />
<br />
== Installazione di un file .rpm ==<br />
Se abbiamo scaricato un installer con estensione .rpm (RedHat Package Manager, sistema di gestione dei pacchetti originario di Red Hat Linux), per installarlo dalla nostra distro dovremo per forza convertirlo in .deb . Il programma che ci consente di farlo è <code>alien</code>. Quindi installiamolo digitando:<br />
<pre><br />
apt-get install alien<br />
</pre><br />
Successivamente, dopo esserci diretti da terminale nella cartella in cui è presente il file .rpm scaricato, lanciamo:<br />
<pre><br />
alien -k nomefile.rpm<br />
</pre><br />
Avrete ottenuto un file .deb, che potrete utilizzare seguendo le istruzioni del paragrafo successivo.<br />
<br />
== Installazione di un file .deb ==<br />
Se abbiamo scaricato o creato un installer con estensione .deb (che, come il nome suggerisce, è stato creato per Debian e sistemi derivati come Ubuntu), per installarlo basterà dirigerci nella directory dove risiede il file e digitare:<br />
<pre><br />
dpkg -i nomefile.deb<br />
</pre><br />
Per disinstallarlo possiamo normalmente seguire una delle strade per la disinstallazione viste in precedenza, utilizzando <code>apt</code>.<br />
<br />
== Scompattare un file .tar ==<br />
Se abbiamo un archivio in formato compresso .tar, per decomprimerlo dovremo usare lo strumento <code>tar</code>. Se non lo abbiamo, digitiamo da terminale:<br />
<pre><br />
apt-get install tar<br />
</pre><br />
Adesso che abbiamo lo strumento, per decomprimere un pacchetto in formato .tar dobbiamo prima dirigerci, sempre da terminale, nella cartella in cui l’archivio è presente, e poi dobbiamo lanciare:<br />
<pre><br />
tar xvf nomearchivio.tar<br />
</pre><br />
dove<br />
* <code>tar</code> è il nome del programma decompressore<br />
* <code>x</code> significa “estrazione”<br />
* <code>v</code> sta per "verbose", e serve per ottenere informazioni dettagliate durante il processo di estrazione<br />
* <code>f</code> infine salva i file nella stessa posizione dell’archivio.<br />
Lanciando il comando:<br />
<pre><br />
tar --help<br />
</pre><br />
avrete una lista completa delle opzioni che potete usare col programma.<br><br />
Attenzione ai permessi: se lanciate il comando tar da sudoer o da root, i permessi dei file decompressi saranno attribuiti a quell’utenza.<br />
<br />
== Scompattare un file .tar.bz2 ==<br />
Se abbiamo un archivio in formato compresso .tar.bz2, per decomprimerlo dovremo usare lo strumento <code>tar</code>. Se non lo abbiamo, digitiamo da terminale:<br />
<pre><br />
apt-get install tar<br />
</pre><br />
Adesso che abbiamo lo strumento, per decomprimere un pacchetto in formato .tar.bz2 dobbiamo prima dirigerci, sempre da terminale, nella cartella in cui l’archivio è presente, e poi dobbiamo lanciare:<br />
<pre><br />
tar jxvf nomearchivio.tar.bz2<br />
</pre><br />
dove<br />
* <code>tar</code> è il nome del programma decompressore<br />
* <code>j</code> indica che il file da decomprimere è in formato compresso .bz2<br />
* <code>x</code> significa “estrazione”<br />
* <code>v</code> sta per "verbose", e serve per ottenere informazioni dettagliate durante il processo di estrazione<br />
* <code>f</code> infine salva i file nella stessa posizione dell’archivio.<br />
Lanciando il comando<br />
<pre><br />
tar --help<br />
</pre><br />
avrete una lista completa delle sintassi che potete usare col programma.<br><br />
Attenzione ai permessi: se lanciate il comando tar da sudoer o da root, i permessi dei file decompressi saranno attribuiti a quell’utenza.<br />
<br />
== Scompattare un file .tar.gz ==<br />
Se abbiamo un archivio in formato compresso .tar.gz, per decomprimerlo dovremo usare lo strumento <code>tar</code>. Se non lo abbiamo, digitiamo da terminale:<br />
<pre><br />
apt-get install tar<br />
</pre><br />
Adesso che abbiamo lo strumento, per decomprimere un pacchetto in formato .tar.bz2 dobbiamo prima dirigerci, sempre da terminale, nella cartella in cui l’archivio è presente, e poi dobbiamo lanciare:<br />
<pre><br />
tar zxvf nomearchivio.tar.gz<br />
</pre><br />
dove<br />
* <code>tar</code> è il nome del programma decompressore<br />
* <code>z</code> indica che il file da decomprimere è in formato compresso .gz<br />
* <code>x</code> significa “estrazione”<br />
* <code>v</code> sta per "verbose", e serve per ottenere informazioni dettagliate durante il processo di estrazione<br />
* <code>f</code> infine salva i file nella stessa posizione dell’archivio.<br />
Lanciando il comando<br />
<pre><br />
tar --help<br />
</pre><br />
avrete una lista completa delle sintassi che potete usare col programma.<br><br />
Attenzione ai permessi: se lanciate il comando tar da sudoer o da root, i permessi dei file decompressi saranno attribuiti a quell’utenza.<br />
<br />
== Scompattare un file .rar ==<br />
Se siamo in possesso di un archivio .rar , per decomprimerlo avremo bisogno dello strumento <code>unrar</code>. Se non lo abbiamo, digitiamo da terminale:<br />
<pre><br />
apt-get install unrar<br />
</pre><br />
La differenza tra <code>tar</code> e <code>unrar</code> è che il pacchetto <code>tar</code> è tuttofare, e consente sia l’archiviazione che la decompressione dei file su cui è in grado di lavorare. <code>unrar</code> invece è in grado soltanto di decomprimere, e se volessimo creare un archivio .rar avremmo bisogno di un altro pacchetto, chiamato <code>rar</code>.<br><br />
Per decomprimere il file .rar digitiamo ora semplicemente:<br />
<pre><br />
unrar nomearchivio.rar<br />
</pre><br />
Attenzione ai permessi: se lanciate il comando unrar da sudoer o da root, i permessi dei file decompressi saranno attribuiti a quell’utenza.<br />
<br />
== Scompattare un file .zip ==<br />
Se siamo in possesso di un file .zip, possiamo decomprimerlo con lo strumento “<code>unzip</code>. Se non abbiamo dovremo installarlo con:<br />
<pre><br />
apt-get install unzip<br />
</pre><br />
Come per gli archivi .rar, <code>unzip</code> è in grado soltanto di decomprimere, e la compressione può avvenire grazie a <code>zip</code> che si installa allo stesso modo.<br><br />
Per decomprimere un file .zip, digitiamo semplicemente:<br />
<pre><br />
unzip nomearchivio.zip<br />
</pre><br />
Attenzione ai permessi: se lanciate il comando unrar da sudoer o da root, i permessi dei file decompressi saranno attribuiti a quell’utenza.<br />
<br />
= Gestione di file e directory =<br />
== Muoversi tra le directory ==<br />
Accedere da terminale ad una directory è semplicissimo, perché il comando è uguale a quello del DOS.<br><br />
Per entrare nella directory “cartella” digitiamo:<br />
<pre><br />
cd cartella<br />
</pre><br />
se ci troviamo nella directory "genitore" della directory "cartella". Oppure digitiamo:<br />
<pre><br />
cd /percorso/assoluto/per/arrivare/a/cartella<br />
</pre><br />
Si noti che per utilizzare il percorso assoluto dobbiamo per prima cosa inserire il <code>/</code> che sta ad indicare la radice del filesystem.<br />
Per entrare nella directory “sottocartella” presente in “cartella” con un solo comando, digitiamo:<br />
<pre><br />
cd cartella/sottocartella<br />
</pre><br />
Se siamo in “sottocartella” e vogliamo tornare in “cartella” digitiamo:<br />
<pre><br />
cd ..<br />
</pre><br />
Se siamo in “sottocartella” e vogliamo uscire sia da lì che da “cartella”, digitiamo:<br />
<pre><br />
cd ../..<br />
</pre><br />
<br />
== Visualizzare il contenuto di una directory ==<br />
Se avete bisogno di vedere cosa è presente in una cartella, tutto quello che dovrete fare sarà entrare nella cartella che volete esaminare e lanciare:<br />
<pre><br />
ls<br />
</pre><br />
Esistono una serie di opzioni da aggiungere per perfezionare la ricerca. Avrete una guida completa di quello che potete aggiungere digitando:<br />
<pre><br />
ls --help<br />
</pre><br />
Le opzioni più utili sono secondo me:<br />
<pre><br />
ls -a<br />
</pre><br />
con cui si potranno visualizzare anche gli eventuali file nascosti, compresi <code>.</code> e <code>..</code> (directory corrente e directory superiore)<br />
<pre><br />
ls -A<br />
</pre><br />
con cui si potranno visualizzare anche gli eventuali file nascosti<br />
<pre><br />
ls -la<br />
</pre><br />
con cui si potranno visualizzare i file nascosti (<code>a</code>) e produrre un listato (<code>l</code>) con diversi dettagli utili (permessi di lettura/scrittura/esecuzione, utente e gruppo proprietari, dimensione, data di ultima modifica, ecc... )<br />
<br />
== Creare una directory ==<br />
Per creare una directory da terminale, dobbiamo spostarci dentro la directory nella quale desideriamo creare la nuova directory, e digitare:<br />
<pre><br />
mkdir nuovacartella<br />
</pre><br />
Se volessimo creare in un colpo solo la directory “cartella” e subito al suo interno la directory “sottocartella” scriviamo:<br />
<pre><br />
mkdir cartella/sottocartella<br />
</pre><br />
== Rinominare una directory ==<br />
Rinominare una cartella da terminale è semplice. Se ad esempio dobbiamo assegnare alla directory “cartella” il nuovo nome “directory”, dobbiamo portarci nella directory genitore e scrivere:<br />
<pre><br />
mv cartella/ directory/<br />
</pre><br />
== Spostare (tagliare ed incollare) una directory ==<br />
Spostare (tagliare ed incollare) una directory da terminale richiede un solo semplice comando. Supponiamo di avere la seguente struttura:<br />
<pre><br />
/home<br />
|<br />
|__ ferdy<br />
|<br />
|__ cartella<br />
| |__ sottocartella<br />
|<br />
|__ directory<br />
</pre><br />
e di voler spostare la directory <code>sottocartella</code> dalla directory <code>cartella</code> alla directory <code>directory</code>:<br />
<pre><br />
cd /home/ferdy/cartella<br />
mv sottocartella /home/ferdy/directory<br />
</pre><br />
oppure, con un solo comando:<br />
<pre><br />
mv /home/ferdy/cartella/sottocartella /home/ferdy/directory<br />
</pre><br />
<br />
== Copiare una directory ==<br />
Copiare ed incollare una directory da terminale richiede un solo semplice comando. Supponiamo di avere la seguente struttura:<br />
<pre><br />
/home<br />
|<br />
|__ ferdy<br />
|<br />
|__ cartella<br />
| |__ sottocartella<br />
|<br />
|__ directory<br />
</pre><br />
e di voler copiare la directory <code>sottocartella</code> dalla directory <code>cartella</code> alla directory <code>directory</code>:<br />
<pre><br />
cd /home/ferdy/cartella<br />
cp -r sottocartella /home/ferdy/directory<br />
</pre><br />
oppure, con un solo comando:<br />
<pre><br />
cp -r /home/ferdy/cartella/sottocartella /home/ferdy/directory<br />
</pre><br />
L'opzione <code>-r</code> permette di estendere ricorsivamente l'opzione di copia alle eventuali sottodirectory contenute della directory "sottocartella".<br />
== Cancellare una directory vuota ==<br />
Volendo cancellare la directory “cartella”, dobbiamo scrivere:<br />
<pre><br />
rmdir cartella<br />
</pre><br />
Questo comando presuppone che la directory sia vuota. In caso contrario verrà restituito l’errore:<br />
<pre><br />
rmdir: failed to remove `cartella’: La directory non è vuota<br />
</pre><br />
== Cancellare una directory non vuota ==<br />
Volendo cancellare la directory non vuota “cartella” dovremo digitare:<br />
<pre><br />
rm -rf cartella<br />
</pre><br />
L'opzione <code>-rf</code> è in grado di cancellare ogni file. Prestate attenzione a come utilizzate il comando, perché '''non viene chiesta alcuna conferma''' e rischiate di eliminare file o directory di sistema.<br />
<br />
== Visualizzare la struttura di una directory ==<br />
<code>tree</code> è un comando shell che ha il compito di listare ad albero una data directory. La sintassi del comando è:<br />
<pre><br />
tree [-adfgilnopqrstuxACDFNS][-L level [-R]][-H baseHREF][-T title][-o filename][--nolinks][-P pattern]<br />
[-I pattern][--inodes][--device][--nore-port][--dirsfirst][--version][--help][directory ...]<br />
</pre><br />
Alcune delle numerose opzioni che possiamo passare al comando tree sono:<br />
* <code>-a</code>: Stampa a video tutti i file, compresi quelli nascosti<br />
* <code>-d</code>: Lista soltanto le directory<br />
* <code>-f</code>: Stampa tutto il percorso di ogni file<br />
* <code>-i</code>: Non stampa un output ad 'albero'<br />
* <code>-s</code>: Stampa affianco al nome del file la sua dimensione<br />
* <code>-r</code>: Riordina alfabeticamente l'output<br />
Se vogliamo ad esempio listare la cartella <code>/home/user/tmp</code>, basta dare il comando:<br />
<pre><br />
tree /home/user/tmp<br />
</pre><br />
<br />
== Rinominare un file ==<br />
Per rinominare un file da terminale deve essere usato il comando <code>mv</code>. Volendo rinominare il file “testo.txt” in “text.txt” dovremo dirigerci prima nella directory in cui il file è presente, e poi digitare:<br />
<pre><br />
mv testo.txt text.txt<br />
</pre><br />
<br />
== Spostare (tagliare ed incollare) un file ==<br />
Anche per questa operazione deve essere usato il comando <code>mv</code>. Supponiamo di avere il file "testo.txt" in una specifica directory e di volerlo spostare nella nostra directory Home. Dirigiamoci da terminale nella directory in cui il file è presente, e lanciamo:<br />
<pre><br />
mv testo.txt /home/vostronomeutente/<br />
</pre><br />
<br />
== Copiare un file ==<br />
Se intendiamo duplicare un file, dobbiamo usare il comando <code>cp</code>. Con questo comando si possono fare più cose:<br />
* copiare un file da una directory ad un'altra:<br />
<pre><br />
cp testo.txt /home/vostronomeutente/testo.txt<br />
</pre><br />
* creare un duplicato del file nella stessa direcctory, cambiandogli solo il nome:<br />
<pre><br />
cp testo.txt text.txt<br />
</pre><br />
* creare un duplicato e cambiare anche l’estensione:<br />
<pre><br />
cp testo.txt testo.bak<br />
</pre><br />
<br />
== Cancellare un file ==<br />
La cancellazione di un file da terminale è semplice, basterà digitare il comando <code>rm</code> seguito dal nome del file che si vuole cancellare.<br />
Ad esempio:<br />
<pre><br />
rm testo.txt<br />
</pre><br />
<br />
== Cancellare definitivamente un file ==<br />
<code>shred</code> è un comando shell che sovrascrive ripetutamente i FILE specificati in modo da rendere più difficile recuperare i dati, e opzionalmente li cancella. La sintassi del comando è:<br />
<pre><br />
shred [OPZIONI] FILE [...]<br />
</pre><br />
Le opzioni che possiamo passare al comando sono:<br />
* <code>-f, --force</code>: change permissions to allow writing if necessary<br />
* <code>-n, --iterations=N</code>: Overwrite N times instead of the default (25)<br />
* <code>--random-source=FILE</code>: get random bytes from FILE (default /dev/urandom)<br />
* <code>-s, --size=N</code>: shred this many bytes (suffixes like K, M, G accepted)<br />
* <code>-u, --remove</code>: truncate and remove file after overwriting<br />
* <code>-v, --verbose</code>: show progress<br />
* <code>-x, --exact</code>: do not round file sizes up to the next full block; this is the default for non-regular files<br />
* <code>-z, --zero</code>: add a final overwrite with zeros to hide shredding<br />
<br />
== Visualizzare il contenuto di un file ==<br />
Il comando <code>cat</code> (che analizzeremo nel dettaglio tra pochi paragrafi) visualizza i contenuti di un intero file sullo schermo. Ad esempio, digitate:<br />
<pre><br />
cat filename.txt<br />
</pre><br />
per vedere il contenuto del file. Se il file è piuttosto lungo, il suo contenuto scorrerà velocemente sullo schermo. Per evitare ciò, usate un pager come less o most (more scorre solo in avanti):<br />
<pre><br />
less filename.txt<br />
</pre><br />
<br />
== Confrontare due file ==<br />
<code>diff</code> è un comando shell che trova la differenza tra due file. La sintassi del comando è:<br />
<pre><br />
diff [opzioni] da-file verso-file<br />
</pre><br />
Alcune delle opzioni che possiamo passare al comando sono:<br />
* <code>-righe</code>: Mostra "righe" (un intero) righe di contesto. Questa opzione non specifica da sola un formato di output; non ha nessun effetto a meno che venga combinata con <code>-c</code> o <code>-u</code>. Questa opzione è obsoleta. Per operare correttamente, diff ha, di solito, bisogno di almeno due righe di contesto.<br />
* <code>-a</code>: Tratta tutti i file come testo confrontandoli riga per riga, anche se non sembrano essere testo.<br />
* <code>-b</code>: Ignora differenza nella quantità di spazi bianchi.<br />
* <code>-B</code>: Ignora differenze che consistono solo in righe vuote (eccedenti o mancanti).<br />
* <code>--brief</code>: Riferisce solo se i file sono diversi, e non i particolari della differenza.<br />
* <code>-c</code>: Usa il formato «a contesto» (context output, in inglese).<br />
* <code>-d</code>: Usa un algoritmo diverso per trovare un, probabilmente, minore insieme di modifiche da fare. Questo rende diff più lento (a volte molto più lento).<br />
<br />
== Comprimere file e directory ==<br />
La creazione di un nuovo file con il comando <tt>tar</tt> viene fatta mediante l'opzione <tt>-c</tt> indicando il nome del file da creare e il file o la directory originali:<br />
<code><br />
$ tar cf nuovo.tar dir/<br />
</code><br />
Il file creato contiene l'intera directory <tt>dir/</tt>. Per estrarre la directory dall'archivio utilizziamo l'opzione <tt>-x</tt>:<br />
<code><br />
$ tar xf nuovo.tar<br />
</code><br />
l'archivio verrà estratto interamente nella directory corrente.<br/><br />
L'opzione <tt>-f</tt> utilizzata fino ad ora serve ad indicare che il campo direttamente successivo sarà il nome dell'archivio.<br />
<br/><br />
Tuttavia in questo esempio non abbiamo utilizzato alcun software di compressione per ridurre la dimensione dei dati nell'archivio. Per farlo possiamo scegliere se utilizzare il software di compressione ''gzip'' (opzione -z) o con ''bzip2'' (opzione -j):<br/><br />
<code><br />
$ tar czf nuovo.tar.gz dir/ # utilizza gzip<br />
</code><br/><br />
<code><br />
$ tar cjf nuovo.tar.bz2 dir/ # utilizza bzip2<br />
</code><br/><br />
Analogamente per decomprimere:<br/><br />
<code><br />
$ tar xzf archive.tar.gz<br/><br />
$ tar xjf archive.tar.bz2<br />
</code><br/><br />
L'estensione dei due file è stata cambiata da ''.tar'' a ''.tar.gz'' e ''.tar.bz2'' per indicare chiaramente con quale tipo di algoritmo sono stati compressi i dati. Esistono versioni compatte delle stesse estensioni: ''.tgz'' equivale a ''.tar.gz'' e ''.tbz'' equivale a ''.tar.bz2''.<br />
<br/><br />
Nota: l'estensione corretta in realtà non è assolutamente necessaria. Possiamo chiamare tutti gli archivi .tar indipendentemente dalla compressione e questi funzioneranno perfettamente. Tuttavia in questo modo l'utente non ha modo di conoscere a colpo d'occhio l'algoritmo utilizzato.<br />
<br/><br />
Una opzione basilare interessante è <tt>-t</tt> con la quale possiamo stampare il contenuto di un file compresso. Ad esempio:<br/><br />
<code><br />
$ tar tzf archive.tar.gz<br />
</code><br/><br />
Nel caso in cui l'archivio non sia stato compresso utilizzando ''gzip'' o ''bzip2'' è possibile aggiungervi singoli file o intere directory utilizzando la modalità append attivata dall'opzione <tt>-r</tt>:<br/><br />
<code><br />
$ tar rf archive.tar file dir/<br />
</code><br/><br />
Nota: è importante che l'archivio non sia compresso. Nel caso lo sia è possibile prima eliminare la compressione dall'archivio e poi aggiungere dei file. Alla fine verrà ricompresso il tutto.<br />
<br />
=== Esempi ===<br />
<br />
* Comprimere tutte le immagini jpg dentro una directory:<br />
<code><br />
$ tar cvzf photo.tar.gz photo/*.jpg<br />
</code><br />
<br />
* Come sopra ma il file viene inserito nella directory dove le foto risiedono:<br />
<code><br />
$ tar cvzf photo/photo.tar.gz photo/*.jpg<br />
</code><br />
<br />
* Comprimere la directory corrente (1):<br />
<code><br />
$ tar cvjf current.tar.bz2 .<br />
</code><br />
<br />
* Comprimere la directory corrente (2):<br />
<code><br />
$ tar cvjf current.tar.bz2 *<br />
</code><br/><br />
''Nota: La differenza tra i due comandi precedenti è abbastanza semplice. Nel primo caso ad essere compressa è la reale direcotry corrente. Scompattando l'archivio ci troveremo con una directory che contiene tutti i file. Nel secondo caso invece ad essere compressa non è la directory bensì tutti i file che essa contiene. Scompattando non troveremo una cartella contenente ma tutti i file contenuti nell'archivio saranno copiati nella directory di scompattazione senza che sia creata la subdirectory.''<br />
<br />
* Copiare una directory:<br />
<code><br />
$ tar cf - /some/directory | (cd /another/directory && tar xf -)<br />
</code><br />
<br />
* Estrarre tutti i file .h da un archivio:<br />
<code><br />
$ tar xvzf source.tar.gz *.h<br />
</code><br />
<br />
* Cerca tutti i file .jpeg nella home e crea un archivio:<br />
<code><br />
$ find ~ -type f -name "*.jpg" | xargs tar cvzf photo.tar.gz<br />
</code><br />
<br />
* Se stiamo cercando di creare un archivio molto grande è più conveniente il seguente metodo:<br />
<code><br />
$ find ~ -type f -name "*.jpg" | xargs tar rvzf photo.tar.gz<br />
</code><br/><br />
''nel quale abbiamo usato l'opzione append (-r) invece della create (-c). Questo perchè nel caso di archivi molto grandi xargs passa tutti gli argomenti a blocchi e tar ricrea ogni volta l'archivio con solamente i file elencati in quel blocco all'interno. La modalità append risolve il problema.''<br />
<br />
* Estrarre singoli file da un archivio:<br />
<code><br />
$ tar xvjf archive.tar.bz2 file1.cpp file2.cpp file3.cpp<br />
</code><br />
<br />
* Estrarre file dalle subdirectory di un archivio: o subdirectory intere:<br />
<code><br />
$ tar xvjf archive.tar.bz2 subdir1/file1.cpp subdir2/file2.cpp<br />
</code><br />
<br />
* Estrarre una intera subdirectory da un archivio:<br />
<code><br />
$ tar xvjf archive.tar.bz2 subdir1/<br />
</code><br/><br />
''Nota: Per poter estrarre singoli file o subdirectory occorre conoscerne con esattezza i nomi. Tuttavia è possibile utilizzare altri comandi come find, grep, awk per ottenere un elenco dei file che vogliamo estrarre.''<br />
<br />
* Estrarre da un archivio solo i file elencati in un file di testo:<br />
<code><br />
$ tar xvf archive.tar -T list.txt<br />
</code><br />
<br />
* Importare in un file di testo tutti gli elementi di un archivio:<br />
<code><br />
$ tar tzf archive.tar.gz > list.txt<br />
</code><br />
<br />
* Eliminare da una directory contenente molti file solo quelli contenuti anche nell'archivio:<br />
<code><br />
$ tar tzf archive.tar.gz | xargs rm -r<br />
</code><br />
<br />
* Stimare la dimensione di un archivio prima di crearlo:<br />
<code><br />
$ tar czf - directory/ | wc -c<br />
</code><br />
<br/><br/><br />
''(Grazie a [http://nerotux.tuxfamily.org Nerotux] per gli esempi sull'utilizzo di tar)''<br />
<br />
== Modificare l'ora di accesso a un file ==<br />
<code>touch</code> è un comando shell che modifica l'orario di accesso o/e modifica di un file (il cosiddetto '''timestamp'''). I file vengono modificati con l'orario corrente. La sintassi del comando è:<br />
<pre><br />
touch [-acfm] [-r file][-t orario_decimale] [-d orario]<br />
[--time={atime,access,use,mtime,modify}][--date=orario][--reference=file]<br />
[--no-create] [--help] [--version] [--] file...<br />
</pre><br />
Le opzioni che possiamo passare al comando sono:<br />
* <code>-a</code>: Cambia l'ora di accesso di file.<br />
* <code>-c</code>: Non crea file.<br />
* <code>-m</code>: Cambia l'ora di modifica di file.<br />
* <code>-r ref_file</code>: Usa i corrispondenti orari di ref_file come i nuovi valori per gli orari da cambiare.<br />
* <code>-t orario</code>: Usa l'orario specificato come nuovo valore per gli orari cambiati. L'argomento è un numero decimale nella forma [[SS]AA]MMGGoomm[.ss]<br />
* <code>-d, --date=orario</code>: Usa orario al posto dell'ora corrente. Può contenere il nomi di mese, fusi orari, «am» e «pm», ecc.<br />
<br />
== Manipolazione di file ==<br />
Un modo veloce (soprattutto negli script) per modificare il contenuto di un file o per accodare altro testo alla sua fine è utilizzare il comando <code>cat</code>.<br><br />
<code>cat</code> è un comando shell che legge file in sequenza e può scrivere i loro contenuti sullo standard output nella stessa sequenza. Lo scopo di cat è infatti concatenare file (generalmente di testo o che abbiano particolari intestazioni, ad esempio il formato MPEG2 usato dai VOB nei DVD video). Dimenticatevi follie quali "cat file.txt | less" o "cat file.txt | grep foo" perché è definito <br />
[http://en.wikipedia.org/wiki/Cat_%28Unix%29#Useless_use_of_cat UUOC: Useless Use Of Cat] :-)<br />
<br />
La sintassi del comando è:<br />
<pre><br />
cat [opzioni][file ...]<br />
</pre><br />
Note:<br />
* <code>'''>''' file.estensione</code>: Se nomefile.estensione non esiste, viene creato e viene scritto il valore al suo interno. Nel caso esistesse già, il suo valore '''verrebbe sovrascritto'''.<br />
* <code>'''>>''' nomefile.estensione</code>: Aggiunge alla fine del file il valore che gli date a riga di comando.<br><br />
Altri comandi utili per la manipolazione veloce di file sono:<br />
* <code>head</code>, che mostra le prime dieci linee di un file. Utile quando si vuole avere un'idea del contenuto di un file senza doverlo aprire con un editor<br />
* <code>tail</code>, che mostra al contrario le ultime dieci linee di un file<br />
<br />
=== Esempi ===<br />
Se vogliamo mostrare il contenuto del file di testo <code>/home/ferdy/prova.txt</code>, dobbiamo dare il comando:<br />
<pre><br />
cat /home/ferdy/prova.txt<br />
</pre><br />
Se vogliamo aggiungere il contenuto del file <code>/home/ferdy/aggiunte.txt</code> alla fine del file, diamo il seguente comando:<br />
<pre><br />
cat /home/ferdy/aggiunte.txt >> /home/ferdy/prova.txt<br />
</pre><br />
Se vogliamo unire i due file e crearne un terzo, diamo il comando:<br />
<pre><br />
cat /home/ferdy/prova.txt /home/ferdy/aggiunte.txt > /home/ferdy/file_finale.txt<br />
</pre><br />
Per visualizzare le prime dieci o le ultime dieci linee di un file:<br />
<pre><br />
head /home/ferdy/prova.txt<br />
tail /home/ferdy/prova.txt<br />
</pre><br />
Un comando preziosissimo per gli amministratori di sistema è il seguente, che permette di vedere in modo interattivo la variazione di un file di log:<br />
<pre><br />
tail -f /var/log/syslog | ccze<br />
</pre><br />
Nell'ultimo comando sono stati usati:<br />
* <code>'''-f</code>''' che permette a <code>tail</code> di seguire (follow) il file e i suoi cambiamenti<br />
* <code>'''| ccze'''</code> che dirige l'output di tail verso il programma <code>ccze</code>, che colorerà l'output del log rendendolo facilmente leggibile<br />
In quest'ultimo esempio, per rilasciare il terminale e riottenerne il pieno utilizzo bisogna stoppare <code>tail</code> con la combinazione di tasti <code>CTRL</code>+<code>C</code>.<br />
<br />
Un altro uso interessante di cat è creare file di testo sfruttando lo stdin della shell.<br />
Lanciamo questo comando:<br />
<pre><br />
cat - > file.txt<br />
</pre><br />
e possiamo scrivere il nostro testo sfruttando lo standard input come editor, si può correggere solo se non si è andati a capo e si termina con ''Ctrl-d''. <br><br />
<br />
== Creare un collegamento ==<br />
Un collegamento è un particolare tipo di file che non è altro che un rimando ad un altro file o directory. Per creare un collegamento tra file o directory si deve usare il comando <code>ln</code>.<br />
<pre><br />
ln -s <file da collegare> <nome del link><br />
</pre><br />
Supponiamo di avere il file testo.txt nella nostra home e di voler creare un collegamento in <code>usr/bin</code> chiamato "mylink.txt". Scriverò:<br />
<pre><br />
ln -s /home/ferdy/testo.txt /usr/bin/mylink.txt<br />
</pre><br />
per prevenire ogni tipo di problema è bene sempre specificare i percorsi assoluti del collegamento e del file (o directory) verso cui creare un collegamento.<br />
Su Linux esistono due tipi di collegamenti: Hard link e Symbolic link.<br />
<br />
=== Hard Link ===<br />
Sono di fatto una copia di una voce di directory, hanno nomi diversi ma puntano allo stesso inode e quindi condividono esattamente lo stesso dato (oltre agli stessi permessi, data di modifica, owner ecc.).<br />
<br />
=== SymLink ===<br />
Sono dei piccoli file che contengono un puntamento ad altri file o directory. Questi file hanno i-node autonomo e possono puntare a file di altri file system (sia locali, che di rete). Si possono facilmente visualizzare con un normale ls -l e se viene cancellato o spostato il file a cui puntano rimangono "stale": continuano ad esistere ma puntano a qualcosa che non esiste.<br />
<br/><br />
Un symlink appare come avente tutti i permessi aperti a tutti gli utenti, di fatto è trasparente rispetto a permessi e ownership e riflette quelli del file o directory a cui punta.<br />
<br />
== Cambiare i permessi di lettura, scrittura ed esecuzione ==<br />
Può succedere di aver bisogno di dover cambiare i permessi ad un file, per consentire la lettura, la scrittura o l’esecuzione ad ogni utente, oppure al contrario per proteggerlo da utilizzi indesiderati e restringerlo ad un particolare utente o gruppo.<br/><br />
Il comando da utilizzare per queste operazioni è <code>chmod</code>.<br/><br />
I permessi <code>chmod</code> sono tipicamente utilizzati dai sistemi operativi UNIX e Linux. Non sono altro che le linee guida che vengono impartite al sistema sugli accessi o non accessi ad una data directory e/o file. Questi sistemi operativi offrono la possibilita di operare con un file facendo la distinzione fra 3 tipi di operatori: Proprietario (User), Gruppo (Group), Pubblici (Others). Per ciascuno di questi utenti é necessario specificare i diversi permessi riguardanti la directory e/o il file in questione. I permessi sono generalmente indicati da alcuni numeri, ovvero:<br />
* Lettura : permetti l'acceso al file ( 4 )<br />
* Scrittura : permetti le modifiche del file da parte di un utente ( 2 )<br />
* Esecuzione : permetti di eseguire lo script ( 1 )<br />
Questi 3 permessi devono essere indicati per ognuno dei 3 tipi di utenti. Ad esempio <code>chmod 755</code>, non é altro che il tipo di permesso che si imposta ad un file, rendendolo:<br />
* leggibile-scrivibile-eseguibile al proprietario<br />
* leggibile-eseguibile al gruppo<br />
* leggibile-eseguibile agli altri utenti<br />
Il permesso <code>chmod 755</code> si calcola in questo modo:<br />
<pre><br />
Permessi proprietario:<br />
Lettura si = 4<br />
Scrittura si = 2<br />
Esecuzione si = 1<br />
Totale = 7<br />
Permessi gruppo:<br />
Lettura si = 4<br />
Scrittura no = 0<br />
Esecuzione si = 1<br />
Totale = 5<br />
Permessi utenti:<br />
Lettura si = 4<br />
Scrittura no = 0<br />
Esecuzione si = 1<br />
Totale = 5<br />
</pre><br />
Affiancando i tre totali si ottiene il permesso 755.<br />
<br/><br />
Per cambiare i permessi al file "testo.txt" dovremo quindi agire da autori del file e digitare:<br />
<pre><br />
chmod xxx testo.txt<br />
</pre><br />
Al posto delle lettere <code>xxx</code> devono essere indicati i numeri ottali visti in precedenza. Ad esempio:<br />
* 755 – Lettura, scrittura, esecuzione per il proprietario, lettura, esecuzione per il gruppo ed altri utenti.<br />
* 644 – Lettura, scrittura per il proprietario, lettura per il gruppo ed altri utenti.<br />
* 666 – Lettura e scrittura per tutti.<br />
* 700 – Lettura, scrittura, esecuzione per il proprietario, nessun permesso per il gruppo ed altri.<br />
In generale valori che vanno da "0" a "7" rappresentano in forma numerica i permessi come di seguito riportato:<br />
<pre><br />
4 è uguale a lettura(r),<br />
2 è uguale a scrittura(w),<br />
1 è uguale a esecuzione(x),<br />
0 rimuove i permessi.<br />
</pre><br />
Il valore numerico risultante è pari alla somma di tali valori.<br><br />
Partendo sempre da sinistra, la prima cifra si riferisce ai permessi per l'utente proprietario.<br><br />
La seconda cifra fa riferimento ai permessi per il gruppo proprietario.<br><br />
La terza e ultima cifra si riferisce ai permessi per gli altri utenti non appartenenti al gruppo proprietario.<br><br />
Un'altra sintassi utilizzabile è:<br />
<pre><br />
chmod u|g|o|a|+rwx file1/directory1<br />
</pre><br />
Significato delle opzioni disponibili del precedente comando:<br />
u = user - applica i permessi all'utente proprietario del file,<br />
g = group - applica i permessi al gruppo proprietario del file,<br />
o = other - applica i permessi ad altri utenti,<br />
a = all - applica i permessi a tutti gli utenti,<br />
+ = questo operatore logico aggiunge i permessi specificati,<br />
- = questo operatore logico rimuove i permessi specificati,<br />
r = indica il permesso di lettura,<br />
w = indica il permesso di scrittura,<br />
x = indica il permesso di esecuzione.<br />
<br />
== Cambiare l'utente proprietario di un file ==<br />
Per cambiare l'utente e il gruppo proprietari di ciascun file dato (specificato dal primo argomento che non sia un'opzione) si utilizza il comando <code>chown</code> nel seguente modo: se viene dato solo un nome utente (o una user ID numerica), quell'utente diventa proprietario di ciascun file dato, il cui gruppo non viene modificato. Se il nome utente è seguito da <code>:</code> e un nome di gruppo (o una group ID numerica), senza spazi frapposti, allora anche il gruppo proprietario del file viene cambiato.<br><br />
La sintassi del comando è:<br />
<pre><br />
chown [opzioni] utente[:gruppo] file...<br />
</pre><br />
<br />
=== Esempi ===<br />
* Cambiare il proprietario del file <code>prova.txt</code><br />
<pre><br />
chown ferdy prova.txt<br />
</pre><br />
* Cambiare proprietario e gruppo proprietario del file <code>prova.txt</code><br />
<pre><br />
chown ferdy:gruppo_desiderato prova.txt<br />
</pre><br />
* Cambiare ricorsivamente il proprietario di tutti i file della directory <code>prova</code><br />
<pre><br />
chown -R ferdy prova/<br />
</pre><br />
<br />
== Cambiare il gruppo proprietario di un file ==<br />
Per cambiare il gruppo proprietario di un file si utilizza il comando <code>chgrp</code>. Il gruppo può essere identificato col nome o con l'ID. La sintassi del comando è:<br />
<pre><br />
chgrp [opzioni] gruppo file...<br />
</pre><br />
Ad esempio, per cambiare il gruppo proprietario di tutti i file contenuti nella directory <code>prova</code> si digiti:<br />
<pre><br />
chgrp -R gruppo_voluto prova/<br />
</pre><br />
<br />
== Ricerca di file nel sistema ==<br />
Se siamo alla ricerca di un determinato file all’interno del nostro computer, il mio consiglio è andare su Risorse e selezionare Cerca file. In questo modo il processo sarà più rapido e meno macchinoso, ma in questa guida siamo qui per vedere come è possibile farlo anche da terminale.<br><br />
Il motore di ricerca da terminale si chiama <code>locate</code> e possiamo installarlo normalmente digitando:<br />
<pre><br />
apt-get install locate<br />
</pre><br />
Esso fa uso di un database ad aggiornamenti costanti, ma non frequenti, pertanto se volessimo ricercare un file di recente creazione, spostamento o immissione nel sistema dovremo prima lanciare il comando di update per questo database. Da root o con permessi sudoer aggiungendo “sudo” prima della sintassi digitiamo:<br />
<pre><br />
/usr/bin/updatedb<br />
</pre><br />
Attendiamo che l’aggiornamento sia terminato, e poi lanciamo:<br />
<pre><br />
locate testo.txt<br />
</pre><br />
<br />
== Scaricare un file da Internet ==<br />
Da terminale è possibile anche scaricare file da Internet, utilizzando il comando <code>wget</code> con i protocolli HTTP o FTP. Ad esempio se volessimo scaricare il file http://www.sito.it/file.rar, ci basterà digitare:<br />
<pre><br />
wget http://www.sito.it/file.rar<br />
</pre><br />
Il file sarà messo in download e, una volta scaricato, piazzato nella directory in cui ci trovavamo al momento del lancio del comando.<br />
<br />
== Sincronizzare il contenuto di due directory ==<br />
<code>Rsync</code> e' un comando (ed un protocollo) che permette la copia di file via rete, ottimizzando i tempi di backup e ripristino dei dati. Non è presente in un'installazione minimale di Debian; occorre pertanto installarlo col comando:<br />
<pre><br />
# apt-get install rsync<br />
</pre><br />
La sintassi del comando è la seguente:<br />
<pre><br />
# rsync -av --delete /Directory/Sorgente /Directory/Destinazione <br />
</pre><br />
Le opzioni usate hanno il seguente significato:<br />
* <code>-avr</code>: specifica di copiare i file mantenendo ownership, permessi e in modalità ''directory recursive''<br />
* <code>--delete</code>: elimina dalla directory di destinazione i file non più presenti nella directory sorgente<br />
<br />
= Gestione Utenti =<br />
== Definizione di root e differenze con il normale utente ==<br />
Cos’è '''root'''?<br><br />
Nei sistemi operativi di tipo Unix si indica con root l’utente dotato di massimi privilegi, cioè l’amministratore di sistema, detto anche super utente o superuser.<br><br />
L’account root su sistemi Unix è paragonabile a quello di Administrator su sistemi Windows NT/XP.<br><br />
L’utente root può fare tutto ciò che si desidera sul sistema: questo può essere sia un vantaggio sia uno svantaggio nello stesso momento. Viene infatti universalmente ritenuto pericoloso compiere le normali sessioni di lavoro in qualità di root: agire come utente normale e come utente root solo per amministrazione del sistema permette di minimizzare il rischio di effettuare operazioni pericolose come cancellare file essenziali per il sistema operativo.<br><br />
Fonte: Wikipedia<br />
<br />
== Accesso come root ==<br />
Per poter accedere come utente root nel sistema, ed avere quindi la possibilità di svolgere ogni operazione nel sistema, basterà digitare da terminale:<br />
<pre><br />
su -<br />
</pre><br />
Verrà richiesta la password di root e sarà eseguito l’accesso.<br><br />
Noterete che il prompt del terminale è cambiato, passando da:<br />
<pre><br />
$<br />
</pre><br />
''(che identifica un utente normale)''<br><br />
a:<br />
<pre><br />
#<br />
</pre><br />
''(che identifica l'utente root)''<br />
<br />
== Disconnessione da root ==<br />
''(per tornare utente con permessi normali sulla stessa finestra di terminale)''<br><br />
Se siete diventati root in una finestra di terminale, e volete tornare user senza chiudere la finestra o aprirne un’altra, basterà digitare:<br />
<pre><br />
exit<br />
</pre><br />
Il comando exit può servire anche per chiudere la finestra del terminale.<br />
<br />
== Creazione di un nuovo utente ==<br />
Per creare un nuovo utente da terminale, è sufficiente diventare root, e digitare il comando:<br />
<pre><br />
adduser nomeutente<br />
</pre><br />
Al posto di “nomeutente”, naturalmente, va scritto il nome dell’utente che volete creare. Saranno richieste la password che si vuole assegnare all’utente, e in più altre piccole informazioni facoltative , come Nome Completo, Stanza N° (?!), Numeri telefonici.<br />
<br />
== Cancellazione di un utente ==<br />
Per cancellare un utente registrato nel sistema, aperto il terminale e fatto accesso come utenti root, si digiti:<br />
<pre><br />
userdel nomeutente<br />
</pre><br />
Dove “nomeutente” deve essere sostituito con il nome dell’utente che si vuole cancellare. Non sono richiesti altri comandi o informazioni e l’operazione avverrà in meno di un secondo.<br />
<br />
== Modifica della password di un utente ==<br />
Per la modifica da terminale della password di un utente si utilizza il comando <code>passwd</code>. Facciamo login come utente root e diamo il comando:<br />
<pre><br />
passwd nomeutente<br />
</pre><br />
mettendo il nome dell’utente a cui vogliamo settare la password al posto di “nomeutente”. Con questo metodo è possibile cambiare non solo le password degli utenti, ma anche quella di root.<br />
<br />
= Compiere operazioni con sudo =<br />
<br />
== Definizione di sudo ==<br />
Il comando <code>sudo</code> (super user do) è una stringa di comando usata su sistemi operativi Unix-like per eseguire operazioni ottenendo temporanei privilegi di root (ovvero di amministratore).<br><br />
A differenza del comando <code>su</code> (substitute user), <code>sudo</code> richiede all’utente solo la propria password, e non quella dell’amministratore; perciò non occorre conoscere password altrui, con ovvi vantaggi sulla sicurezza, ma è sufficiente essere stati precedentemente abilitati. Il file di configurazione <code>/etc/sudoers</code> stabilisce chi può sostituire chi, su quali macchine, e relativamente a quali operazioni.<br><br />
Fonte: Wikipedia<br />
<br />
== Installazione di sudo ==<br />
In una installazione di default di Debian <code>sudo</code> non è compreso. Per installarlo basta digitare:<br />
<pre><br />
apt-get install sudo<br />
</pre><br />
<br />
== Configurazione di sudo ==<br />
Per aggiungere un utente al gruppo di sudoers, è sufficiente loggarsi da root e lanciare il comando:<br />
<pre><br />
visudo<br />
</pre><br />
Potremo così modificare il file <code>/etc/sudoers</code> ed aggiungere i permessi di sudoer ad un utente specifico.<br><br />
Un esempio di file <code>/etc/sudoers</code>:<br />
<pre><br />
# /etc/sudoers<br />
#<br />
# This file MUST be edited with the 'visudo' command as root.<br />
#<br />
# See the man page for details on how to write a sudoers file.<br />
#<br />
<br />
Defaults env_reset<br />
<br />
# Host alias specification<br />
<br />
# User alias specification<br />
<br />
# Cmnd alias specification<br />
<br />
# User privilege specification<br />
root ALL=(ALL) ALL<br />
ferdy ALL=(ALL) ALL<br />
<br />
# Uncomment to allow members of group sudo to not need a password<br />
# (Note that later entries override this, so you might need to move<br />
# it further down)<br />
# %sudo ALL=NOPASSWD: ALL<br />
<br />
# Members of the admin group may gain root privileges<br />
%admin ALL=(ALL) ALL<br />
</pre><br />
Una volta che il nostro utente sarà abilitato all'utilizzo di sudo, potremo lanciare qualsiasi operazione di sistema che richieda permessi speciali, aggiungendo <code>sudo</code> all’inizio di ogni sintassi. Per esempio, per l’installazione di VLC:<br />
<pre><br />
sudo apt-get install vlc<br />
</pre><br />
e così via. Il comando <code>sudo</code> è molto comodo, ma ovviamente comporta più rischi per la sicurezza, specialmente nel caso in cui il sistema è utilizzato da più utenti. Usatelo con discrezione.<br />
<br />
= Gestione del sistema =<br />
== Visualizzare i processi di sistema in uso e le loro dipendenze ==<br />
Da terminale abbiamo anche la possibilità di avere la panoramica sui processi in uso dal sistema. Il comando che ci occorre è:<br />
<pre><br />
ps -e<br />
</pre><br />
Potete anche chiedere uno schema strutturato ad albero se volete avere le idee più chiare sui processi aperti; il sistema avrà cura di raggrupparvi in una bella struttura i processi principali in esecuzione, e poi le loro rispettive dipendenze. Il comando da utilizzare è:<br />
<pre><br />
pstree<br />
</pre><br />
<br />
== Forzare la chiusura di un processo ==<br />
Nel caso in cui vi trovaste con un programma andato in crash, che vi consuma RAM e che non accenna a chiudersi con una normale chiusura, potrete forzarne l’uscita. Il comando che serve per farlo da terminale è:<br />
<pre><br />
kill processo<br />
</pre><br />
Sostituendo naturalmente la voce “processo” con il nome del responsabile del blocco che volete killare.<br />
<br />
== Visualizzare in ordine cronologico tutti i comandi digitati ==<br />
Avete notato che sul terminale, premendo il tasto direzionale in su sulla tastiera vedrete il comando lanciato in precedenza? E che più volte cliccate, più comandi precedenti vengono mostrati?<br><br />
C’è un metodo più comodo che sfrutta questo sistema di ricordo cronologico dei comandi lanciati:<br />
<pre><br />
history<br />
</pre><br />
<br />
== Visualizzare le pagine di manuale ==<br />
Le man page sono documenti che descrivono il funzionamento e la sintassi di programmi, funzioni e particolari file che compongono il sistema operativo. La quasi totalità dei comandi a disposizione hanno la propria man page che può essere visualizzata mediante il comando man, utilizzando la seguente sintassi:<br />
<pre><br />
man comando_di_cui_vogliamo_visualizzare_il_manuale<br />
</pre><br />
ad esempio per visualizzare la pagina di manuale del comando ls dobbiamo digitare:<br />
<pre><br />
man ls<br />
</pre><br />
il quale visualizzerà la pagina di manuale che può essere scorsa e letta tranquillamente e comodamente a video. Per uscire dalla visualizzazione della pagina di manuale dobbiamo premere il tasto <code>q</code>.<br />
<br />
=== Sezioni delle man pages ===<br />
Come abbiamo detto in precedenza, le pagine di manuale sono una vasta moltitudine (praticamente ogni comando possiede la propria pagina di manuale) e proprio per questo motivo si è scelto di dividere le varie man page in diverse sezioni numerate. Questo sistema è utilizzato in sostanza dalla nascita del sistema operativo GNU/Linux e spesso vi capiterà di incontrare riferimenti a comandi, programmi e anche a funzioni di librerie software assieme al relativo numero di sezione della pagina del manuale come ad esempio man(1). Questa indicazione significa che la documentazione relativa al comando man è inserita all'interno della sezione 1 (comandi utente). Possiamo visualizzare la sezione 1 del manuale per "man" attraverso il comando<br />
<pre><br />
man 1 man<br />
</pre><br />
Specificare la sezione è utile quando ci troviamo di fronte a casi di argomenti multipli con lo stesso nome. Vediamo qui di seguito quali sono e come sono suddivise le varie sezioni di man:<br />
* Sezione 1 comandi utente (soltanto l'introduzione)<br />
* Sezione 2 chiamate di sistema<br />
* Sezione 3 chiamate delle librerie C<br />
* Sezione 4 dispositivi (es.: hd, sd,)<br />
* Sezione 5 formati dei file e protocolli (es.: wtmp, /etc/passwd, nfs)<br />
* Sezione 6 giochi (introduzione)<br />
* Sezione 7 convenzioni, pacchetti macro, etc. (es.: nroff, ascii)<br />
* Sezione 8 amministrazione di sistema (soltanto l'introduzione)<br />
<br />
== Modificare la priorità di un processo ==<br />
<code>'''nice'''</code> è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che esegue un altro comando modificando il suo valore di ''nice''.<br/><br />
Il valore di ''nice'' è un attributo numerico di ciascun processo dei sistemi Unix e Unix-like che è usato dallo scheduler per stabilire quanto tempo di CPU dedicare all'esecuzione del processo. A parità di priorità e di politica di schedulazione, i processi che hanno valori di ''nice'' maggiori ottengono in proporzione meno tempo di CPU rispetto a processi che hanno valori di ''nice'' minori, e quindi la loro esecuzione procede più lentamente, favorendo gli altri processi. L'idea generale è che un utente si comporti in maniera cortese (la traduzione dalla lingua inglese del termine nice è appunto cortese, simpatico) nei confronti degli altri utenti quando avvia elaborazioni particolarmente lunghe ed intense, avviandole con un valore di nice elevato in modo da non rallentare eccessivamente l'esecuzione dei processi degli altri utenti.<br>/<br />
<code>nice</code> è anche il nome di una chiamata di sistema definita dallo standard POSIX che modifica il valore di ''nice'' del processo che la invoca. Di fatto il comando <code>nice</code> opera invocando l'omonima chiamata di sistema. Per diminuire il valore di ''nice'' è necessario disporre dei privilegi dell'amministratore (root), mentre ciò non è necessario per aumentarlo. Tipicamente è possibile diminuire il valore di ''nice'' fino a 20 unità rispetto al valore predefinito, o aumentarlo fino a 19 unità: è possibile specificare scostamenti più ampi, ma essi sono automaticamente ricondotti entro i limiti sopra citati.<br />
<br />
=== Uso ===<br />
La sintassi generale di nice è la seguente:<br />
<pre><br />
nice [opzioni] [--] comando [arg1 [arg2 …] ]<br />
</pre><br />
Il parametro <code>''comando''</code> indica il comando da eseguire, ed i parametri facoltativi <code>''arg''</code> i suoi parametri.<br/><br />
Il doppio trattino <code>--</code> (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.<br/><br />
Tra le opzioni significative vi sono:<br />
* <code>-n delta</code>: somma algebricamente il valore ''delta'' al valore di ''nice'', in modo da aumentarlo o diminuirlo; ''delta'' può essere negativo, in modo da privilegiare il programma rispetto agli altri, ma in tal caso occorre disporre dei privilegi dell'amministratore (root). Se l'opzione <code>-n</code> non è specificata, il comportamento predefinito prevede di aggiungere 10 al valore di ''nice'';<br />
<br />
=== Esempi ===<br />
Avvia parallelamente due copie del programma <code>factor</code>, ciascuna delle quali calcola i fattori primi del numero 4611686018427387903, misurando il tempo di esecuzione tramite il comando <code>time</code>: la prima copia viene eseguita con un valore di ''nice'' elevato (aumentato di 20 unità rispetto al normale), mentre la seconda usa il valore di ''nice'' predefinito. Entrambe le copie impiegano lo stesso tempo di CPU per effettuare il calcolo, ma la prima copia è svantaggiata e (su un sistema con una sola CPU) completa il suo calcolo ben dopo la seconda:<br />
<pre><br />
time nice -n 20 factor 4611686018427387903 &<br />
time factor 4611686018427387903 &<br />
</pre><br />
<br />
= Gestione del File System =<br />
<br />
Se non si ha chiaro cosa sia un file system si veda prima [[File System | questa pagina]] introduttiva.<br />
<br />
== Lista dei File System montati ==<br />
Se si avesse l’esigenza di conoscere i File System montati nel sistema, utile per sapere come sono allocati in /dev, che tipo di permessi di lettura e scrittura si hanno in essi, e così via, si può semplicemente lanciare da qualunque utente il comando:<br />
<pre><br />
mount<br />
</pre><br />
Per ottenere in output la lista che cerchiamo.<br><br />
Il file che dice a Linux quali dispositivi vanno montati all'avvio del sistema e dove vanno montati è <code>/etc/fstab</code>.<br />
<br />
== Connessione di nuove risorse ==<br />
{{Box|Nota| Dischi ottici, dischi rigidi, memorie usb e partizioni remote sono tutti esempi di risorse, ovvero di filesystem esterni che un utente può agganciare a quello locale della macchina in uso. }}<br />
L'operazione di '''montaggio''' (in inglese '''mount''') di una risorsa permette di "agganciare" un dispositivo tra quelli elencati in <code>/dev</code> a una directory del file system, per renderlo utilizzabile all'interno del sistema.<br><br />
Collegato ad esempio un nuovo disco fisso al PC ed ipotizzato che questo sia identificato da Linux come <code>/dev/hdd1</code> è possibile renderlo raggiungibile sotto una certa directory arbitraria, per esempio <code>/mnt</code>, tramite la seguente procedura:<br />
# creare all'interno di <code>/mnt</code> una directory a cui "agganciare" il disco:<pre># mkdir /mnt/disco_dati</pre><br />
# eseguire il mount del disco:<pre># mount -t auto /dev/hdd1 /mnt/disco_dati</pre><br />
L'opzione <code>-t auto</code> dice a Linux di riconoscere automaticamente il filesystem con cui il nostro disco è stato formattato.<br><br />
Da questo momento i dati contenuti nel nostro hard disk saranno raggiungibili andando nella directory <code>/mnt/disco_dati</code>.<br><br />
Il principale pregio di '''<code>mount</code>''' risiede nell'elevato numero di filesystem supportati, nativamente o ottraverso appositi pacchetti che ne estendono le capacità. Esistono quattro tipi di sintassi generica (si veda il manuale), qui di seguito si descrive solo l'ultima:<br />
<pre># mount [-fnrsvw] -t tipo_fs -o fsopzione1,fsopzione2,ecc. /origine/risorsa /punto/montaggio</pre><br />
* '''[-fnrsvw]''', sono opzioni specifiche e facoltative dell'eseguibile mount, si veda il manuale per il significato di ciascuna lettera.<br />
* '''-t''', specifica il tipo di filesystem che verrà montato, ad esempio auto,ext3,fat, ecc. Come già scritto auto incarica mount di capire autonomamente che filesystem si andrà a montare.<br />
* '''-o''', specifica una o più opzioni relative al filesystem. Esistono sia opzioni valide per tutti i filesystem, altre specifiche dei singoli filesystem e infine altre utili solo se dichiarate nel file <code>/etc/fstab</code><br />
* '''/origine/risorsa''', indica semplicemente dove andare a prendere il filesystem della risorsa, per esempio <code>/dev/sdc</code> nel caso del disco rigido o chiavetta usb identificata dalla lettera "c".<br />
* '''/punto/montaggio''', in quale directory (che deve già esistere) sarà visibile il contenuto della risorsa montata.<br />
Di seguito alcuni esempi specifici.<br />
<br />
=== Montaggio di un immagine ISO ===<br />
Il comando <code>mount</code> viene molto utile quando abbiamo un'immagine ISO di un CD-Rom e vogliamo vederne il contenuto senza masterizzarla:<br />
<pre>mount -t iso9660 -o loop /cartella/immagine.iso /cartella/di/montaggio</pre><br />
<br />
=== Montaggio di una partizione NTFS ===<br />
Per montare una partizione formattata NTFS occorre che sia installato il pacchetto:<br />
<pre><br />
# apt-get install ntfs-3g<br />
</pre><br />
Quindi si proceda come visto in precedenza:<br />
<pre><br />
# mkdir /mnt/disco_ntfs<br />
# mount -t ntfs-3g /dev/sdb1 /mnt/disco_ntfs<br />
</pre><br />
E' possibile eseguire automaticamente all'avvio di Debian il montaggio di una partizione NTFS aggiungendo al file <code>/etc/fstab</code> la seguente riga:<br />
<pre><br />
/dev/sdb1 /mnt/disco_ntfs ntfs-3g rw,users,suid,umask=000 0 0<br />
</pre><br />
<br />
===Montaggio di una partizione NFS===<br />
Si veda [http://guide.debianizzati.org/index.php/Condividere_directory_tra_macchine_GNU/Linux_con_NFS#METODO_STATICO questa pagina].<br />
<br />
===Montaggio di una cartella SAMBA===<br />
Si veda [http://guide.debianizzati.org/index.php/Condivisione_risorse_con_Samba#Caricare_le_risorse_remote questa pagina].<br />
<br />
== Disconnessione di una risorsa già presente ==<br />
Se volessimo al contrario "sganciare" un disco dal nostro sistema, ci servirà il comando:<br />
<pre><br />
umount /cartella/da/smontare/<br />
</pre><br />
Ad esempio:<br />
<pre><br />
umount /mnt/disco_dati<br />
</pre><br />
Da questo momento il nostro disco non sarà più raggiungibile.<br />
{{ Warningbox | State attenti a '''non''' eseguire lo smontaggio di dischi di sistema o potreste rendere inutilizzabile il vostro PC }}<br />
<br />
== Cercare le directory che occupano più spazio ==<br />
Il seguente comando permette di ricercare le directory di dimensioni più grosse all'interno del nostro filesystem. Il comando ricerca le sottodirectory a partire dalla directory corrente.<br />
<pre><br />
# du -sk * | sort -rn<br />
</pre><br />
<br />
= Gestione dell'Hardware =<br />
<br />
== Ricavare informazioni sul sistema ==<br />
Il comando <code>uname</code> restituisce in output diverse informazioni sul sistema. La sintassi del comando è:<br />
<pre><br />
uname [OPZIONE]...<br />
</pre><br />
Le opzioni che possiamo passare al comando sono:<br />
* <code>-s</code>: Mostra il nome del kernel<br />
* <code>-n</code>: Mostra il nome dell'host nel nodo di rete <br />
* <code>-r</code>: Release del kernel<br />
* <code>-v</code>: Versione del kernel<br />
* <code>-m</code>: Nome hardware della macchina<br />
* <code>-p</code>: Tipo di processore<br />
* <code>-i</code>: Piattaforma hardware<br />
* <code>-o</code>: Sistema Operativo<br />
* <code>-a</code>: Mostra tutte le opzioni precedenti<br />
<br />
== Lista delle periferiche USB montate ==<br />
Quando abbiamo bisogno di venire a conoscenza delle periferiche USB collegate al sistema (utile, spesso, per sapere se in qualche modo il nostro sistema ha riconosciuto una determinata periferica), possiamo lanciare, da root o con “sudo”, il seguente comando:<br />
<pre><br />
lsusb<br />
</pre><br />
Avremo la lista delle porte USB nel nostro PC, e in caso di loro occupazione avremo nella riga della porta USB occupata il nome della periferica connessa, solitamente composto da marca e modello della stessa.<br />
<br />
== Lista delle schede PCI montate ==<br />
Quando abbiamo bisogno di venire a conoscenza delle periferiche PCI collegate al sistema (utile, spesso, per sapere se in qualche modo il nostro sistema ha riconosciuto una determinata periferica), possiamo lanciare, da qualsiasi posizione, il seguente comando:<br />
<pre><br />
lspci<br />
</pre><br />
Avremo la lista delle schede PCI collegate, inclusa la scheda video.<br />
<br />
== Visualizzare lo spazio libero sui dischi ==<br />
Se vogliamo avere una veloce panoramica dello spazio libero di tutti i File System montati ci basta utilizzare il comando:<br />
<pre><br />
df -h<br />
</pre><br />
L'opzione <code>-h</code> dice al comando di fornire l'output in un formato facilmente comprensibile.<br />
<br />
== Visualizzare lo stato della memoria RAM e della cache ==<br />
Per visualizzare lo stato di utilizzo della RAM e della cache si digiti:<br />
<pre><br />
free<br />
</pre><br />
<br />
== Visualizzare l'utilizzo delle risorse del sistema ==<br />
Il programma <code>top</code> fornisce una visualizzazione in tempo reale della situazione sull'utilizzo delle risorse di sistema attraverso una tabella dell'attività principale della CPU. <code>top</code> mostra la lista dei task del sistema che fanno un utilizzo più intenso della CPU e mette a disposizione un'interfaccia interattiva per la manipolazione dei processi. I task possono essere ordinati in base all'utilizzo della CPU, all'utilizzo della memoria e al tempo di esecuzione. L'utilizzo più semplice di top prevede la seguente sintassi:<br />
<pre><br />
top [opzioni]<br />
</pre><br />
Mentre top è in esecuzione sono riconosciuti diversi comandi ‘‘single-key’’ che sono di seguito descritti:<br />
* <code>'''h'''</code> Mostra un schermata d’aiuto che da una breve sommario dei comandi e lo stato dei secure e cumulative mode.<br />
* <code>'''k'''</code> Killa un processo. Sarà chiesto il PID del task, e il signal da inviare.<br />
* <code>'''q'''</code> Esce da top<br />
* <code>'''s'''</code> Cambia l’intervallo di aggiornamento. Sarà richiesto di specificare il nuovo intervallo da utilizzare (da esprimere in secondi).<br />
* <code>'''m'''</code> Disabilita (riabilita) la visualizzazione delle informazioni sulla memoria.<br />
* <code>'''t'''</code> Disabilita (riabilita) la visualizzazione delle informazioni sui processi e sullo stato della CPU.<br />
* <code>'''M'''</code> Ordina i task in base all’uso di memoria residente.<br />
* <code>'''P'''</code> Ordina i task in base all’uso della CPU (default).<br />
* <code>'''T'''</code> Ordina i task in base al tempo (o al tempo cumulativo).<br />
* <code>'''W'''</code> Salva la configurazione corrente all'interno del file <code>~/.toprc</code> <br />
Il comando <code>top</code> inoltre può essere lanciato specificando alcune opzioni in base alle nostre esigenze. Qui di seguito riportiamo quelle più importanti:<br />
<pre><br />
top -d secondi<br />
</pre><br />
Consente di specificare l'intervallo di aggiornamento utilizzato da top espresso in secondi<br />
<pre><br />
top -s <br />
</pre><br />
Disabilita alcuni comandi in modo interattivo. Questa opzione torna utile quando si vuole lasciare funzionare top in un terminale separato evitando incidenti.<br />
<pre><br />
top -i<br />
</pre><br />
Consente la visualizzazione dei processi inattivi o defunti (chiamati anche zombie)<br />
<pre><br />
top -c<br />
</pre><br />
Permette di visualizzare la riga di comando, invece del solo nome del programma.<br><br />
In alternativa a top possiamo utilizzare il programma <code>htop</code> che è modo simile a top, ma offre la possibilità di scorrere l'elenco di tutti i processi e mette a disposizione comandi interattivi più intuitivi e comodi.<br />
<br />
= Varie =<br />
<br />
== Arresto del sistema ==<br />
Per spegnere il PC direttamente da terminale, si può lanciare uno dei comandi seguenti:<br />
<pre><br />
halt<br />
</pre><br />
oppure<br />
<pre><br />
shutdown -h now<br />
</pre><br />
dove<br />
* <code>-h</code> indica che vogliamo arrestare il sistema.<br />
* <code>now</code> indica che non deve trascorrere del tempo prima che il sistema inizi la procedura di spegnimento.<br />
Serve essere root o avere i permessi di sudoer (aggiungere sudo all’inizio della sintassi) affinché il comando vada a buon fine.<br />
<br />
== Riavvio del sistema ==<br />
Per riavviare il PC direttamente da terminale, si può lanciare uno dei comandi seguenti:<br />
<pre><br />
reboot<br />
</pre><br />
oppure<br />
<pre><br />
shutdown -r now<br />
</pre><br />
dove<br />
* <code>-r</code> indica che vogliamo riavviare il sistema.<br />
* <code>now</code> indica che non deve trascorrere del tempo prima che il sistema inizi la procedura di riavvio.<br />
Serve essere root o avere i permessi di sudoer (aggiungere sudo all’inizio della sintassi) affinché il comando vada a buon fine.<br />
<br />
== Visualizzare data e ora del sistema ==<br />
È una cosa un po' inutile, ma alle volte può far comodo. Potete vedere data e ora del sistema semplicemente digitando:<br />
<pre><br />
date<br />
</pre><br />
<br />
== Lanciare applicazioni e programmi da terminale ==<br />
Ora che abbiamo preso dimestichezza con i comandi principali di un terminale Linux possiamo utilizzare la seguente guida per provare a svolgere da terminale anche il nostro lavoro quotidiano. I limiti di utilizzo del terminale Linux sono dati solo dalla nostra fantasia.<br><br />
Elenco programmi da terminale: http://guide.debianizzati.org/index.php/Elenco_programmi_senza_interfaccia_grafica<br />
<br />
= Approfondimenti =<br />
=== Sitografia ===<br />
http://vicsteele.wordpress.com/comandi/<br><br />
http://linuxpedia.netsons.org<br><br />
http://www.wikipedia.org<br />
{{Autori<br />
|Autore=[[Utente:Ferdybassi|Ferdybassi]] 15:14, 22 dic 2009 (CET)<br />
}}<br />
<br />
<br />
[[Categoria:Shell]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Installare_Debian_da_pendrive_USB_o_SD_card&diff=28882Installare Debian da pendrive USB o SD card2012-06-02T21:46:23Z<p>Skizzhg: aggiornamento URL</p>
<hr />
<div>{{Template:Installazione<br />
|precedente_inst=Installare Debian<br />
|successivo_inst=Installare Debian da hard disk<br />
}}<br />
{{Versioni compatibili}}<br />
<br />
== Metodo 1 ==<br />
A partire da Debian 6.0 (Squeeze), la procedura di boot da dispositivo USB è stata ulteriormente semplificata. Questo consentirà, a chi volesse installare Debian, di impartire un unico comando per la creazione di una pendrive bootabile.<br/><br />
Quello che verrà descritto è il metodo più veloce, facile e consigliato per installare Debian da dispositivo USB; per applicarlo è necessario già avere Debian (o altra distribuzione) installata sul proprio sistema.<br />
<br />
È sufficiente scaricare un'immagine .iso (primo CD/DVD, netinst o business-card, vedi la guida [[Installare Debian]]), accertarsi che la pendrive ''non'' sia montata e che la sua capacità sia tale da contenere l'immagine. Quindi basta un:<br />
<pre><br />
# dd if=/path/dell/immagine/nome_immagine.iso of=/dev/sdb<br />
</pre><br />
e ritrovarsi una pendrive bootabile per installare Debian.<br />
{{Warningbox | Il precedente esempio riguarda una pendrive riconosciuta come "sdb". Accertatevi di inserire il device corretto poiché il precedente comando cancella ogni dato presente sul dispositivo.<br/><br />
Utilizzare il comando:<br />
<pre><br />
# fdisk -l <br />
</pre><br />
per dissipare eventuali dubbi.}}<br />
<br />
<br />
{{Warningbox | Usando questo metodo ibrido, può succedere che il supporto USB sia memorizzato come CD/DVD per cui dopo l'installazione si riceve un errore nel riconoscimento dei supporti USB, per risolvere: editare il file /etc/fstab.<br/><br />
<pre><br />
# nano /etc/fstab <br />
</pre><br />
ed eliminare la riga relativa al pseudo CD/DVD.<br />
Facendo ciò i supporti USB verranno riconosciuti correttamente}}<br />
<br />
==Metodo 2==<br />
=== Intro ===<br />
La seguente guida mostra come installare d-i su supporto USB.<br />
<br />
Si considererà:<br />
# Dispositivo USB in <code>/dev/sdb</code> e montato in <code>/media/disk</code><br />
# Architettura x86 <br />
# Debian stabile (Squeeze)<br />
<br />
<br />
{{Box | Nota |Questo howto si basa sul metodo riportato sulla guida ufficiale che trovate a questo link [http://d-i.alioth.debian.org/manual/en.i386/ch04s03.html] introducendo alcune variazioni:<br />
# File ordinati in sottodirectory nella radice del supporto USB.<br />
# Si mette in evidenza la necessità di avere i firmware mancanti.<br />
# Si accenna alla possibilità del repository locale.}}<br />
<br />
=== Preparazione del supporto USB ===<br />
Occorre creare una partizione fat32 avviabile sul supporto USB, tale partizione deve essere la prima e primaria, per tale fine si possono usare tools come gparted o cfdisk in alternativa alle seguente operazioni<br />
<br />
{{ Warningbox | Tutti i dati sul supporto USB verranno persi }}<br />
<br />
<pre><br />
# aptitude install mbr parted<br />
# umount /media/disk<br />
# dd if=/dev/zero of=/dev/sdb count=512 bs=1<br />
# install-mbr --force /dev/sdb<br />
# parted /dev/sdb mkpartfs primary fat32<br />
# Start? 0 <br />
# End? -1 <br />
# parted /dev/sdb set 1 boot on<br />
</pre><br />
<br />
=== Installazione del bootloader ===<br />
<br />
<pre><br />
# aptitude install syslinux<br />
# syslinux /dev/sdb1<br />
</pre><br />
<br />
=== Installazione della netinst ===<br />
Il debian-installer (d-i) è concepito per funzionare su cd/dvd, per farlo funzionare da USB si ricorre ad un loader che caricherà l'immagine iso.<br />
<br />
<pre><br />
# cd /tmp<br />
# wget http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-i386/current/images/hd-media/boot.img.gz<br />
# gunzip boot.img.gz<br />
# mkdir img /media/disk/syslinux /media/disk/netinst /media/disk/firmware<br />
# mount boot.img img -t vfat -o loop<br />
# cp -r img/* /media/disk/syslinux<br />
# umount img<br />
# cd /media/disk/syslinux<br />
# mv *.gz ../netinst<br />
# mv linux ../netinst<br />
</pre><br />
<br />
Poiché vengono copiati i file <code>linux</code> e <code>initrd</code> nella sottodirectory <code>/netinst</code>, modificando la loro posizione originaria, occorre modificare il loro PATH nel file di configurazione del bootloader, si ricorre al comando ''sed'' per tale semplice sostituzione.<br />
<pre><br />
# sed -i "s/linux/\/netinst\/linux/g" *.cfg<br />
# sed -i "s/initrd.gz/\/netinst\/initrd.gz/g" *.cfg<br />
# sed -i "s/initrdg.gz/\/netinst\/initrdg.gz/g" *.cfg<br />
</pre><br />
<br />
In fine si scarica l'immagine netinst:<br />
<pre><br />
# cd /media/disk/netinst<br />
# wget http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-6.0.5-i386-netinst.iso<br />
</pre><br />
<br />
Notare che la versione nell'URL potrebbe cambiare, fare riferimento a http://www.debian.org/CD/netinst/<br />
<br />
d-i hd-media [http://www.id.debian.org/releases/stable/i386/ch04s03.html.it]<br />
<br />
=== Installazione dei firmware mancanti ===<br />
Si tratta di firmware proprietari non compresi nel d-i.<br />
<br />
<pre><br />
# cd /media/disk/<br />
# wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.tar.gz<br />
# tar -xf firmware.tar.gz -C firmware<br />
# rm firmware.tar.gz<br />
</pre><br />
<br />
info [http://www.debian.org/releases/stable/i386/ch06s04.html.it]<br />
<br />
=== Repository locale ===<br />
<br />
{{ Warningbox | Questa sezione è OPZIONALE }}<br />
<br />
Si costruisce un trivial repository di pacchetti non compresi nel d-i. <br />
<br />
<pre><br />
# cd /media/disk<br />
# mkdir -p local-repository/binary<br />
# cd local-repository/binary<br />
</pre><br />
È sconsigliato crearsi un pool di pacchetti scaricandoli con aptitude o un altro gestore in quanto facendo il download del singolo pacchetto non si risolvono eventuali problemi di dipendenze.<br />
<br />
{{Box | Nota |Durante la creazione di una Debian live con live-helper, tutti i pacchetti scaricati vengono messi in cache, questi costituiscono <br />
un pool ideale per un repository locale da mettere su USB [http://guide.debianizzati.org/index.php/DebianLive_su_usb_installabile]}}<br />
<br />
A titolo di esempio, per avere ''mc'' occorre scaricare anche le sue dipendenze<br />
<br />
<pre><br />
# aptitude download mc libpcre3 libgpm2 libglib2.0-data libglib2.0-0 bzip2 arj unzip lynx lynx-cur dbview<br />
</pre><br />
<br />
Creazione degli indici:<br />
<br />
<pre><br />
# cd ..<br />
# dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz<br />
</pre><br />
<br />
Il repository locale non verrà visto dal d-i, solo in un secondo momento si potrà accedervi, dopo averlo aggiunto in <code>/etc/apt/sources.list</code>.<br />
<br />
Il file <code>readme.txt</code> contiene la linea (sostituire MOUNT-POINT-USB con il path dove viene montato il dispositivo USB) da aggiungere alla lista dei repository, come promemoria per quanto detto sopra. <br />
<br />
<pre><br />
# echo "deb file:///MOUNT-POINT-USB/local-repository binary/" > readme.txt<br />
</pre><br />
<br />
trivial repository [http://www.debian.org/doc/manuals/repository-howto/repository-howto.en.html]<br />
<br />
==Metodo 3==<br />
===Requisiti===<br />
Prima di intraprendere i successivi passi, accertarsi che le seguenti condizioni siano soddisfatte:<br />
* Sistema avviabile attraverso un dispositivo USB;<br />
* Pendrive con una capienza di almeno 256 MByte;<br />
* Pendrive formattata FAT32;<br />
* Disponibilità di un sistema GNU/Linux;<br />
<br />
===File necessari===<br />
Per installare una netinst serve aver scaricato un file immagine e la iso netinstall. Entrambi devono essere compatibili con l'architettura del proprio sistema (i386, amd64 etc.)<br />
; Lenny (i386):[http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz boot.img.gz]<br/> [http://cdimage.debian.org/cdimage/archive/5.0.10/i386/iso-cd/debian-5010-i386-netinst.iso netinst.iso]<br />
; Lenny (amd64):[http://ftp.nl.debian.org/debian/dists/lenny/main/installer-amd64/current/images/hd-media/boot.img.gz boot.img.gz]<br/> [http://cdimage.debian.org/cdimage/archive/5.0.10/amd64/iso-cd/debian-5010-amd64-netinst.iso netinst.iso]<br />
; Squeeze (i386):[http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-i386/current/images/hd-media/boot.img.gz boot.img.gz]<br/> [http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-6.0.5-i386-netinst.iso netinst.iso]<br />
; Squeeze (amd64):[http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/boot.img.gz boot.img.gz]<br/> [http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-6.0.5-amd64-netinst.iso netinst.iso]<br />
<br />
===Installazione===<br />
Dopo aver eseguito il download del file immagine e della iso netinstall, accertatevi che il dispositivo USB '''non''' sia montato, quindi eseguire:<br />
<pre><br />
# zcat boot.img.gz > /dev/sdb<br />
</pre><br />
se la pendrive è stata riconosciuta come "sdb", altrimenti inserire il device appropriato.<br/><br />
{{Warningbox | Accertatevi di inserire il device corretto poiché il precedente comando cancella ogni dato presente sul dispositivo.<br/><br />
Utilizzare il comando:<br />
<pre><br />
# fdisk -l <br />
</pre><br />
per dissipare eventuali dubbi.}}<br />
<br />
Per finire non resta altro che copiare la iso netinstall sulla pendrive.<br />
<br />
{{Autori<br />
|Autore = [[Utente:Fr4nc3sc0|Fr4nc3sc0]]<br />
}}<br />
<br />
<br />
[[Categoria:Installazione]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Fluxbox,_un_Window_Manager_per_Computer_con_poche_risorse&diff=28877Fluxbox, un Window Manager per Computer con poche risorse2012-05-19T18:57:21Z<p>Skizzhg: una rinfrescatina</p>
<hr />
<div>{{Versioni compatibili}}<br />
<br />
==Introduzione==<br />
Questa guida mostra come installare il Window Manager Fluxbox su un PC in cui sia stata fatta un'installazione base di Debian, senza server grafico X. Fluxbox è un Window Manager leggero, che consuma poche risorse di sistema e che può dare nuova vita a macchine obsolete<br />
<br />
==Installazione==<br />
Come al solito in Debian l'installazione consta di pochi comandi:<br />
<pre><br />
# aptitude install xserver-xorg fluxbox<br />
</pre><br />
<br />
==Programmi utili==<br />
Sebbene Fluxbox e il nostro server grafico X siano già funzionanti, abbiamo bisogno ancora di alcuni programmi, prima di poter utilizzare con profitto il nostro nuovo Window Manager:<br />
<br />
# aptitude install xterm feh<br />
<br />
Per apprendere come aggiungere programmi al menù di Fluxbox vedere la sezione apposita più avanti.<br />
<br />
==Avvio di Fluxbox==<br />
Notare che in questa installazione di Fluxbox non è stato installato alcun Login Manager; pertanto sarà necessario effettuare il login in maniera testuale da shell e poi avviare Fluxbox.<br/><br />
<br />
Prima di poterlo fare, però, è necessario creare il file di avvio per <code>startx</code>:<br />
<br />
$ echo "exec startfluxbox" > ~/.xinitrc<br />
<br />
Se preferite, è possibile installare un Login Manager come <code>xdm, gdm, kdm</code>.<br/><br />
<br />
L'avvio di fluxbox dal gestore di login avviene andando a leggere il file '''<code>/usr/share/xsessions/fluxbox.desktop</code>''' il cui contenuto è il seguente:<br />
<br />
<pre><br />
[Desktop Entry]<br />
Name=Fluxbox<br />
Comment=Highly configurable and low resource X11 Window manager<br />
Exec=/usr/bin/startfluxbox<br />
Terminal=false<br />
TryExec=/usr/bin/startfluxbox<br />
Type=Application<br />
<br />
[X-Window Manager]<br />
SessionManaged=true<br />
</pre><br />
<br />
==Abbellimento del Desktop==<br />
Prima di installare altre applicazioni ci dedicheremo a rendere più gradevole l'ambiente di lavoro, installando:<br />
<br />
# apt-get install conky<br />
<br />
Per fare in modo che conky appaia sul desktop di Fluxbox è necessario creare il suo file di configurazione:<br />
<br />
$ conky -C > $HOME/.conkyrc<br />
<br />
modificando poi al suo interno la linea '''own_window yes''' in '''own_window no'''<br />
<br />
Per avere conky che si avvia insieme a Fluxbox modificate invece il file:<br />
<br />
$ nano $HOME/.fluxbox/startup<br />
<br />
aggiungendo la linea<br />
<br />
conky &<br />
<br />
'''prima''' della linea<br />
<br />
exec /usr/bin/fluxbox<br />
<br />
che deve essere sempre l'ultima.<br />
<br />
==Software per vecchi Laptop==<br />
Installiamo adesso alcuni software leggeri, adatti per notebook non proprio giovanissimi:<br />
<br />
# aptitude install wifi-radar cpufreqd<br />
<br />
Quindi avviamo il demone appena installato:<br />
<br />
# /etc/init.d/cpufreqd start<br />
<br />
Se il demone non partisse, occorre caricare il corretto modulo:<br />
<br />
* AMD Sempron/Athlon/MP ( K7 )<br />
<br />
# modprobe powernow-k7<br />
<br />
* AMD Duron/Sempron/Athlon/Opteron 64 ( K8 )<br />
<br />
# modprobe powernow-k8<br />
<br />
* Intel Core Duo and Intel Pentium M<br />
<br />
# modprobe speedstep-centrino<br />
<br />
* Intel Pentium IV<br />
<br />
# modprobe acpi-cpufreq<br />
<br />
==Software applicativo==<br />
# aptitude install aptitude install iceweasel icedove centericq htop vim gftp abiword gnumeric<br />
<br />
==Dove trovare i temi GTK==<br />
È possibile ottenere i temi GTK da [http://xfce-look.org/index.php?xcontentmode=100 xfce-look.org],<br />
[http://gnome-look.org/index.php?xcontentmode=100 gnome-look.org], [http://browse.deviantart.com/?qh=&section=&q=GTK+theme deviantart.com]<br />
<br />
Per installare i temi c'è solo bisogno di decomprimere questi file in <code>~/.themes</code>. Quindi:<br />
<br />
<pre><br />
$ mkdir ~/.themes<br />
$ cd ~/.themes<br />
$ tar -zxvf theme-name-here.tar.gz<br />
$ tar -jxvf theme-name-here.tar.bz2<br />
</pre><br />
<br />
Alcuni temi sono installabili anche via <code>apt-get</code>:<br />
<br />
# apt-get install gtk2-engines-pixbuf<br />
<br />
oppure<br />
<br />
# apt-get install gtk2-engines-*<br />
<br />
Per utilizzare i temi scaricati, basta installare:<br />
<br />
# apt-get install gtk-theme-switch<br />
<br />
oppure<br />
<br />
# apt-get install gtk-chtheme<br />
<br />
==Il menù di Fluxbox==<br />
Il file di configurazione del menù di fluxbox di default è <code>~/.fluxbox/menu</code>. <br/><br />
<br />
Il file ha una struttura molto elementare. Di seguito è riportato uno stralcio del file di configurazione del menù di default su debian (/etc/X11/fluxbox/fluxbox-menu):<br />
<br />
<pre><br />
[begin] (Fluxbox)<br />
# Automatically generated file. Do not edit (see /usr/share/doc/menu/html/index.html)<br />
[submenu] (Aiuto) {}<br />
[exec] (Debian Reference) {/usr/bin/debian-reference} <br />
[exec] (Info) { x-terminal-emulator -T "Info" -e info} <br />
[exec] (Xman) {xman} <br />
[end]<br />
[submenu] (Applicazioni) {}<br />
[submenu] (Editor) {}<br />
[exec] (Nano) { x-terminal-emulator -T "Nano" -e /bin/nano} <br />
[end]<br />
[submenu] (Emulatori di terminale) {}<br />
[exec] (XTerm) {xterm} <br />
[exec] (XTerm (Unicode\)) {uxterm} <br />
[end]<br />
[submenu] (Grafica) {}<br />
[exec] (X Window Snapshot) {xwd | xwud} <br />
[end]<br />
[submenu] (Navigazione web) {}<br />
[exec] (w3m) { x-terminal-emulator -T "w3m" -e /usr/bin/w3m /usr/share/doc/w3m/MANUAL.html} <br />
[end]<br />
[end] <br />
</pre><br />
<br />
Le principali caratteristiche di questo file di testo sono:<br />
# Ogni riga ha una sintassi molto intuitiva e semplice;<br />
# L'indentatura del codice permette di "immaginarsi" il risultato finale.<br />
# Ogni riga ha una sintassi di questo tipo:<br />
<br />
<pre><br />
[tag] (label o nome del file) {comando o nomefile}<br />
</pre><br />
<br />
L'indentatura del file è una caratteristica molto importante che semplfica l'operazione di generazione del menù e della sua successiva modifica, perciò è bene mantenere questa struttura gerarchica ogni volta che si mette mano al menù.<br />
<br />
===Sintassi generica delle righe del file ===<br />
Ciascuna riga del file di configurazione del menù di fluxbox ha una struttura di questo tipo:<br />
[tag] (label o nome del file) {comando o nomefile}<br />
<br />
Perciò a ciascuna coppia di parentesi corrisponde un significato ben preciso e questo aiuta molto a far risparmiare tempo in fase di modifica del file. <br/><br />
<br />
Il menù inizia sempre con una riga di codice simile alla seguente:<br />
[begin] (Titolo_menù)<br />
<br />
il tag <code>[begin]</code> deve essere presente nel file, altrimenti fluxbox cerca il file di configurazione di default del sistema, mentre (Titolo_menù) può essere omesso. Titolo_menù è il testo che verrà visualizzato in cima al menù di fluxbox. <br/><br />
<br />
Per la chiusura del menù viene utilizzata il tag <code>[end]</code>. Questo può essere utilizzato sia per chiudere un menù che un sottomenù. In ogni menù deve essere presente un tag <code>[end]</code> per ogni tag <code>[submenu]</code> più uno che comunque è presente e che corrisponde al tag <code>[begin]</code>. Quindi un menù ha la seguente struttura:<br />
<pre><br />
[begin] (Titolo Menu)<br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
Per creare un sottomenù nel menù principale si usa il tag <code>[submenu]</code>. Ogni sottomenù viene chiuso dal tag <code>[end]</code>. Il tag <code>[submenu]</code> deve essere seguito dagli attributi (label) e . Il secondo attributo è opzionale e se omesso viene assunto uguale a (label). Riassumendo un sottomenù avrà il seguente aspetto:<br />
<pre><br />
[submenu] (label) <br />
...<br />
...<br />
...<br />
[end]<br />
</pre><br />
<br />
dove tra <code>[submenu]</code> e <code>[end]</code> vengono incluse tutte le voci del menù. <br/><br />
<br />
Dal momento che fluxbox legge i menù in maniera ricorsiva non c'è limite al numero di sottomenù che possono essere annidati, vi consiglio però di non esagerare per non complicare troppo la ricerca di una applicazione.<br />
<br />
===Elemento del menù (Eseguibili)===<br />
Per popolare ciascun menù di voci che corrispondono all'esecuzione di un programma si utilizza la seguente istruzione:<br />
[exec] (label) {command}<br />
<br />
A questa riga viene associata nel menù una voce che viene chiamata "label" e che esegue il comando "command".<br />
<br />
===Elemento del menù (file e directory)===<br />
Per inserire il collegamento ad un file o ad una directory all'interno del menù di fluxbox si usa la seguente riga:<br />
[include] (nome_file_o_dir)<br />
<br />
===Separatore===<br />
A volte, per aumentare la chiarezza del menù può essere utile inserire un separatore. Questo può essere aggiunto inserendo una riga contenente l'istruzione <code>[separator]</code>:<br />
[separator]<br />
<br />
===Istruzioni aggiuntive===<br />
Fluxbox mette a disposizione una serie di istruzioni addizionali per personalizzare ulteriormente il menù. Le principali sono:<br />
* Inserimento di una voce che permette la chiusura e l'uscita da fluxbox<br />
[exit] (label)<br />
<br />
* Inserimento di una voce "estetica nel menù". In altre parole: inserimento di una voce che se selezionata non comporta l'esecuzione di nessun comando. La sintassi è:<br />
[nop] (label)<br />
<br />
se label viene omessa di default viene inserita una voce vuota.<br />
<br />
* Rilettura di tutti i file di configurazione di fluxbox<br />
[reconfig] (label)<br />
<br />
Questa voce è utile per creare nuovi temi e stili e non dover rilanciare fluxbox tutte le volte che è necessario testare il tema.<br />
* Riavvio del solo eseguibile di fluxbox, X e gli eventuali programmi rimarranno in esecuzione<br />
[restart] (label) {command}<br />
<br />
Verrà creata una voce nel menù con il nome "label" e una volta selezionata fluxbox verrà arrestato e all'uscita da fluxbox verrà eseguito il comando "command". Comunemente il comando fornito è quello necessario ad avviare un altro windows manager. Il parametro "command" è opzionale.<br />
* Voce per la configurazione di fluxbox<br />
[config] (label)<br />
<br />
Viene inserita una voce nel menù chiamata "label" che permette di accedere a numerose opzioni di configurazione riguardanti il comportamento delle finestre.<br />
* Directory dei wallpaper<br />
<br />
È possibile inserire una voce all'interno del menù che permetta di cambiare rapidamente lo sfondo di fluxbox attraverso la seguente riga:<br />
[wallpapers] (directory) {command}<br />
<br />
Cliccando su una immagine questa viene immediatamente impostata come sfondo. Ovviamente <code>directory</code> è la directory contenente le immagini.<br />
<br />
==Windowmenu==<br />
Windowmenu è il menù che si ottiene con un click destro del mouse sulla barra del titolo di una finestra, premere il tasto menù sulla barra del titolo, utilizzare il comando '':WindowMenu'' tramite tastiera o anche dal menù delle aree di lavoro. Di default ha opzioni per massimizzare, minimizzare, nascondere la finestra ecc, impostare le finestre su diversi livelli o inviare ad aree di lavoro e ricordare le opzioni delle finestre.<br />
<br />
===Modificare il menù===<br />
Windowmenu è come il rootmenu, eccetto alcune voci speciali che il menù normale non ha, il file di configurazione è ~/.fluxbox/windowmenu.<br />
<br />
Il menù dovrebbe iniziare con [begin] e finire con [end].<br />
<br />
Si possono usare i normali elementi del menù oppure quelli speciali della lista sottostante. Notare che (label) è facoltativo, senza di esso sarà utilizzato quello di default:<br />
<br />
[shade] (label)<br />
Questa opzione riduce la finestra alla sola barra del titolo "arrotolandola".<br />
<br />
Lo stesso effetto cliccando due volte sul titolo, scegliendo "Riduci a barra", utilizzando una scorciatoia da tastiera o la rotellina del mouse (comandi :Shade :ShadeOn :ShadeOff).<br />
<br />
[close] (label)<br />
Chiude la finestra. Proprio come premendo il tasto X nell'angolo.<br />
<br />
[stick] (label)<br />
Rende la finestra appiccicosa, ovvero visibile su tutte le aree di lavoro.<br />
<br />
[maximize] (label)<br />
Massimizza e ripristina la finestra.<br />
<br />
[iconify] (label)<br />
Minimizza (riduce a icona) la finestra.<br />
<br />
[raise] (label)<br />
Solleva la finestra al livello superiore portandola quindi in primo piano.<br />
<br />
[lower] (label)<br />
Porta la finestra al livello inferiore, dietro tutte le altre.<br />
<br />
[sendto] (label)<br />
Mostra il menù "Invia a..." che permette l'invio delle finestre in un'altra area di lavoro.<br />
<br />
[layer] (label)<br />
Mostra il menù "Livello..." che permette all'utente di cambiare facilmente il livello della finestra.<br />
<br />
[extramenus]<br />
Mostra il menù "Ricorda..." per salvare alcune impostazioni della finestra nel file ~/.fluxbox/apps.<br />
<br />
[alpha] (label)<br />
Un sottomenù contenente varie opzioni per la trasparenza della finestra.<br />
<br />
[separator]<br />
Linea di separazione orizzontale, non fa altro che creare una linea divisoria.<br />
<br />
===Esempi===<br />
Questo dovrebbe creare un menù simile a quello di default:<br />
<br />
# ~./fluxbox/windowmenu<br />
[begin]<br />
[shade] (Shade)<br />
[stick] (Stick)<br />
[maximize]<br />
[iconify] (Iconify)<br />
[raise]<br />
[lower]<br />
[sendto]<br />
[layer]<br />
[extramenus]<br />
[separator]<br />
[close] (Close)<br />
[end]<br />
<br />
Questo è un pò differente:<br />
<br />
[begin]<br />
[exec] (terminal) {xterm}<br />
[maximize] (maximize)<br />
[iconify] (minimize)<br />
[submenu] (advanced)<br />
[layer] (layer)<br />
[extramenus] (remember)<br />
[sendto] (send to)<br />
[end]<br />
[separator]<br />
[close] (close)<br />
[end]<br />
<br />
==Applicazioni e accessori aggiuntivi==<br />
Fluxbox non integra un file manager, un emulatore di terminale o altro, perciò si può installare praticamente [http://fluxbox-wiki.org/index.php?title=FAQ#Apps.2C_Window_Managers.2C_Desktop_Managers tutto quel che si vuole].<br />
<br />
--[[Utente:Ferdybassi|Ferdybassi]] 18:11, 10 mar 2010 (CET)<br />
<br />
----<br />
<br />
[[Categoria:Fluxbox]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Repository_non_ufficiali&diff=28876Repository non ufficiali2012-05-19T17:20:16Z<p>Skizzhg: </p>
<hr />
<div>{{Repository<br />
|precedente_rep=Il repository LinuxMint<br />
|successivo_rep=Immagini iso Debian da usare come repository<br />
}}<br />
{{Versioni compatibili}}<br />
__TOC__<br />
== Introduzione ==<br />
<br />
Questa pagina ha lo scopo di raccogliere una lista dei [[repository]] non ufficiali più frequentemente usati dagli utenti Debian.<br />
<br />
Un elenco più completo è presente sul sito: http://www.apt-get.org.<br />
<br />
== Marillat Repository ==<br />
* '''Home page''': http://www.deb-multimedia.org/<br />
* '''Release Supportate''': Debian oldstable, stable, testing, unstable, experimental<br />
* '''Architetture''': alpha, amd64, armel, hppa, i386, ia64, mipsel, powerpc, sparc<br />
<br />
<br />
Repository principali (la sezione ''contrib'' non esiste e la ''non-free'' è a discrezione dell'utente):<br />
<pre><br />
## Binari per Squeeze (stable). Architetture: alpha, amd64, armel, hppa, i386, ia64, mipsel, powerpc, sparc<br />
deb http://www.deb-multimedia.org squeeze main<br />
deb http://www.deb-multimedia.org squeeze-backports main<br />
<br />
## Binari per Wheezy (testing). Architetture: amd64, armel, i386, ia64, mipsel, powerpc, sparc<br />
deb http://www.deb-multimedia.org wheezy main<br />
<br />
## Binari per Sid (unstable). Architetture: alpha, amd64, armel, hppa, i386, ia64, mipsel, powerpc, sparc<br />
deb http://www.deb-multimedia.org sid main<br />
<br />
## Binari per experimental. Architetture: amd64, i386, powerpc<br />
deb http://www.deb-multimedia.org experimental main<br />
</pre><br />
<br />
Per installare la chiave GPG per l'autenticazione dei pacchetti installare il pacchetto <code>'''deb-multimedia-keyring'''</code>.<br />
<pre># apt-get install deb-multimedia-keyring</pre><br />
Sorgenti per i repository Marillat:<br />
<pre> deb-src http://www.deb-multimedia.org sid main </pre><br />
<!--<br />
: ''La '''chiave GPG''' dei precedenti repository si può importare nel seguente modo (vedi [http://www.deb-multimedia.org/faq.html]):''<br />
# gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907<br />
# gpg --armor --export 1F41B907 | apt-key add -<br />
<br />
<br />
Pacchetti PPC per Sid, di ''Guido Guenther'' (vedi [http://honk.sigxcpu.org/linux-ppc/debian/mplayer/ unstable-ppc]):<br />
<br />
deb http://honk.sigxcpu.org/linux-ppc/debian/ mplayer/<br />
#deb-src http://honk.sigxcpu.org/linux-ppc/debian/ mplayer/<br />
<br />
: ''Trovate [http://honk.sigxcpu.org/misc/sigxcpu-archive-key.gpg qui] la '''chiave gpg''' per il precedente repository.''<br />
<br />
<br />
Pacchetti AMD-64 per Sid:<br />
<br />
## Entrambe le linee sono obbligatorie<br />
deb http://spello.sscnet.ucla.edu/marillat/ sid main<br />
deb http://www.debian-multimedia.org sid main<br />
<br />
<br />
Pacchetti AMD-64 per Sarge (vedi [http://spello.sscnet.ucla.edu/marillat/dists/sarge/main/binary-amd64/ stable-amd64]):<br />
<br />
## Entrambe le linee sono obbligatorie<br />
deb http://spello.sscnet.ucla.edu/marillat/ sarge main<br />
deb http://www.debian-multimedia.org sarge main<br />
--><br />
<br />
<!--<br />
== MaXeR Repository ==<br />
* '''Home page''': http://repos.knio.it<br />
* '''Release Supportate:''' Debian Stable, Testing, Unstable; Ubuntu Breezy<br />
* '''Architetture''': i386<br />
* '''Pacchetti importanti:''': k9copy, vamps, qvamps, keep, krecipes, kreetingkard, kleansweep<br />
<br />
sources.list:<br />
<pre><br />
deb http://repos.knio.it/ stable main contrib non-free<br />
deb-src http://repos.knio.it/ stable main contrib non-free<br />
<br />
deb http://repos.knio.it/ testing main contrib non-free<br />
deb-src http://repos.knio.it/ testing main contrib non-free<br />
<br />
deb http://repos.knio.it/ unstable main contrib non-free<br />
deb-src http://repos.knio.it/ unstable main contrib non-free<br />
<br />
deb http://repos.knio.it/ breezy main contrib non-free<br />
deb-src http://repos.knio.it/ breezy main contrib non-free<br />
</pre><br />
--><br />
<br />
== Wine HQ ==<br />
* '''Home page''': http://www.winehq.org/<br />
* '''Download page''': http://www.winehq.org/site/download<br />
* '''Release Supportate:''' Debian Lenny, Squeeze, Sid<br />
* '''Architetture''': i386, amd64<br />
<br />
<pre>deb http://www.lamaresh.net/apt lenny main<br />
deb http://www.lamaresh.net/apt squeeze main<br />
deb http://www.lamaresh.net/apt sid main</pre><br />
<br />
: ''Per installare la chiave GPG per l'autenticazione dei pacchetti usare il comando: <br />
:'''<pre>wget -O - http://www.lamaresh.net/apt/key.gpg | apt-key add -</pre>'''<br />
<br />
== Iceweasel ==<br />
Il Mozilla debian Team mette a disposizione questo repository semi-ufficiale per permettere agli utenti Debian di installare Iceweasel 4 (o superiore) su Squeeze, Wheezy o Sid.<br/><br />
L'indirizzo relativo a questo progetto, con relative e dettagliate istruzioni su cosa inserire in <code>/etc/apt/sources.list</code> e su come installare le chiavi per l'autenticazione dei pacchetti, è http://mozilla.debian.net/<br />
<!-- == Os-works ==<br />
<br />
TODO<br />
<br />
== Skype ==<br />
* '''Home page''': http://www.skype.com<br />
* '''Release Supportate:''' Debian Stable<br />
* '''Architetture''': i386<br />
<br />
<pre><br />
deb http://download.skype.com/linux/repos/debian/ stable non-free<br />
</pre> --><br />
<br />
[[Categoria:Repository non ufficiali]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=VimCS:_Editing&diff=27170VimCS: Editing2012-01-13T23:49:23Z<p>Skizzhg: </p>
<hr />
<div>{{Template:VimCS}}<br />
== Sostituzione ==<br />
entra in modalità sostituzione - '''R''' <br/><br />
sostituisce singolo carattere e torna in modalità comando - '''r''' (seguito dal carattere)<br />
<br />
maiuscole in minuscole e viceversa - '''~''' <br/><br />
tutta la riga minuscola - '''guu''' (oppure '''vu''') <br/><br />
solo una parola minuscola - '''vEu''' <br/><br />
tutta la riga maiuscola - '''gUU''' (oppure '''VU''') <br/><br />
solo una parola maiuscola - '''vEU''' <br/><br />
inverte maiuscole e minuscole di una parola - '''vE~''' <br/><br />
inverte maiuscole e minuscole di una riga - '''g~~''' <br/><br />
intero file minuscolo - '''ggguG''' <br/><br />
intero file maiuscolo - '''gggUG'''<br />
<br />
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo''' <br/><br />
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/><br />
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/><br />
sostituzione in tutto il documento - ''':%s/vecchio/nuovo/g''' <br/><br />
<br />
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''<br />
<br />
elimina le terminazioni di riga in stile dos, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/><br />
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>ctrl-v</code> e <code>ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/><br />
: ''':%s/^M//g'''<br />
<br />
<br />
dato un file con tante righe nella forma di ''foo bar baz http://bla'',<br />
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:<br />
: ''':%s/^.\{-}\zehttp//g'''<br />
<br />
<br />
data una riga nella forma '11. foo' sostituisce il punto con un tab<br />
: ''':s/\(^[0-9]\+\)\. /\1\t/'''<br />
<br />
<br />
cancella spazi non voluti a fine riga (trailing whitespace); <br />
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:<br />
: ''':%s/\s\+$//'''<br />
<br />
cerca soltanto:<br />
: '''/\s\+$'''<br />
<br />
<br />
ordina testo alfabeticamente - ''':sort'''<br />
<br />
<br />
== Selezione e inserimento ==<br />
Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre. <br/><br />
Come accennato all'inizio, la modalità visuale seleziona il testo. <br />
<br />
inizia selezione - '''v''' <br/><br />
seleziona intera riga - '''V''' <br/><br />
seleziona blocco (salta righe vuote) - '''ctrl-v''' <br/><br />
seleziona tutto - '''ggVG''' <br/><br />
<br />
<br />
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se<br />
selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre<br />
sopra, basterà premere 'o' e il cursore si sposterà alla prima riga della selezione corrente quindi<br />
muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/><br />
'''Vjok'''<br />
<br />
<br />
Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio. <br/><br />
Ecco ad esempio come copiare del testo salvandolo in altro file: <br/><br />
'''v''' <br/><br />
'''<nowiki>:</nowiki>'<,'>w nome_file'''<br />
<br />
Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il<br />
cursore: <br/><br />
'''<nowiki>:</nowiki>r nome_file'''<br />
<br />
<br />
Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una shell in una porzione di finestra e lo esegue: <br/><br />
'''<nowiki>:</nowiki>!ls'''<br />
<br />
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/><br />
<nowiki>:</nowiki>r !ls<br />
<br />
In caso servisse una shell con piena funzionalità: <br/><br />
<nowiki>:</nowiki>shell<br />
<br />
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)<br />
<br />
<br />
== Indentazione ==<br />
inserisce un'indentazione su riga - ''':>''' <br/><br />
inserisce due indentazioni su riga - ''':>>''' <br/><br />
toglie un'indentazione su riga - :<''' <br/><br />
toglie due indentazioni su riga - ''':<<''' <br/><br />
inserisce un'indentazione su 3 righe - ''':>3''' <br/><br />
inserisce un'indentazione sulla terza riga - ''':3>''' <br/><br />
<br />
scorciatoie: <br/><br />
'''>>''' (inserisce) <br/><br />
'''<<''' (toglie) <br/><br />
'''=''' (toglie)<br />
<br />
<br />
== Copia, taglia, incolla, cancella ==<br />
Questo funziona solo all'interno della sessione corrente di Vim. <br/><br />
copia testo selezionato - '''y''' <br/><br />
copia prima parola di una riga - '''yw''' <br/><br />
copia intera riga - '''yy'''<br />
<br />
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/><br />
<br />
mette la riga sottostante in coda alla corrente - '''J'''<br />
<br />
<br />
cancella carattere - '''x''' <br/><br />
cancella tre caratteri - '''3x''' <br/><br />
cancella dal cursore all'inizio della parola seguente - '''dw''' <br/><br />
cancella dal cursore alla fine della parola corrente - '''de''' <br/><br />
cancella dal cursore all'inizio della parola corrente - '''db''' <br/><br />
cancella la parola che si trova sotto al cursore - '''daw''' <br/><br />
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - '''caw''' <br/><br />
cancella dal cursore alla fine della riga - '''D''' <br/><br />
cancella dal cursore alla fine della riga - '''d$''' <br/><br />
cancella intera riga compreso spazio occupato - '''dd''' <br/><br />
cancella tre righe - '''3dd''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - '''df''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - '''dt''' (seguito dal carattere) <br/><br />
cancella tutte le righe dello schermo sotto il cursore - '''dL''' <br/><br />
cancella dalla riga in cui si trova il cursore alla fine del documento - '''dG''' <br/><br />
cancella dalla riga in cui si trova il cursore all'inizio del documento - '''dg''' <br/><br />
cancella intero documento - '''ggdG''' <br/><br />
cancella parola e passa alla modalità inserimento - '''cw''' <br/><br />
cancella riga e passa alla modalità inserimento - '''cc''' <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla<br />
modalità inserimento - '''cf''' (seguito dal carattere) <br/><br />
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla<br />
modalità inserimento - '''ct''' (seguito dal carattere)<br />
<br />
cancella ogni riga che inizia con una certa parola - ''':g/^parola/d''' <br/><br />
cancella ogni riga che termina con una certa parola - ''':g/parola$/d''' <br/><br />
cancella ogni riga che contiene una certa parola - ''':g/parola/d''' <br/><br />
cancella le righe commentate - ''':g/^#/d''' <br/><br />
cancella le righe vuote - ''':v/\S/d'''<br />
<br />
inserisce commento (#) ad inizio riga - ''':s/^/#/'''<br />
<br />
== Annulla, ripeti, cronologia e ricerca ==<br />
Per annullare o ripetere una modifica si userà: <br/><br />
undo - '''u''' <br/><br />
undo di una riga - '''U'''<br />
<br />
redo - '''ctrl-r'''<br />
<br />
<br />
Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po'<br />
le ripetizioni si usa il punto: <br/><br />
'''.'''<br />
<br />
<br />
Per la modalità comando: <br/><br />
ripete ultima operazione - '''@:''' <br/><br />
mostra la history dei comandi - ''':history''' <br/><br />
mostra la history con comandi selezionabili - '''q:''' <br/><br />
mostra la history di ricerca con comandi selezionabili - '''q/''' (successivo) <br/><br />
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/><br />
<br />
mostra la lista dei comandi interni che iniziano per a - ''':a ctrl-d'''<br />
<br />
La ricerca funziona come per tante altre applicazioni: <br/><br />
cerca parola in avanti - '''/parola''' <br/><br />
ripete ricerca in avanti - '''n''' <br/><br />
cerca indietro - '''N'''<br />
<br />
cerca parola indietro - '''?parola''' <br/><br />
ripete ricerca indietro - '''n''' <br/><br />
cerca in avanti - '''N'''<br />
<br />
<br />
== Autocompletamento ==<br />
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate<br />
precedentemente. <br/><br />
'''ctrl-x''' <br/><br />
scorrimento tra i risultati - '''ctrl-n''' / '''ctrl-p''' <br/><br />
annulla - '''ctrl-e''' <br/><br />
accetta parola selezionata - '''ctrl-y''' (oppure Enter)<br />
<br />
<br />
== Clipboard ==<br />
Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono<br />
utilizzate. <br/><br />
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1<br />
(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).<br />
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie ctrl-c/ctrl-x/ctrl-v. <br/><br />
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]<br />
<br />
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.<br />
: PRIMARY: <br/><br />
copia - '''"*y''' <br/><br />
taglia - '''"*x''' <br/><br />
incolla - '''"*p'''<br />
<br />
:CLIPBOARD: <br/><br />
copia - '''"+y''' <br/><br />
taglia - '''"+x''' <br/><br />
incolla - '''"+p'''<br />
<br />
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/><br />
'''<nowiki>:</nowiki>version'''<br />
<br />
cercando <code>clipboard</code> e <code>xterm_clipboard</code> nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà '''1''' se presente o '''0''' se non lo è: <br/><br />
'''<nowiki>:</nowiki>echo has('clipboard')''' <br/><br />
'''<nowiki>:</nowiki>echo has('xterm_clipboard')'''<br />
<br />
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/><br />
* vim-gnome<br />
* vim-gtk<br />
* vim-athena</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Old:Installare_Adobe_Flash_Player&diff=27164Old:Installare Adobe Flash Player2012-01-11T01:17:06Z<p>Skizzhg: proofreading</p>
<hr />
<div>{{Versioni compatibili}}<br><br><br><br />
__TOC__<br />
<br />
{| style="padding:10px;margin:auto;" border="1"<br />
|'''ATTENZIONE''': questa guida tratta <font style="color:red;"><u>software proprietario</u></font> non consono ai principi del Free-Software. Installalo a tuo rischio e pericolo<br />
|}<br />
== Copyright ==<br />
Il plugin Adobe Flash Player è un software closed-source. All'atto della sua installazione compare questo avvertimento:<br />
<pre><br />
WARNING: Installing this Debian package causes the Adobe Flash Player to be downloaded from www.adobe.com.<br />
The End User License Agreement of the Adobe Flash Player is available at www.adobe.com.<br />
</pre><br />
<br />
== Installazione da repository==<br />
Per installare Adobe Flash Player 10 su Lenny è necessario configurare il repository Backports.<br />
<br />
Da Squeeze e successive sia a 32 che 64 bit è sufficiente abilitare la sezione '''contrib''' del repository ufficiale Debian. Quindi si lancino i comandi:<br />
<pre><br />
# apt-get update<br />
# apt-get install flashplugin-nonfree<br />
</pre><br />
''flashplugin-nonfree-extrasound'' è opzionale e non indispensabile in certi casi, non sempre presente nel repository.<br />
<br />
<br />
=== Aggiornamento ===<br />
Il pacchetto '''flashplugin-nonfree''' si aggiorna automaticamente a seguito di un update/upgrade del sistema. Per aggiornare l'intero software Adobe Flash Player si esegua come root il comando:<br />
<pre><br />
# update-flashplugin-nonfree --install<br />
</pre><br />
<br />
== Installazione manuale ==<br />
Per l'installazione manuale dell'ultima versione, occorre scaricare il ''file .tar.gz per Linux'' dalla pagina:<br />
<br />
http://get.adobe.com/it/flashplayer/<br />
<br />
ed estrarre il file ''libflashplayer.so'' all'interno della directory dei plugin.<br />
<br />
<b>Nota:</b> la directory dei plugin varia a seconda dei browser o delle direttive che indichiamo nel browser per la ricerca dei plugin. Se non esiste va creata.<br />
<br />
Qui sotto riporto alcune delle posizioni dei browser più comuni, sempre che al browser non sia indicata una direttiva specifica.<br />
<pre><br />
/usr/lib/mozilla/plugins<br />
/usr/lib/firefox/plugins<br />
/usr/lib/iceweasel/plugins<br />
/usr/lib/opera/plugins<br />
etc..........<br />
</pre><br />
<br />
<b>Tips:</b> <br> <br />
- per comodità è possibile estrarre il file ''libflashplayer.so'' in una directory a nostro piacimento e creare da lì dei link simbolici alle directory dei plugins;<br />
<br />
- se non si ha un sistema multiutenza si può escegliere di creare la directory <code>~/.mozilla/plugins/</code> e inserirvi quindi il file ''libflashplayer.so''.<br />
<br />
<br />
=== Aggiornamento ===<br />
Per aggiornare la versione del player, occorre scaricare la nuova versione dal sito ufficiale ed estrarre il nuovo ''libflashplayer.so'' dove indicato in precedenza.<br />
<br />
== Test ==<br />
Per verificare il corretto funzionamento, visitare la pagina: http://www.adobe.com/software/flash/about/<br />
<br><br />
se il plugin è stato installato correttamente, avrete modo di verificare anche la versione installata.<br />
<br />
<br />
== Pulizia cache ==<br />
Il player di flash lascia traccia della nostra navigazione, per maggiori info questo è il [http://forum.debianizzati.org/viewtopic.php?f=7&t=41290&start=0: Topic] di riferimento .<br />
<br />
<br />
Per maggiore sicurezza è consigliabile creare ed eseguire periodicamente uno script che chiameremo '''cleanflash.sh''', e al cui interno inseriremo:<br />
<pre>#!/bin/bash<br />
rm -Rf $HOME/.adobe/ 2> /dev/null<br />
rm -Rf $HOME/.macromedia/ 2> /dev/null<br />
</pre><br />
In questo caso si rimuove tutta la radice delle directory che tanto vengono ricreate in automatico al primo utilizzo di flashplayer.<br />
<br />
Per comodità si può inserire lo script in [[Utilizzo_del_servizio_di_scheduling_Cron | cron]].<br />
<br />
Per gli utenti di KDE3 o KDE4, basta copiare lo script '''cleanflash.sh''' o creare un collegamento simbolico alla directory ''/home/USER/.kde/shutdown'' <br />
(se la dir /shutdown non esiste occorre crearla ).<br />
<br />
In questo modo la pulizia verrà effettuata al logout di KDE.<br />
<br />
Oppure inserire il comando come alias in ''/home/user/.bashrc''<br />
<pre>alias ccf='/bin/rm -R $HOME/.adobe/ ;/bin/rm -R $HOME/.macromedia/ '</pre><br />
in questo modo garantiremo la nostra privacy eliminando le directory che portano il nome del sito.<br />
<br><br />
<br><br />
--[[Utente:Ferdybassi|Ferdybassi]] 16:17, 31 dic 2009 (CET)<br />
--[[Utente:Mm-barabba|Mm-barabba]] 00:58, 6 set 2010 (CEST)<br />
------<br />
[[Categoria:Non-Free]]<br />
[[Categoria:Browser]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=27098GNU/Screen2011-12-16T17:36:38Z<p>Skizzhg: </p>
<hr />
<div>== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come CRON.<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterrano esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
Ctrl-a :<br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di Vim; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
hardstatus alwayslastline<br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt bash digitiamo:<br />
screen -X hardstatus string "$(man screen | grep %-L)"<br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<<br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
Ctrl-a c<br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
0$ bash 1-$* bash<br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
Ctrl-a ?<br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
Ctrl-a A<br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
Ctrl-a :number <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
Ctrl-a k<br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
Ctrl-a t<br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
Ctrl-a m<br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
Ctrl-a C-\<br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
Ctrl-a :quit<br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via SSH) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina;<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
Ctrl-a d<br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare <br />
$ screen -r nome_sessione -p nome_finestra<br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
$ screen -r fugu<br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
$ screen -S fugu<br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
$ screen -x<br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
Ctrl-a a <br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
$ screen -e ^Ss<br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
Ctrl-a S<br />
<br />
Mentre per lo split verticale:<br />
Ctrl-a |<br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
Ctrl-a TAB<br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionanemto, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
Ctrl-a X<br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
Ctrl-a Q<br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
Ctrl-a :resize valore<br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
Ctrl-a :layout save nome_a_piacere<br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
Ctrl-a :layout attach nome_usato_per_salvare<br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
Ctrl-a :layout show<br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
Ctrl-a :layout title nome_usato_per_salvare<br />
<br />
E naturalmente rimuoverlo:<br />
Ctrl-a :layout remove nome_usato_per_salvare<br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è qundi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
Ctrl-a [<br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt bash o un editor, e incolliamo con:<br />
Ctrl-a ]<br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
Ctrl-a ><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
Ctrl-a <<br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile<br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
Ctrl-a h<br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il path da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br><br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
$ screen -X select 1<br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
$ screen -p 9 -X number 11<br />
<br />
Rinominare finestra:<br />
$ screen -p 9 -X title zut<br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'<br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'<br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
screen -X eval 'stuff comando "parametri \015"'<br />
screen -X eval 'stuff ./mio_script.sh "parametri_script \015"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
$ screen -X at bash# stuff 'ls ^M'<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash e alla finestra l10n:<br />
$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'<br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
$ screen -X at \# stuff 'ls ^M'<br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^Q si ottiene premendo <code>ctrl-v</code> e <code>ctrl-q</code>):<br />
$ screen -p 7 -X stuff ^Q <br />
<br />
nella finestra 7 ho solitamente rtorrent, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre<br />
(i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m http://it.search.yahoo.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
Ctrl-a :source .screenrc<br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
<br />
[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST<br />
----<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=26945GNU/Screen2011-11-17T17:59:24Z<p>Skizzhg: </p>
<hr />
<div>== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come CRON.<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterrano esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
Ctrl-a :<br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di Vim; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
hardstatus alwayslastline<br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt bash digitiamo:<br />
screen -X hardstatus string "$(man screen | grep %-L)"<br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<<br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
Ctrl-a c<br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
0$ bash 1-$* bash<br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
Ctrl-a ?<br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
Ctrl-a A<br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
Ctrl-a :number <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere una singola finestra è possibile digitare<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
Ctrl-a k<br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
Ctrl-a t<br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
Ctrl-a m<br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
Ctrl-a C-\<br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
Ctrl-a :quit<br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via SSH) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina;<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
Ctrl-a d<br />
<br />
Per ricollegarsi ("riattaccarsi") alla specifica finestra di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare <br />
$ screen -r nome_sessione -p nome_finestra<br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_finestra</code> quello della finestra desiderata (al posto del nome è anche possibile utilizzare il numero della finestra, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un unica sessione ed un'unica finestra è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_finestra</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome finestra, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultima finestra utilizzata.<br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
$ screen -r fugu<br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
$ screen -S fugu<br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
$ screen -x<br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
Ctrl-a a <br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
$ screen -e ^Ss<br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
Ctrl-a S<br />
<br />
Mentre per lo split verticale:<br />
Ctrl-a |<br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
Ctrl-a TAB<br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionanemto, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
Ctrl-a X<br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
Ctrl-a Q<br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
Ctrl-a :resize valore<br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
Ctrl-a :layout save nome_a_piacere<br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
Ctrl-a :layout attach nome_usato_per_salvare<br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
Ctrl-a :layout show<br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
Ctrl-a :layout title nome_usato_per_salvare<br />
<br />
E naturalmente rimuoverlo:<br />
Ctrl-a :layout remove nome_usato_per_salvare<br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è qundi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
Ctrl-a [<br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt bash o un editor, e incolliamo con:<br />
Ctrl-a ]<br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
Ctrl-a ><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
Ctrl-a <<br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile<br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
Ctrl-a h<br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il path da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in una finestra <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br><br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
$ screen -X select 1<br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
$ screen -p 9 -X number 11<br />
<br />
Rinominare finestra:<br />
$ screen -p 9 -X title zut<br />
<br />
Eseguire un comando generico all'interno di una finestra usando il comando '''stuff''', il quale concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
$ screen -S nome_sessione -p nome_finestra -X stuff 'ls ^M'<br />
<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_finestra</code>). Alternativamente (utile per situazioni in cui ''^M'' non è applicabile):<br />
$ screen -S nome_sessione -p nome_finestra -X stuff $'ls\n'<br />
<br />
Nel caso in cui GNU/Screen debba essere richiamato all'interno di script o per l'utilizzo in congiunzione con CRON è necessario usare <code>eval</code>; per esempio:<br />
<pre><br />
screen -X eval 'stuff comando "parametri \015"'<br />
screen -X eval 'stuff ./mio_script.sh "parametri_script \015"'<br />
</pre><br />
<br />
Eseguire un comando generico all'interno di più finestre usando il comando '''at'''. Esempi<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash:<br />
$ screen -X at bash# stuff 'ls ^M'<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre chiamate bash e alla finestra l10n:<br />
$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'<br />
<br />
Elencare il contenuto di una directory tramite il comando '''ls''' nelle finestre zero e nove:<br />
$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'<br />
<br />
Elencare il contenuto di una directory tramite '''ls''' in tutte le finestre:<br />
$ screen -X at \# stuff 'ls ^M'<br />
<br />
Possiamo inviare una sequenza ad un programma contenuto in una finestra (^M si ottiene premendo <code>ctrl-v</code> e subito dopo <code>Invio</code> o <code>Return</code> che dir si voglia):<br />
$ screen -p 7 -X stuff ^Q <br />
<br />
nella finestra 7 ho solitamente rtorrent, gli verrà quindi inviato <code>Ctrl-q</code> che chiuderà il programma in modo pulito, utilizzabile eventualmente in coppia con il comando <code>sleep</code> per programmarne la chiusura.<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre<br />
(i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m http://it.search.yahoo.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
Ctrl-a :source .screenrc<br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
<br />
[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST<br />
----<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Repository&diff=26944Repository2011-11-16T21:59:21Z<p>Skizzhg: debgen</p>
<hr />
<div>__NOTOC__<br />
Un '''repository''' in Debian è un archivio che contiene una lista di pacchetti dal quale è possibile attingere per l'installazione. I repository possono essere sia locali (ad esempio su CD-ROM o DVD) oppure remoti (esempio i repository ufficiali Debian).<br><br />
Vedere anche [[Faq#Repository|FAQ: Cos'è un '''repository'''?]]<br />
<br />
== Introduzione ai repository ==<br />
* [[I repository ed il loro utilizzo]]<br />
* [[Repository & pinning]]<br />
== Repository ufficiali di Debian ==<br />
* [[Repository ufficiali]]<br />
* [[Repository speciali]]<br />
* [[Il repository Backports | Backports]]<br />
== Repository esterni ==<br />
* [[Il repository DotDeb]]<br />
* [[Il repository di HWraid]]<br />
* [[Il repository di Google]]<br />
* [[Il repository LinuxMint]]<br />
* [[Repository non ufficiali | Altri repository non ufficiali]]<br />
== Extra == <br />
* [http://debgen.simplylinux.ch/ Generatore di sources.list]<br />
* [[Immagini iso Debian da usare come repository]]<br />
* [[Creare un Repository Debian | Creare un repository Debian]]<br />
* [[Gestione di un repository con debarchiver]]<br />
<br />
[[Categoria:Glossario]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Chat&diff=26903Chat2011-11-04T16:04:19Z<p>Skizzhg: </p>
<hr />
<div>La comunità di [http://www.debianizzati.org Debianizzati.Org] si incontra regolarmente in chat sulla rete IRC di [http://www.azzurra.org Azzurra].<br />
<br />
Per raggiungerci devi avere un [[Configurare_un_client_IRC_per_collegarsi_al_canale_debianizzati|programma di chat]] compatibile con la rete IRC, collegarti al server '''irc.azzurra.org''' ed entrare nel canale '''#debianizzati''' oppure puoi collegarti direttamente tramite la [http://irc.debianizzati.org/ webchat].<br />
<br />
Ricorda che la chat è e dovrebbe rimanere un piacevole un punto di incontro e di scambio di opinioni. Ti invitiamo quindi a leggere il nostro [[Regolamento della chat|regolamento]]. <br />
<br />
[[Categoria:Debianizzati]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Configurare_un_client_IRC_per_collegarsi_al_canale_debianizzati&diff=26885Configurare un client IRC per collegarsi al canale debianizzati2011-11-03T00:55:33Z<p>Skizzhg: </p>
<hr />
<div>{{Versioni compatibili}}<br />
== Introduzione ==<br />
<br />
Capita spesso di accedere al canale [http://it.wikipedia.org/wiki/Internet_Relay_Chat:Link IRC] di debianizzati per risolvere un problema, o semplicemente per scambiare qualche parola con i numerosi utenti della comunità. Così, come alternativa alla [http://irc.debianizzati.org/ webchat], ecco una breve panoramica dei client IRC più usati e la rispettiva configurazione necessaria.<br />
<br />
Nelle immagini verrà indicato anche come e dove inserire la password del nick; per gli utenti che frequentano spesso il canale si invita a registrare il nick, è un'identità e come tale considerata un metodo di riconoscimento da parte degli altri utenti. <br><br />
I passi da compiere per registrarsi su azzurra.<br />
<br />
Scegliere un nick e applicarlo:<br />
<pre>/nick nick_scelto</pre><br />
<br />
Nel caso in cui il nick sia già registrato verrete avvertiti.<br />
<br />
L'aiuto in linea generale:<br />
<pre>/msg help nickserv</pre><br />
<br />
L'aiuto in linea mirato al comando per la registrazione:<br />
<pre>/msg nickserv help register</pre><br />
<br />
Un esempio:<br />
<pre>/msg nickserv register nick_scelto indirizzo_email_valido</pre><br />
<br />
Quando riceverete l'email questa conterrà il comando per confermare la registrazione.<br />
<br />
[[http://www.azzurra.org/irchelp.php?mod=helpservices&type=NickServ#comando9:link Help online]]<br />
<br />
<br />
== Xchat ==<br />
=== Installazione ===<br />
Xchat è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install xchat</code><br />
<br />
=== Configurazione ===<br />
La parte relativa alle Informazioni Utente riguarda la personalizzazione del nickname, ovvero il nome con cui si apparirà nel canale. Bisogna completare le voci inerenti, aggiungendone uno "principale" e, almeno un'altro in caso di disconnessioni o se già utilizzato da un altro utente.<br />
<br />
=== ===<br />
Reti mostra l'elenco di tutte le network memorizzate in modo predefinito alle quali collegarsi, permette inoltre la loro gestione: aggiunta, rimozione e modifica. <br />
Per aggiungere il nostro canale selezionare AzzurraNet e prmeere il bottone "Modifica"<br />
<br />
[[File:Xchat1.png|271px]]<br />
<br />
<br />
Da qui si può impostare l'indirizzo del server, il canale in cui entrare alla connessione e la password del nick.<br />
<br />
<code>Server: irc.azzurra.net/6667</code><br />
<br />
<code>Favorite channels: #debianizzati</code><br />
<br />
Inoltre, bisogna spuntare le caselle "Connetti solo al server selezionato" e, per utilizzare i nickname impostati precedentemente, "Usa informazioni utente globali".<br />
<br />
[[File:Xchat2.png|300px]]<br />
<br />
<br />
Infine, selezioniamo il canale "debianizzati" e clicchiamo su "Connetti", si può ora dare inizio alla conversazione!<br />
<br />
<br />
== Pidgin ==<br />
=== Installazione ===<br />
Pidgin è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install pidgin</code><br />
=== Configurazione ===<br />
<br />
Scegliere la voce "Gestisci gli account" dal menu "Account" nella finestra della lista contatti, quindi cliccare su "Aggiungi" nella finestra che si aprirà. <br><br />
Selezionare IRC come protocollo, impostare il proprio nome utente, l'indirizzo del server e la password spuntando la casella per memorizzarla. Una volta cliccato su "Aggiungi" ci si connetterà ad azzurra.<br />
<br />
[[File:Pidgin1.png|296px]]<br />
<br />
<br />
Quando si stabilisce la connessione si aprirà la finestra della chat, per entrare in canale si può scrivere "/join #debianizzati" nella parte sottostante, dove lampeggia il cursore, o selezionare "Entra in una Chat" dal menu "Conversazione", scrivere "#debianizzati" nello spazio riservato al canale quindi premere il bottone "Entra". <br><br />
Per entrare automaticamente in canale alla connessione selezionare "Aggiungi chat" dal menu "Contatti" nella finestra della lista contatti; inserire il nome del canale, gruppo IRC e spuntare la casella che automatizza il processo.<br />
<br />
[[File:Pidgin2.png|385px]]<br />
<br />
<br />
== Quassel ==<br />
=== Installazione ===<br />
Quassel è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install quassel</code><br />
=== Configurazione ===<br />
Nelle impostazioni si inserisce la password per nickserv relativa al profilo della network selezionata.<br />
<br />
Il canale in cui entrare automaticamente si aggiunge tramite la linguetta "Comandi" inserendo "/join #debianizzati"<br />
<br />
Il nick si inserisce scegliendo "Identità" nell'albero a sinistra. <br />
<br />
[[File:Quassel1.png|533px]]<br />
<br />
<br />
Il profilo viene creato scegliendo "Aggiungi" nell'immagine precedente, contiene l'indirizzo e la porta del server e un nome arbitrario per il profilo stesso.<br />
<br />
[[File:Quassel2.png|329px]]<br />
<br />
<br />
== KVirc ==<br />
=== Installazione ===<br />
KVirc è disponibile nei repository e si può comodamente scaricare eseguendo in un terminale:<br />
<br />
<code># aptitude install kvirc</code><br />
=== Configurazione ===<br />
Il server a cui connettersi. A questa finestra si accede scegliendo "Server" dalle impostazioni generali.<br />
<br />
[[File:Kvirc1.png|430px]]<br />
<br />
<br />
Il canale in cui entrare automaticamente. A questa finestra si accede scegliendo "Server" dalle impostazioni generali, doppio click su "irc.azzurra.org" e aggiungendo una regola.<br />
<br />
[[File:Kvirc2.png|503px]]<br />
<br />
<br />
Le opzioni di nickserv dove inserire nick e password. A questa finestra si accede scegliendo "IRC > Strumenti > Nickserv" dalle impostazioni generali.<br />
<br />
[[File:Kvirc3.png|304px]]<br />
<br />
<br />
== Irssi ==<br />
Vedere la [http://guide.debianizzati.org/index.php/Irssi,_chattare_da_terminale guida] dedicata.<br />
<br />
<br />
<br /><br /><br />
{{ Warningbox | Chi fa parte dell'accademia Debianizzati, può seguire i corsi impostando #debianizzati-corsi come canale }}<br />
<br />
'''Vi aspettiamo numerosi!'''<br />
<br />
----<br />
<br />
--[[Utente:Ernestus|Ernestus]] 17:44, 10 feb 2011 (CET)<br />
[[Categoria:Instant Messaging]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Discussione:GNU/Screen&diff=26783Discussione:GNU/Screen2011-10-28T11:11:38Z<p>Skizzhg: </p>
<hr />
<div>[[Utente:Wtf|Wtf]] vedo che ti stai divertendo :) - Solo un appunto, quello che chiami "schermo" è una finestra ("window" da manuale), per cui mi atterrei a quella terminologia che è in uso in altri punti e resta coerente.<br />
<br />
[[Utente:Skizzhg|skizzhg]]<br />
<br />
<nowiki>__________________________________________________________________________________________________________________________________________________</nowiki><br><br />
<br />
Si scusami hai ragione, ho scritto senza pensarci. Spero non ti abbiano dato fastidio le piccole modifiche, le ho inserite perché in questi giorni mi son messo a smanettare con screen e seguendo la tua guida ho avuto l'impressione che alcuni elementi non fossero adeguatamente evidenziati o spiegati.<br />
<br />
Edit1: Volevo poi chiederti una cosa riguardo a stuff (non conosco il tuo nick sul forum): la soluzione $'comando_da_eseguire\n' mi funziona nella bash, ma non se lanciato all'interno di script. Il risultato infatti è che nella finestra selezionata mi compare semplicemente $'comando_da_eseguire\n', cioè non viene eseguito nulla.<br />
<br />
Edit2: Ho risolto il problema con la seguente sintassi:<br />
<pre><br />
screen -X eval 'stuff ./mio_script.sh" parametri_script \015"'<br><br />
screen -X eval 'stuff comando" parametri \015"'<br><br />
</pre><br />
Nel caso il comando o script non abbia parametri<br><br />
screen -X eval 'stuff comando" \015"'<br />
<br />
Tu sei assolutamente sicuro che <code>screen -X stuff $'comandi\n'</code> ti funzioni negli script?<br />
<br />
[[Utente:Wtf|Wtf]]<br />
<br />
<nowiki>__________________________________________________________________________________________________________________________________________________</nowiki><br><br />
<br />
Nessun fastidio, figurati :)<br />
<br />
Purtroppo la sintassi usata per stuff differisce a seconda del metodo utilizzato. E no, non ne sono sicuro, per cui se hai trovato la giusta via ti ringrazio; in effetti sapevo che l'uso del codice ASCII non funziona al prompt bash ma dovrebbe funzionare invece nella command line di screen (^A :)<br />
<br />
[[Utente:Skizzhg|skizzhg]]<br />
<br />
<nowiki>__________________________________________________________________________________________________________________________________________________</nowiki><br></div>Skizzhghttps://guide.debianizzati.org/index.php?title=Discussione:GNU/Screen&diff=26772Discussione:GNU/Screen2011-10-26T21:01:29Z<p>Skizzhg: Creata pagina con 'Wtf vedo che ti stai divertendo :) - Solo un appunto, quello che chiami "schermo" è una finestra ("window" da manuale), per cui mi atterrei a quella terminologia ...'</p>
<hr />
<div>[[Utente:Wtf|Wtf]] vedo che ti stai divertendo :) - Solo un appunto, quello che chiami "schermo" è una finestra ("window" da manuale), per cui mi atterrei a quella terminologia che è in uso in altri punti e resta coerente.</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=26771GNU/Screen2011-10-26T20:58:31Z<p>Skizzhg: </p>
<hr />
<div>{{Stub}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<BR><br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come CRON.<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi ed operazioni generiche eseguiti apparterrano esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br />
In ogni momento è sempre possibile ricollegarsi ad una o più sessioni di <code>GNU/Screen</code> e riprendere le varie attività come se niente fosse.<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br />
Nel seguito si spiegherà come abbandonare e ricollegarsi ad una sessione di <code>GNU/Screen</code> già esistente, per il momento ci si limita a sottolineare come ripetendo il precedente comando si crei una nuova sessione senza quindi ricollegarsi ad una già esistente. Ne segue immediatamente che utilizzando scorrettamente <code>GNU/Screen</code> si rischia di ritrovarsi con un certo numero di sessioni abbandonate.<br />
{{Box|NOTA|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
==== Visualizzazione finestre ====<br />
<code>GNU/Screen</code> usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
Ctrl-a :<br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di Vim; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
hardstatus alwayslastline<br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt bash digitiamo:<br />
screen -X hardstatus string "$(man screen | grep %-L)"<br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica sia per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<<br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
Ctrl-a c<br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
0$ bash 1-$* bash<br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
Ctrl-a ?<br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
Ctrl-a A<br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
Ctrl-a :number <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Per chiudere un singolo schermo è possibile digitare<br />
<pre>$ exit</pre><br />
oppure '''solo''' in caso di problemi quali congelamento dello schermo o altro è possibile forzarne la chiusura (e uccidere il processo) con:<br />
Ctrl-a k<br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
Ctrl-a t<br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
Ctrl-a m<br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
Ctrl-a C-\<br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
Ctrl-a :quit<br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Come anticipato inizialmente GNU/Screen deve restare attivo e insieme a lui tutto ciò che contiene anche nei seguenti casi:<br />
* logout (locale o via SSH) dell'utente;<br />
* riavvio di X o chiusura del terminale (se si dispone di un ambiente grafico);<br />
* altre operazioni esotiche eccettuato il riavvio della macchina;<br />
Tutto ciò è reso possibile grazie alla funzione di ''detach'', ovvero la possibilità di "staccare" GNU/Screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
Ctrl-a d<br />
<br />
Per ricollegarsi ("riattaccarsi") allo specifico schermo di una certa sessione da cui ci si è precedentemente staccati è sufficiente digitare <br />
$ screen -r nome_sessione -p nome_schermo<br />
dove <code>nome_sessione</code> è appunto il nome della nostra sessione e <code>nome_schermo</code> quello dello schermo desiderato (al posto del nome è anche possibile utilizzare il numero dello schermo, ricordando a tal proposito che la numerazione parte dal valore 0). Qualora sia presente un unica sessione ed un unico schermo è possibile omettere sia <code>nome_sessione</code> sia <code>-p nome_schermo</code>. In caso contrario l'omissione di tali parametri innesca la stampa a video delle sessioni disponibili, per esempio:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
I primi due nomi di sessioni sono stati generati automaticamente, infatti i nomi predefiniti in GNU/Screen hanno la seguente struttura:<br />
<pre>numero.pts-numero.hostname</pre><br />
L'ultimo nome è frutto invece della scelta dell'utente, almeno per quanto riguarda la parte successiva al punto.<br />
Si noti che l'omissione del parametro <code>-p</code>, ovvero del nome schermo, viene interpretato da GNU/Screen come una richiesta di collegarsi all'ultimo schermo utilizzato.<br />
Supponendo dunque di voler richiamare la prima sessione è possibile digitare uno tra i seguenti tre comandi:<br />
$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
Similmente per l'ultima sessione sarà possibile ricollegarvisi digitando:<br />
$ screen -r fugu<br />
<br />
Per personalizzarne il nome di una sessione direttamente in fase d'avvio è sufficiente digitare:<br />
$ screen -S fugu<br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
$ screen -x<br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen l'utilizzo dell'opzione "-x".}}<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
Ctrl-a a <br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
$ screen -e ^Ss<br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
Ctrl-a S<br />
<br />
Mentre per lo split verticale:<br />
Ctrl-a |<br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
Ctrl-a TAB<br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionanemto, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
Ctrl-a X<br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
Ctrl-a Q<br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
Ctrl-a :resize valore<br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
Ctrl-a :layout save nome_a_piacere<br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
Ctrl-a :layout attach nome_usato_per_salvare<br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
Ctrl-a :layout show<br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
Ctrl-a :layout title nome_usato_per_salvare<br />
<br />
E naturalmente rimuoverlo:<br />
Ctrl-a :layout remove nome_usato_per_salvare<br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è qundi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
Ctrl-a [<br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt bash o un editor, e incolliamo con:<br />
Ctrl-a ]<br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
Ctrl-a ><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
Ctrl-a <<br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile<br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
Ctrl-a h<br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il path da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi sia eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" oppure in uno schermo <code>GNU/Screen</code> appartenente ad una differente sessione.<br />
<br><br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>screen -m -d -S sessione1</pre><br />
<br />
Selezionare una finestra (accetta sia il numero sia il nome):<br />
$ screen -X select 1<br />
<br />
Rinumerare finestra (-p accetta sia il numero sia il nome):<br />
$ screen -p 9 -X number 11<br />
<br />
Rinominare finestra:<br />
$ screen -p 9 -X title zut<br />
<br />
Eseguire un comando generico all'interno di uno schermo usando il comando '''stuff''', il qualche concretamente invia una stringa come input. Esempi:<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' (^M si ottiene con <code>ctrl-v Return</code>):<br />
$ screen -S nome_sessione -p nome_schermo -X stuff 'ls ^M'<br />
(si veda il paragrafo ''Detach e Sessioni'' per il significato dei parametri <code>nome_sessione</code> e <code>nome_schermo</code>). Alternativamente (utile per script o altre situazioni in cui ''^M'' non è applicabile):<br />
$ screen -S nome_sessione -p nome_schermo -X stuff $'ls\n'<br />
<br />
Eseguire un comando generico all'interno di più schermi usando il comando '''at'''. Esempi<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' in tutte le finestre chiamate bash:<br />
$ screen -X at bash# stuff 'ls ^M'<br />
Elencare il contenuto di una cartella tramite '''ls''' in tutte le finestre chiamate bash e alla finestra l10n:<br />
$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'<br />
<br />
Elencare il contenuto di una cartella tramite il comando '''ls''' nelle finestre zero e nove:<br />
$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'<br />
<br />
Elencare il contenuto di una cartella tramite '''ls''' in tutte le finestre:<br />
$ screen -X at \# stuff 'ls ^M'<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre<br />
(i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m http://it.search.yahoo.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
Ctrl-a :source .screenrc<br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
<br />
[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST<br />
----<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=26766GNU/Screen2011-10-26T11:12:51Z<p>Skizzhg: usare il tag <pre> è come usare <nowiki> dappertutto, soluzioni?</p>
<hr />
<div>{{Stub}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<BR><br />
Risulta dunque lampante la sua utilità in sistemi privi di ambiente grafico, dove non è appunto possibile avviare N finestre di terminale per eseguire N differenti applicativi/comandi.<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
<pre># aptitude install screen</pre><br />
<br />
== Utilizzo ==<br />
<code>GNU/Screen</code> ha due tipi di utilizzo, tramite interfaccia e tramite riga di comando; premesso che visivamente la differenza è minima si può affermare che la prima modalità risulta prevalentemente utile in tutti quei casi dove è richiesta interazione con l'utente, mentre la seconda dove ciò non è vero, per esempio nell'esecuzione di script o di servizi come CRON.<br />
Concretamente screen una volta avviato non fa altro che duplicare la schermata del terminale, quindi da un punto di vista visivo, ad eccezione del messaggio iniziale, non si noterà alcunché di differente rispetto al classico terminale. Ciò nonostante tutti gli eventuali comandi e operazioni generiche eseguiti apparterrano esclusivamente al suddetto duplicato del terminale, "lasciando dunque libero" quello di base.<br />
Questo fatto in congiunzione con la possibilità di "abbandonare" il duplicato senza che questo comporti la terminazione di tutte le operazioni in corso permette di eseguire comodamente più operazioni in parallelo, basta infatti creare tanti duplicati quanti ne servono.<br />
{{Box|IMPORTANTE|È possibile creare '''m''' sessioni di <code>GNU/Screen</code> e per ciascuna di esse '''n''' schermi}}<br />
<br />
=== Modalità Interfaccia ===<br />
Per avviare <code>GNU/Screen</code> è sufficiente digitare in un emulatore di terminale o in una tty quanto segue:<br />
<pre>$ screen</pre><br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br />
<br />
È importante ricordare che screen è studiato per rimanere in funzione in background (non è il termine esatto ma credo renda l'idea) per cui impariamo subito i comandi di base. Qualsivoglia sia la ragione si potrebbe avere la tentazione di chiudere il terminale, aprirne un altro e avviare nuovamente screen; questo significa aprire una nuova sessione ma lasciare attiva la precedente, oltre che errato come concetto si rischia di ritrovarsi con un certo numero di sessioni abbandonate :)<br />
<br />
==== Visualizzazione finestre ====<br />
screen usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
Ctrl-a :<br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di Vim; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
hardstatus alwayslastline<br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt bash digitiamo:<br />
screen -X hardstatus string "$(man screen | grep %-L)"<br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica che per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<<br />
<br />
==== Scorciatoie e messaggi ====<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
Ctrl-a c<br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus e anche il suo aspetto "testuale" è diverso:<br />
0$ bash 1-$* bash<br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
Ctrl-a ?<br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
Ctrl-a A<br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
Ctrl-a :number <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
Il metodo migliore per chiudere una finestra è terminare il processo in essa contenuto, '''solo''' in caso di problemi quali freeze o altro possiamo forzarne la chiusura (e uccidere il processo) con:<br />
Ctrl-a k<br />
<br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
Ctrl-a t<br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
Ctrl-a m<br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
==== Chiusura ====<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
Ctrl-a C-\<br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
Ctrl-a :quit<br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
==== Detach e sessioni ====<br />
Ma passiamo alle cose serie. screen deve restare attivo e insieme a lui tutto ciò che contiene, ma abbiamo bisogno di fare il logout (locale o via SSH), riavviare X, chiudere il terminale o altre operazioni esotiche (tranne riavviare la macchina); questa operazione si chiama ''detach'', ovvero stacchiamo screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
Ctrl-a d<br />
<br />
E per riattaccarlo digitiamo al prompt bash:<br />
$ screen -r<br />
<br />
Nel caso avessimo più di una sessione staccata andrà specificata quale si vuole. Il precedente comando mostrerà quelle disponibili:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
<br />
L'argomento può essere l'intera stringa o parte di essa, per cui tutte e tre le seguenti combinazioni andranno bene:<br />
$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
<br />
Ma abbiamo altre due stringe curiose, quelle sono le sessioni che uso abitualmente. Per personalizzarne il nome basterà avviare screen con:<br />
$ screen -S fugu<br />
<br />
e l'attach avverrà allo stesso modo:<br />
$ screen -r fugu<br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
$ screen -x<br />
<br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
<br />
==== Escape ====<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
Ctrl-a a <br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
$ screen -e ^Ss<br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
==== Split ====<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
Ctrl-a S<br />
<br />
Mentre per lo split verticale:<br />
Ctrl-a |<br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
Ctrl-a TAB<br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionanemto, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
Ctrl-a X<br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
Ctrl-a Q<br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
Ctrl-a :resize valore<br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
Ctrl-a :layout save nome_a_piacere<br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
Ctrl-a :layout attach nome_usato_per_salvare<br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
Ctrl-a :layout show<br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
Ctrl-a :layout title nome_usato_per_salvare<br />
<br />
E naturalmente rimuoverlo:<br />
Ctrl-a :layout remove nome_usato_per_salvare<br />
<br />
La versione di Debian è compilata da Git e ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
==== Copia e incolla ====<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è qundi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
Ctrl-a [<br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt bash o un editor, e incolliamo con:<br />
Ctrl-a ]<br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
Ctrl-a ><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
Ctrl-a <<br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile<br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
Ctrl-a h<br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il path da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
=== Modalità riga di Comando ===<br />
Come inizialmente anticipato è possibile sia inviare comandi che eseguire applicativi in ciascuno dei vari schermi di <code>GNU/Screen</code> precedentemente creati senza per questo essere obbligati a riportare in primo piano ciascuno di essi.<br />
{{Warningbox|Prestare cautela nell'eseguire all'interno di sessioni screen i seguenti comandi, in particolare all'utilizzo dell'opzione "-x".}}<br />
Si noti che terminata l'esecuzione del comando ci si ritroverà ancora davanti al proprio terminale "base" e non all'interno di una sessione di <code>GNU/Screen</code><br />
<br><br />
<br />
Creare una sessione di nome ''sessione1''<br />
<pre>screen -m -d -S sessione1</pre><br />
<br />
Seleziona una finestra (accetta sia numero che nome):<br />
$ screen -X select 1<br />
<br />
Rinumera finestra (-p accetta sia numero che nome):<br />
$ screen -p 9 -X number 11<br />
<br />
Rinomina finestra:<br />
$ screen -p 9 -X title zut<br />
<br />
Il comando '''stuff''' invia una stringa come input e ci permette di eseguire comandi esterni.<br />
<br />
Esegue il comando '''ls''' (^M si ottiene con <code>ctrl-v Return</code>):<br />
$ screen -p 0 -X stuff 'ls ^M'<br />
<br />
Alternativa (utile per script o altre situazioni in cui ''^M'' non è applicabile):<br />
$ screen -p 0 -X stuff $'ls\n'<br />
<br />
Il comando '''at''' esegue un comando su più finestre.<br />
<br />
Esegue il comando '''ls''' a tutte le finestre chiamate bash:<br />
$ screen -X at bash# stuff 'ls ^M'<br />
<br />
Esegue il comando '''ls''' a tutte le finestre chiamate bash e alla finestra l10n:<br />
$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'<br />
<br />
Esegue il comando '''ls''' alle finestre zero e nove:<br />
$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'<br />
<br />
Esegue il comando '''ls''' a tutte le finestre:<br />
$ screen -X at \# stuff 'ls ^M'<br />
<br />
== Configurazione ==<br />
Se l'utente lo desidera è possibile personalizzare <code>GNU/Screen</code> tramite il file di configurazione <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito se ne riporta uno d'esempio con i relativi commenti, pensato per sfruttare combinazioni esistenti e non al fine di rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre<br />
(i messaggi di attività spiegati al capitolo 3.1.2: Scorciatoie e messaggi)<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"<br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con "Ctrl-a TAB" vado in quello in alto a destra, mentre con<br />
# "Ctrl-a q" e "Ctrl-a s" mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa "Ctrl-a numero" per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con "Ctrl-a . 1" andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m http://it.search.yahoo.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
Ctrl-a :source .screenrc<br />
<br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
<br />
[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST<br />
----<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=Utente:Skizzhg&diff=26733Utente:Skizzhg2011-10-17T18:21:00Z<p>Skizzhg: </p>
<hr />
<div>== Collaborazioni ==<br />
Traduttore Debian per<br />
* [http://ddtp.debian.net/ DDTP (Debian Description Translation Project)]<br />
* [http://wiki.debian.org/ wiki Debian]<br />
* [http://www.debian.org/ pagine web Debian]<br />
* [http://live.debian.net/manual/ Debian Live Manual]<br />
* [http://live.debian.net/devel/live-config/ manpage di live-config]<br />
<br />
<br />
* operatore IRC di #debianizzati su Azzurra<br />
* amministratore e collaboratore del [http://fluxbox-wiki.org/index.php?title=Fluxbox-wiki wiki di Fluxbox]<br />
* localizzazione di [http://fluxbox.org/ Fluxbox]<br />
* localizzazione di [https://github.com/ProgVal/Limnoria/wiki Limnoria] (Supybot)<br />
* traduzione [http://mplayerhq.hu/design7/documentation.html manpage di MPlayer]<br />
<br />
<br />
== Guide ==<br />
* [[Vim Cheat Sheet]]<br />
* [[GNU/Screen]]<br />
* [[Tabella Software]] (adottata)<br />
<br />
<br />
== Contributi ==<br />
* [[Speciale:Contributions/Skizzhg|mi sono intrufolato in...]]</div>Skizzhghttps://guide.debianizzati.org/index.php?title=GNU/Screen&diff=26732GNU/Screen2011-10-17T18:18:36Z<p>Skizzhg: almost done</p>
<hr />
<div>{{Stub}}<br />
== Introduzione ==<br />
<code>GNU/Screen</code> è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.<br />
<br />
<br />
== Installazione ==<br />
Come sempre Debian rende tutto molto semplice:<br />
# aptitude install screen<br />
<br />
In un emulatore di terminale o in una tty lo avviamo quindi con:<br />
$ screen<br />
<br />
<br />
== Le basi ==<br />
Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.<br />
<br />
È importante ricordare che screen è studiato per rimanere in funzione in background (non è il termine esatto ma credo renda l'idea) per cui impariamo subito i comandi di base. Qualsivoglia sia la ragione si potrebbe avere la tentazione di chiudere il terminale, aprirne un altro e avviare nuovamente screen; questo significa aprire una nuova sessione ma lasciare attiva la precedente, oltre che errato come concetto si rischia di ritrovarsi con un certo numero di sessioni abbandonate :)<br />
<br />
<br />
=== Visualizzazione finestre ===<br />
screen usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default <code>Ctrl-a</code>, per cui dire <code>Ctrl-a :</code> significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.<br />
<br />
Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:<br />
Ctrl-a :<br />
<br />
Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di Vim; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.<br />
<br />
A questo punto, subito dopo i due punti, scriviamo:<br />
hardstatus alwayslastline<br />
<br />
e premiamo Invio. <br><br />
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt bash digitiamo:<br />
screen -X hardstatus string "$(man screen | grep %-L)"<br />
<br />
Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica che per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione <code>'''-X'''</code> è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.<br />
<br />
Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:<br />
%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<<br />
<br />
Come accennato in apertura, la sintassi è complessa e la affronteremo più avanti.<br />
<br />
<br />
=== Scorciatoie e messaggi ===<br />
Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come '''0-$ bash''', un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background e foreground usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:<br />
Ctrl-a c<br />
<br />
<code>Ctrl-a</code> è l'attivatore e <code>'''c'''</code> la scorciatoia per il comando <code>screen</code>, perché all'interno della sessione, ''screen'' apre una finestra che di default prende il nome dalla variabile d'ambiente SHELL. <br><br />
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus ed anche il suo aspetto "testuale" è diverso:<br />
0$ bash 1-$* bash<br />
<br />
Per passare da una finestra all'altra ci sono diversi metodi:<br />
* finestra specificata da [numero]: '''Ctrl-a [numero]'''<br />
* finestra successiva: '''Ctrl-a n''' (oppure Ctrl-a space)<br />
* finestra precedente: '''Ctrl-a p''' (oppure Ctrl-a backspace)<br />
* finestra visualizzata in precedenza: '''Ctrl-a Ctrl-a'''<br />
* lista selezionabile di finestre: '''Ctrl-a "'''<br />
<br />
<br />
I comandi di uso comune hanno quasi tutti una scorciatoia ed è decisamente più comodo ma tutti sono comunque utilizzabili tramite il prompt, la manpage elenca tutte le scorciatoie predefinite e ogni singolo comando; leggetevelo con calma e, come vedremo più avanti, createvi nuove scorciatoie, anche sostituendo quelle predefinite che non ritenete utili. <br><br />
In questa guida ne verranno illustrate solo alcune con qualche consiglio ed esempio su come migliorare l'usabilità; alcuni comandi hanno due combinazioni per cui è piuttosto facile eliminarne una e associarla ad altro, fate attenzione perché sono tutte case-sensitive.<br />
<br />
Una breve legenda con le eventuali combinazioni create e quindi presenti nel file di configurazione si ottiene con:<br />
Ctrl-a ?<br />
<br />
<br />
Ogni finestra è rinominabile a piacimento con:<br />
Ctrl-a A<br />
<br />
Al prompt dei comandi apparirà la scritta "Set window's title to: bash", basta cancellare il nome attuale e scrivere il desiderato.<br />
<br />
E se vogliamo rinumerarla:<br />
Ctrl-a :number <br />
<br />
seguito da uno spazio e il nuovo numero.<br />
<br />
<br />
Il metodo migliore per chiudere una finestra è terminare il processo in essa contenuto, '''solo''' in caso di problemi quali freeze o altro possiamo forzarne la chiusura (e uccidere il processo) con:<br />
Ctrl-a k<br />
<br />
Al prompt dei comandi apparirà il messaggio "Really kill this window [y/n]".<br />
<br />
<br />
Visualizza data, hostname e carico del sistema (load average, quello solitamente mostrato dal comando uptime):<br />
Ctrl-a t<br />
<br />
Il messaggio apparirà in basso, sopra la statusbar, per alcuni secondi; per visualizzare l'ultimo messaggio di attività, qualunque esso sia, si usa:<br />
Ctrl-a m<br />
<br />
I messaggi di attività sono avvisi inviati da altre finestre in varie occasioni, se ad esempio abbiamo aptitude che lavora nella finestra zero e nel frattempo passiamo alla finestra uno per fare altro, quando aptitude finirà screen ci avvisa con "Activity in window %n", dove <code>''%n''</code> è sostituito dal numero della finestra. <br><br />
Il tempo di visualizzazione è impostato a 5 secondi ed è configurabile, possono sembrare pochi ma si scoprirà che talvolta sono anche troppi in quanto durante tale periodo il processo contenuto nella finestra corrente viene in un certo modo bloccato.<br />
<br />
<br />
=== Chiusura ===<br />
"Non mi piace, è complicato, mi sono impantanato e voglio uscire da questo casino!", ovvero come chiudere screen. <br><br />
La risposta è che è impossibile chiudere screen, non è stato concepito per essere terminato, perché usarlo altrimenti? ;) <br><br />
Ma se proprio non potete farne a meno:<br />
Ctrl-a C-\<br />
<br />
Questa è nuova, che diamine è quel "C-\"? Come dicevo prima ci sono alcuni comandi che hanno una doppia scorciatoia, solitamente per renderla più difficile da digitare per errore, in questo caso significa premere <code>Ctrl-a Ctrl-\</code> ma se volete davvero evitare brutte sorprese consiglio vivamente di eliminarla e usare il prompt quando occorre:<br />
Ctrl-a :quit<br />
<br />
Chiudere screen equivale ovviamente a chiudere tutte le finestre e terminare i processi della sessione, anche qui è consigliabile terminare i processi in modo pulito, almeno quelli importanti o che devono scrivere qualcosa su disco. In alternativa, terminato l'ultimo processo e chiusa l'ultima finestra terminerà anche screen e al prompt apparirà "[screen is terminating]".<br />
<br />
<br />
=== Detach e sessioni ===<br />
Ma passiamo alle cose serie. screen deve restare attivo e insieme a lui tutto ciò che contiene, ma abbiamo bisogno di fare il logout (locale o via SSH), riavviare X, chiudere il terminale o altre operazioni esotiche (tranne riavviare la macchina); questa operazione si chiama ''detach'', ovvero stacchiamo screen da quello che è di fatto il suo contenitore, xterm o tty che sia:<br />
Ctrl-a d<br />
<br />
E per riattaccarlo digitiamo al prompt bash:<br />
$ screen -r<br />
<br />
Nel caso avessimo più di una sessione staccata andrà specificata quale si vuole. Il precedente comando mostrerà quelle disponibili:<br />
<pre><br />
$ screen -r<br />
There are several suitable screens on:<br />
4322.pts-17.jackinthebox (15/10/2011 10:06:17) (Detached)<br />
4088.pts-15.jackinthebox (15/10/2011 10:00:17) (Detached)<br />
4656.tty (08/10/2011 01:00:48) (Attached)<br />
1981.fugu (07/10/2011 20:45:07) (Attached)<br />
Type "screen [-d] -r [pid.]tty.host" to resume one of them.<br />
</pre><br />
<br />
L'argomento può essere l'intera stringa o parte di essa, per cui tutte e tre le seguenti combinazioni andranno bene:<br />
$ screen -r 4322.pts-17.jackinthebox<br />
$ screen -r 4322<br />
$ screen -r pts-17<br />
<br />
Ma abbiamo altre due stringe curiose, quelle sono le sessioni che uso abitualmente. Per personalizzarne il nome basterà avviare screen con:<br />
$ screen -S fugu<br />
<br />
e l'attach avverrà allo stesso modo:<br />
$ screen -r fugu<br />
<br />
Se invece volessimo attaccare in un altro terminale o tty una sessione già attaccata useremo:<br />
$ screen -x<br />
<br />
Questo può essere utile se ci si collega da un'altra macchina o si vuole condividere la sessione con un altro utente, sebbene per quest'ultima ipotesi ci siano dei comandi appositi.<br />
<br />
<br />
=== Escape ===<br />
Utilizzando <code>Ctrl-a</code> per screen non sarà più possibile usare tale combinazione in bash per andare ad inizio riga (beginning-of-line) o in Vim o altrove; in realtà non è usabile direttamente ma con:<br />
Ctrl-a a <br />
<br />
Il che, a seconda delle esigenze potrebbe essere scomodo, per cui possiamo eventualmente modificare l'attivatore ad esempio con un tasto nelle vicinanze come '''q''' oppure '''s''' che sono associati al flow control e non ci interessa assolutamente avere, a patto che non interferisca con altre applicazioni. A scelta si può avviare screen con tale opzione:<br />
$ screen -e ^Ss<br />
<br />
o inserire <code>'''escape ^Ss'''</code> nel file di configurazione.<br />
<br />
<br />
=== Split ===<br />
Una delle caratteristiche principali di screen è la possibilità di dividere la finestra in più porzioni proprio come un Window Manager tiling o gli split di Vim, queste prendono il nome di regioni. <br><br />
Per dividere orizzontalmente si usa:<br />
Ctrl-a S<br />
<br />
Mentre per lo split verticale:<br />
Ctrl-a |<br />
<br />
<br />
A questo punto la regione in focus è trattata come una finestra, perché questo è lo scopo degli split: avere più finestre a vista contemporaneamente. Le scorciatoie per cambiare finestra sono le stesse ma valgono solo per quella regione, per muoversi invece tra una regione e l'altra useremo la combinazione:<br />
Ctrl-a TAB<br />
<br />
Di default abbiamo solo questa e le regioni vengono selezionate in senso orario ma possiamo associare altri comandi per muoverci in senso antiorario e spostarsi alla regione in alto o in basso; ma è forse necessaria qualche piccola considerazione. <br><br />
screen è un programma con una certa età e il suo sviluppo è piuttosto stagnante, nonostante sia abbastanza attivo su Git non esce una nuova versione da anni. La divisione orizzontale è di serie solo su Debian e derivate, per tutti gli altri è necessario applicare una patch o compilarselo da Git, tutto sommato è una feature piuttosto recente e porta alla conseguenza che alcuni comandi non sono stati adattati allo scopo. Ad esempio non ci si può spostare a destra e sinistra (non facilmente almeno) perché esistono solo i comandi ''up'' e ''down''. <br><br />
Da parecchio ormai esiste questo tipico confronto tra applicazioni simili per scoprire quale sia meglio o peggio, la verità è che una non sostituisce l'altra o se lo fa dipende dalle esigenze del singolo; in particolare sto parlando di "screen vs tmux" e "irssi vs weechat". Visto che sono programmi che necessitano di impegno nel capirne il funzionanemto, ciò che salta subito all'occhio in tmux e weechat è la ricchezza di feature abilitate in modo predefinito, questo non è necessariamente un pregio ma nemmeno un difetto, provateli entrambi e valutate.<br />
<br />
Notare che lo split prende il focus ma non crea o sceglie alcuna finestra, solo lo spazio dove contenere qualcosa.<br />
<br />
In caso volessimo rimuovere la regione in focus useremo:<br />
Ctrl-a X<br />
<br />
Se invece decidiamo di rimuoverle tutte tranne quella in focus:<br />
Ctrl-a Q<br />
<br />
La rimozione di una regione non implica eliminare la finestra o chiudere il programma ma solamente eliminare lo split.<br />
<br />
Ogni regione è ridimensionabile in base all'orientamento dello split: <br />
Ctrl-a :resize valore<br />
<br />
dove "valore" è la quantità di righe o colonne desiderata o una percentuale dello spazio totale.<br />
* incrementa regione in focus: '''+valore'''<br />
* diminuisce regione in focus: '''-valore'''<br />
* imposta tutte le finestre alla stessa dimensione: '''='''<br />
* massimizza regione in focus: '''max'''<br />
* minimizza regione in focus: '''min'''<br />
<br />
Quando facciamo il detach della sessione e la riattacchiamo, gli split spariscono, questo salverà la disposizione delle regioni per la sessione corrente:<br />
Ctrl-a :layout save nome_a_piacere<br />
<br />
Una volta salvato il layout il ripristino è automatico ma questo è comunque il comando per ripristinarlo:<br />
Ctrl-a :layout attach nome_usato_per_salvare<br />
<br />
Possiamo avere e salvare più layout ed elencarli con:<br />
Ctrl-a :layout show<br />
<br />
Eventualmente rinominarli (senza argomento mostra il nome di quello in uso):<br />
Ctrl-a :layout title nome_usato_per_salvare<br />
<br />
E naturalmente rimuoverlo:<br />
Ctrl-a :layout remove nome_usato_per_salvare<br />
<br />
La versione di Debian è compilata da Git ed ha varie opzioni non solitamente presenti, a questa manca ancora <code>layout dump</code> che permette di salvare la disposizione su file di configurazione e renderlo disponibile anche dopo la chiusura della sessione. <br><br />
Inoltre non sono comandi documentati, per cui date un'occhiata ai [http://git.savannah.gnu.org/cgit/screen.git/tree/src/doc/screen.1#n2262 sorgenti].<br />
<br />
<br />
=== Copia e incolla ===<br />
La gestione del testo è una delle caratteristiche più importanti e potenti, sebbene sia usabile in un emulatore di terminale e in X, ricordiamoci che screen nasce come applicazione mouseless ed è qundi provvista di tutto (o quasi) ciò che serve per renderla funzionale senza click.<br />
<br />
Per copiare del testo si entra in modalità copia:<br />
Ctrl-a [<br />
<br />
Quindi ci si muove con le frecce o meglio ancora con i tasti tipici di Vim; vi rimando alla manpage per il comando '''copy''' che elenca e spiega il tutto e riporto solo qualche piccolo esempio.<br />
<br />
Supponiamo si voglia copiare la frase precedente. Attiviamo la modalità copia quindi scorriamo nel testo con '''h, j, k, l''' spostando il cursore sulla '''Q''' di "Quindi" e premiamo il tasto '''Space'''; ora sempre con i tasti di movimento raggiungiamo la fine della frase ('''w, b''' scorrono parola per parola e velocizzano l'operazione), possiamo vedere che il testo viene selezionato. Una volta che il cursore raggiungerà '''o.''' di "esempio" premiamo di nuovo '''Space''' che, come è intuibile, fa da marcatore per inizio e fine; sulla statusbar apparirà il messaggio "Copied 195 characters into buffer". Ora abbiamo la nostra frase memorizzata nella selezione, premiamo '''Esc''' o altro tasto (qualsiasi altro tasto che non faccia parte di quelli elencati per le operazioni) per uscire dalla modalità copia, ci spostiamo su un'altra finestra, che sia un prompt bash o un editor, e incolliamo con:<br />
Ctrl-a ]<br />
<br />
È un po' macchinoso ma davvero potente, in particolare quando si deve copiare una quantità corposa di testo. <br><br />
Possiamo salvare la nostra selezione su file senza dover aprire prima un editor. Ripetiamo il procedimento di prima per la copia ma invece di spostarsi altrove e incollare usiamo questa combinazione:<br />
Ctrl-a ><br />
<br />
Apparirà il messaggio "Copybuffer written to "/tmp/screen-exchange"" e in tale file avremo la nostra frase. <br><br />
Il percorso del file <code>/tmp/screen-exchange</code> è modificabile tramite il comando <code>'''bufferfile'''</code>, sia per salvare la selezione altrove sia per incollare da altra fonte; ora vediamo infatti come sfruttare questo file di scambio o attingere da uno differente. <br><br />
Apriamo Vim (o altro editor) e mettiamolo in modalità inserimento, ora facciamo leggere il file a screen con:<br />
Ctrl-a <<br />
<br />
Apparirà il messaggio "Slurped 195 characters into buffer". Quindi incolliamo con <code>'''Ctrl-a ]'''</code> ottenendo il testo contenuto in <code>/tmp/screen-exchange</code>. <br><br />
Adesso vogliamo invece incollare nell'editor il contenuto di un file differente, impostiamo quindi il percorso come argomento del comando <code>'''bufferfile'''</code>, lo segnaliamo a screen e incolliamo:<br />
C-a :bufferfile /etc/screenrc<br />
C-a < C-a ]<br />
C-a :bufferfile<br />
<br />
L'ultima riga è '''davvero importante''' perché riattiviamo il file predefinito per lo scambio <code>/tmp/screen-exchange</code>, altrimenti utilizzando successivamente <code>Ctrl-a ></code> verrà usato <code>/etc/screenrc</code> e, sebbene non avremo i permessi per scriverci, di certo non lo vogliamo; se il file fosse un altro e ne avessimo accesso in scrittura, questo verrebbe sovrascritto. Usate questo sistema con cautela.<br />
<br />
<br />
Oltre a questo possiamo fare un dump di ciò che è contenuto nello schermo (la parte visibile del buffer) senza bisogno di scroll:<br />
Ctrl-a h<br />
<br />
Apparirà il messaggio "Screen image written to hardcopy.n"", dove '''n''' sarà il numero della finestra; il file è creato in PWD, il path da dove è stato avviato screen. Se l'opzione '''hardcopy_append on''' non è specificata, il file viene sovrascritto ad ogni utilizzo.<br />
<br />
<br />
== Configurazione ==<br />
La configurazione avviene tramite il file <code>~/.screenrc</code> o altro percorso se specificato con l'opzione '''-c'''. <br><br />
Di seguito riporto il mio di esempio con i relativi commenti, come vedete sono state sfruttate combinazioni esistenti e non per rendere piacevole e veloce l'uso quotidiano.<br />
<br />
<pre><br />
# utilizzando alcune applicazioni, come ad esempio Vim, otterremo nuovamente la visualizzazione di ciò che c'era prima<br />
# come accade normalmente in un emulatore di terminale, senza questa opzione si tornerà al prompt ma Vim o chi per lui<br />
# rimarrà nello schermo, come invece accade normalmente in una tty<br />
altscreen on<br />
<br />
# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori, se non specificato TERM sarà <br />
# uguale a ''screen'' e si avranno problemi vari; d'altro canto se usato in tty causerà altri problemi, in questo caso<br />
# uso un file di configurazione apposito<br />
term screen-256color<br />
<br />
# disabilito il flow control<br />
# nella maggior parte delle occasioni l'uso del prefisso ''def'' applica un certo comando in modo globale<br />
# controllare la manpage per i dettagli<br />
defflow off<br />
<br />
# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp<br />
deflogin on<br />
<br />
# abilito il monitoraggio di attività delle finestre<br />
(i messaggi di attività spiegati in [http://guide.debianizzati.org/index.php?title=GNU/Screen#Scorciatoie_e_messaggi])<br />
defmonitor on<br />
<br />
# la quantità di righe salvate nel buffer<br />
defscrollback 7777<br />
<br />
# UTF-8 everywhere!<br />
defutf8 on<br />
<br />
# normalmente quando un processo si blocca, screen attende che questo resusciti e nel frattempo non accetta più alcun input<br />
# pensate ad una connessione SSH che cade e il terminale non accetta più comandi, è decisamente noioso; questa opzione fa <br />
# sì che la tal finestra venga considerata bloccata dopo un secondo e si possa continuare ad usare la sessione<br />
defnonblock on<br />
<br />
# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo<br />
msgwait 1<br />
<br />
# disabilito il noioso messaggio di benvenuto in apertura<br />
startup_message off<br />
<br />
# disabilito quegli orribili flash in reverse color della visual bell<br />
vbell off<br />
<br />
# quando si usa <code>Ctrl-a h</code> appende nuovo testo al file hardcopy.n anziché sovrascriverlo<br />
hardcopy_append on<br />
<br />
# salvo la disposizione degli split per la sessione<br />
layout save fugu<br />
<br />
# se si utilizza un emulatore di terminale con falsa trasparenza, la applica alle finestre e ai programmi contenuti<br />
# (opportunatamente configurati)<br />
#defbce on<br />
<br />
# e di conseguenza la variabile d'ambiente TERM adatta<br />
#term screen-256color-bce<br />
<br />
# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a <code>Ctrl-a x</code><br />
# l'unico output visibile sarà<br />
# Screen used by skizzHG <skizzhg> on jackinthebox.<br />
# Password:<br />
idle 900 lockscreen<br />
<br />
# messaggio di attività personalizzato<br />
activity "someone is squeaking in #%n %t"<br />
<br />
# voglio che i colori del testo nel prompt, i messaggi di attività, la selezione del testo in copy mode e la barra<br />
# verticale dello split (quest'ultima solo per quanto riguarda il background, quindi nero) siano blu su campo nero<br />
sorendition Bk<br />
<br />
# l'aspetto delle barre che appaiono con uno o più split: nera, con testo blu per la finestra in focus e bianco<br />
# per quella non in focus, testo centrato<br />
caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"<br />
<br />
# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,<br />
# e foreground del terminale per le altre, ora e data<br />
# spiegarlo è troppo complicato, la sezione STRING ESCAPES del manuale spiega tutto<br />
# questo non significa sia comprensibile o semplice ma ci sono un sacco di esempi in rete dai quali prendere spunti<br />
hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"<br />
<br />
<br />
# le scorciatoie che non hanno un argomento vengono eliminate, disfiamoci di roba fastidiosa che potrebbe<br />
# chiudere, staccare, sospendere o uccidere per sbaglio<br />
bind \\<br />
bind d<br />
bind k<br />
bind K<br />
bind ^k<br />
bind z<br />
bind ^z<br />
<br />
# voglio il focus delle regioni in senso antiorario<br />
bind ^I focus up<br />
<br />
# uso i tasti solitamente associati al flow control per muovermi tra le regioni<br />
bind q focus top<br />
bind s focus bottom<br />
# avendo per esempio tre regioni, una grossa in basso e due affiancate in alto, con queste tre combinazioni<br />
# posso muovermi in due sensi; con <code>Ctrl-a TAB</code> vado in quello in alto a destra, mentre con<br />
# <code>Ctrl-a q</code> e <code>Ctrl-a s</code> mi sposto tra quello in alto a sinistra e quello in basso<br />
<br />
# ridimensionamento delle regioni<br />
bind + resize +3<br />
bind - resize -3<br />
bind = resize =<br />
bind * resize max<br />
bind / resize 79%<br />
<br />
# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso<br />
# con '''-h''' salvo l'intero buffer invece del solo schermo<br />
# c'è da notare che screen calcola come buffer l'intero ammontare di righe definite con "defscrollback"<br />
# per cui se questo non è pieno si avrà un tot di spazio vuoto all'inizio<br />
bind h hardcopy -h $HOME/Desktop/screenbuffa<br />
<br />
# se si usa <code>Ctrl-a numero</code> per spostarsi tra le finestre, di default ce ne sono solo dieci (da 0 a 9)<br />
# in questo modo creo un attivatore aggiuntivo, il punto, e aggiungo altre dieci finestre<br />
# quindi con <code>Ctrl-a . 1</code> andrò alla finestra 11<br />
bind -c xwin 0 select 10<br />
bind -c xwin 1 select 11<br />
bind -c xwin 2 select 12<br />
bind -c xwin 3 select 13<br />
bind -c xwin 4 select 14<br />
bind -c xwin 5 select 15<br />
bind -c xwin 6 select 16<br />
bind -c xwin 7 select 17<br />
bind -c xwin 8 select 18<br />
bind -c xwin 9 select 19<br />
bind . command -c xwin<br />
<br />
# i programmi che uso più spesso sono associati a comode scorciatoie<br />
# la sintassi è la stessa usabile al prompt bash, con ''screen'' dico di aprire una finestra contenente una shell<br />
# il numero indica che voglio aprirla con quel dato ordine (questione di muscle memory :)<br />
# ''-t'' e la parola che segue assegnano un titolo alla finestra, dove non c'è viene usato il nome del processo<br />
bind E screen 4 mutt -F $HOME/.config/mailman/mutt/muttrc<br />
bind H screen htop<br />
bind I screen 3 irssi<br />
bind M screen -t muzik 6 mplayer -slave -input file=$HOME/.mplayer/muzikfifo -shuffle -playlist $HOME/allmuzik<br />
bind T screen -t rTorr 7 rtorrent<br />
bind V screen 5 vim<br />
bind W screen w3m http://it.search.yahoo.com<br />
<br />
# automatizzo certe operazioni all'apertura di screen, consideratelo come il file di startup di un DE/WM<br />
# apro due shell e il file manager<br />
screen 0 bash<br />
screen 1 bash<br />
screen 2 mc -x<br />
# divido lo schermo in due regioni, quella superiore prende il focus e in essa ci apro un'altra shell<br />
split<br />
screen -t l10n 9<br />
# mi sposto nella regione in basso, la ridimensiono e in essa vi seleziono la finestra zero<br />
focus bottom<br />
resize 79%<br />
select 0<br />
</pre><br />
<br />
<br />
Dopo aver fatto modifiche al file di configurazione possiamo ricaricarlo senza chiudere la sessione:<br />
Ctrl-a :source .screenrc<br />
<br />
<br />
== Uso avanzato e riga di comando ==<br />
Come si è visto all'inizio, ci sono alcune opzioni usabili da riga di comando per controllare la sessione e inviare istruzioni anche dall'esterno, sia comandi di screen sia altri programmi. Vediamo qualche esempio.<br />
<br />
Seleziona una finestra (accetta sia numero che nome):<br />
$ screen -X select 1<br />
<br />
Rinumera finestra (-p accetta sia numero che nome):<br />
~$ screen -p 9 -X number 11<br />
<br />
Rinomina finestra:<br />
$ screen -p 9 -X title zut<br />
<br />
<br />
Il comando '''stuff''' invia una stringa come input e ci permette di eseguire comandi esterni.<br />
<br />
Esegue il comando '''ls''' (^M si ottiene con <code>ctrl-v Return</code>):<br />
$ screen -p 0 -X stuff 'ls ^M'<br />
<br />
Alternativa (utile per script o altre situazioni in cui ''^M'' non è applicabile):<br />
$ screen -p 0 -X stuff $'ls\n'<br />
<br />
<br />
Il comando '''at''' esegue un comando su più finestre.<br />
<br />
Esegue il comando '''ls''' a tutte le finestre chiamate bash:<br />
$ screen -X at bash# stuff 'ls ^M'<br />
<br />
Esegue il comando '''ls''' a tutte le finestre chiamate bash e alla finestra l10n:<br />
$ screen -X eval 'at bash# stuff "ls ^M"' 'at l10n# stuff "ls ^M"'<br />
<br />
Esegue il comando '''ls''' alle finestre zero e nove:<br />
$ screen -X eval 'at 0# stuff "ls ^M"' 'at 9# stuff "ls ^M"'<br />
<br />
Esegue il comando '''ls''' a tutte le finestre:<br />
$ screen -X at \# stuff 'ls ^M'<br />
<br />
<br />
== Risorse ==<br />
* http://dotfiles.org/.screenrc<br />
* http://aperiodic.net/screen/<br />
<br />
<br />
[[Utente:Skizzhg|skizzhg]] ven 14 ott 2011, 19.34.46, CEST<br />
----<br />
[[Categoria:Shell]]<br />
[[Categoria:Window Manager]]</div>Skizzhg