Aggiornamento Firefox 3.6.2 e problemi flash

Postato da ROb | nella categoria Linux | lunedì, 29 marzo 2010

4

Questo è il secondo post riguardo l’aggiornamento del mio Firefox.

Firefox, aggiornamento 3.6.2 e problemi Flash

Oltre ai problemi di funzionamento della VMWare remote console plugin, aggiornando il flash player alla versione 10, mi sono imbattuto nel classico problema di playback dei filmati flash all’interno delle pagine.
Il problema, ampiamente conosciuto nelle distribuzioni Linux, è relativo a un mancato link alla libreria flash installata con l’installer flash all’interno della cartella dei plugin di Firefox.

Nel caso la vostra installazione di Firefox sia nella directory /opt/firefox e il vostro flash player 10 all’interno della directory /usr/lib/adobe-flashplugin/ , per agganciare correttamente il plugin in Firefox dovete:

  • chiudere tutte le istanze di Firefox attive
  • creare un link verso la libreria flash con il comando:
    cd /opt/firefox/plugins/
    sudo ln -s /usr/lib/adobe-flashplugin/libflashplayer.so
    
  • in alcuni casi può essere necessario rimpiazzare (dopo aver fatto un opportuno backup) il file /usr/lib/flashplugin-nonfree/libflashplayer.so con il file con lo stesso nome che si trova nella directory /usr/lib/adobe-flashplugin/
  • aprire di nuovo firefox e provare una pagina con Flash embedded come la seguente: http://www.adobe.com/software/flash/about/

Spero vi possa aiutare… non lesinate commenti (sia positivi che negativi!)

Aggiornamento Firefox 3.6.2 e problemi VMWare remote console plugin

Postato da ROb | nella categoria Linux | lunedì, 29 marzo 2010

2

Qualche giorno fa, utilizzando il progetto Ubuntuzilla suggerito dall’Istituto Majorana, ho aggiornato il mio Firefox su Ubuntu 8.04 (sì lo so è un pò vecchiotta) alla versione 3.6.2.

VMWare remote console plugin

Con mia grande soddisfazione i miei 2 profili sono stati importati quasi perfettamente e quasi tutte le estensioni sono state aggiornate correttamente.
Con l’occasione ho aggiornato anche la versione del Flash Player alla 10.

Quando ho aperto la console web di VMWare Server 2 mi sono accorto però dell’impossibilità di utilizzare la console, l’errore segnalato è: “Cannot access virtual machine console. The request timed out.“. Ecco l’errore che ho ricevuto dall’interfaccia web.

Errore VMWare remote console plugin Firefox 3.6.2

Girovagando qua e là nei forum mi sono accorto di un problema di compatibilità del plugin con la versione di Firefox 3.6.X ma fortunatamente c’è un’espediente per poter aprire le console senza passare per Firefox. Si tratta in pratica di estrarre l’applicativo dal pacchetto .xpi in cui è contenuto e utilizzarlo in modalità standalone.

Ecco i passi necessari:

  • prima di tutto bisogna entrare nelle impostazioni avanzate di Firefox e abilitare il supporto a SSL versione 2 utilizzate dal server web di VMWare Server (disabilitato di default in Firefox 3.6.2). Per farlo aprite una scheda di Firefox e digitate about:config. Cercate quindi la chiave security.enable_ssl2 e cliccandoci due volte la abilitate (se già non lo fosse). Senza questa impostazione probabilmente non riuscirete neanche a vedere il pannello di login.
  • entrare nella directory: /usr/lib/vmware/webAccess/tomcat/apache-tomcat-6.0.16/webapps/ui/plugin/
  • copiare il file vmware-vmrc-linux-x86.xpi da qualche parte nel vostro PC
  • estrarlo con fileroller
  • creare un link, dove volete, all’eseguibile: plugins/vmware-vmrc
  • a questo punto eseguite il comando linkato in questo modo: vmware-vmrc -h :8333

Dopo aver fornito le corrette credenziali di accesso avrete la possibilità di scegliere la console a cui connettervi.

In attesa di un’aggiornamento del plugin stesso da parte di VMWare questa sembra essere la soluzione più comoda, a meno di non voler fare il downgrade di Firefox alla versione 3.5.

Visualizzare gli errori negli script MySQL

Postato da ROb | nella categoria MySQL | martedì, 23 marzo 2010

0

A chi sviluppa con database MySQL può capitare di incappare ogni tanto in alcuni errori all’apparenza criptici, come il seguente:

Error executing SQL commands to update table.
MySQL Error Nr. 1025
Error on rename of './dbtest/#sql-2993_a' to './dbtest/table' (errno: 150)

errori script mysql

Sia che si utilizzi la command line (il comando mysql) sia che si utilizzi un’interfaccia grafica più evoluta, come ad esempio MySQL Query Browser, spesso gli errori che MySQL riporta sull’esecuzione di script o comandi sql non vengono opportunamente descritti.

L’unico modo efficiente che ho trovato per poter visualizzare la causa esatta di tali errori è la seguente:

SHOW ENGINE INNODB STATUS;

Questo comando MySQL permette di conoscere lo stato degli indici InnoDB di MySQL (a patto ovviamente che usiate tale motore per le vostre tabelle) e di visualizzare l’ultimo errore verificatosi. Molto spesso infatti gli errori che si verificano durante la modifica di un db sono legati a vincoli o indici e quindi attraverso questo comando è possibile avere una descrizione dettagliata e decisamente esauriente rispetto al messaggio ricevuto via console o nella gui di amministrazione.

Ecco l’esempio di un output di tale comando:

mysql> SHOW ENGINE INNODB STATUS;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
=====================================
100323  8:17:40 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 45 seconds
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 576, signal count 576
Mutex spin waits 0, rounds 127, OS waits 2
RW-shared spins 31, OS waits 18; RW-excl spins 569, OS waits 556
------------------------
LATEST FOREIGN KEY ERROR
------------------------
100323  8:17:17 Error in foreign key constraint of table dbname/table:
there is no index in the table which would contain
the columns as the first columns, or the data types in the
table do not match to the ones in the referenced table
or one of the ON ... SET NULL columns is declared NOT NULL. Constraint:
,
  CONSTRAINT fk_table FOREIGN KEY (FK_ID) REFERENCES table2 (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
------------
TRANSACTIONS
------------
Trx id counter 0 6370649
Purge done for trx's n:o < 0 6370649 undo n:o < 0 0
History list length 17
Total number of lock structs in row lock hash table 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0 6370637, not started, process no 10643, OS thread id 3018464144
MySQL thread id 10, query id 5029 localhost root
---TRANSACTION 0 0, not started, process no 10643, OS thread id 3018599312
MySQL thread id 9, query id 5030 localhost root
SHOW ENGINE INNODB STATUS
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread)
I/O thread 1 state: waiting for i/o request (log thread)
I/O thread 2 state: waiting for i/o request (read thread)
I/O thread 3 state: waiting for i/o request (write thread)
Pending normal aio reads: 0, aio writes: 0,
 ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
7100 OS file reads, 119 OS file writes, 65 OS fsyncs
0.58 reads/s, 18274 avg bytes/read, 1.87 writes/s, 0.67 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2,
0 inserts, 0 merged recs, 0 merges
Hash table size 34679, used cells 1398, node heap has 3 buffer(s)
0.11 hash searches/s, 6.42 non-hash searches/s
---
LOG
---
Log sequence number 0 347867737
Log flushed up to   0 347867737
Last checkpoint at  0 347867737
0 pending log writes, 0 pending chkp writes
46 log i/o's done, 0.40 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 34357238; in additional pool allocated 1048576
Buffer pool size   512
Free buffers       0
Database pages     509
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages read 10026, created 4, written 79
0.64 reads/s, 0.09 creates/s, 1.62 writes/s
Buffer pool hit rate 987 / 1000
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
1 read views open inside InnoDB
Main thread process no. 10643, id 2990709648, state: sleeping
Number of rows inserted 8, updated 0, deleted 0, read 460381
0.18 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.18 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
 |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

L’errore sull’indice viene evidenziato nelle righe comprese tra (19-25 comprese):

------------------------
LATEST FOREIGN KEY ERROR
------------------------

e

------------
TRANSACTIONS
------------

In questo caso segnala l’impossibilità di eseguire la cancellazione di una colonna della tabella perché utilizzata all’interno di un indice, bisogna prima cancellare l’indice agganciato.

Una galleria web di effetto con jQuery e prettyPhoto

Postato da ROb | nella categoria Sviluppo web | lunedì, 22 marzo 2010

8

Grazie a jQuery e ai numerosi plugin che circondano questa libreria ora è davvero semplice e divertente realizzare gallerie web leggere e di effetto.

Galleria di immagini

Oggi voglio presentarvi la galleria che ho realizzato per il sito di Giulia sfruttando jQuery e quello che considero il migliore plugin per la realizzazione di gallerie di immagini (e non solo), prettyPhoto.

Dopo aver scaricato il pacchetto dal sito ufficiale del plugin, ho preparato un pò di foto, creando anche gli opportuni thumbnail con mogrify e ho creato una pagina html che gestisse la galleria.

La realizzazione della galleria di foto, dopo aver opportunamente preparato il codice javascript della pagina, è davvero semplice. Si tratta infatti di creare degli elementi a che puntano alle immagini ingrandite che contengono al loro interno degli elementi di tipo img che visualizzano i rispettivi thumbnail.
Gli elementi di tipo a devono essere opportunamente arricchiti da un paio di attributi. L’attributo rel dichiara l’appartenenza della galleria a un determinato gruppo di foto (in sostanza, un album) mentre l’attributo title serve per sottotitolare la foto con una caption.

Ecco il codice html per ogni singola immagine:

         <li>
            <a rel='prettyPhoto[macerata]' title="La salita delle fosse" href='images/macerata_01.jpg' >
               <img src='images/thumb/macerata_01.jpg' width='100' class='thumb' border='0' />
            </a>
         </li>

Per funzionare la pagina, come anticipato, ha anche bisogno di una dichiarazione di librerie javascript in cima alla pagina:

		<script src="http://www.google.com/jsapi" type="text/javascript"></script>
		<script type="text/javascript" charset="utf-8">
			google.load("jquery", "1.3");
		</script>
		<link rel="stylesheet" href="css/prettyPhoto.css" type="text/css" media="screen" title="prettyPhoto main stylesheet" charset="utf-8" />
		<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
		<script src="js/jquery.prettyPhoto.js" type="text/javascript" charset="utf-8"></script>

e di un’inizializzazione jQuery contestuale al termine del caricamento della pagina stessa:

		<script type="text/javascript" charset="utf-8">
		$(document).ready(function(){
			$(".gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'facebook'});
		});
		</script>

Ecco la pagina demo che ho realizzato con un pò di fotografie storiche di Macerata e alcune foto della mia labrador Mina.

Il progetto scaricabile è invece in questo link.

Il tema prettyPhoto utilizzato è “facebook”. Ricordo inoltre che prettyPhoto può anche essere utilizzato per visualizzare video, altri siti (tramite iframe) o contenuto html generico.

Invio di mail in Java

Postato da ROb | nella categoria Java | mercoledì, 17 marzo 2010

0

Qualsiasi programmatore, prima o poi, ha necessità di inviare delle mail.

In Java esistono moltissimi modi per farlo e uno di questi è utilizzando la libreria Apache Commons Email.
Le librerie Apache Commons sono state scritte per permettere a tutti i progretti Jakarta ma non solo di poter disporre di componenti, pronti all’uso, integrabili nei rispettivi progetti.
Uno di questi componenti è proprio Commons Email, utilizzabile per inviare mail in formato normale o anche html, con o senza attachment.

Utilizzare tale libreria, per chi ha un minimo di confidenza con Java, è davvero semplice.
Con 7 righe di codice è possibile inviare una mail in formato html senza allegati.
Ecco un esempio:

HtmlEmail email = new HtmlEmail();
email.setSubject("Una nuova mail per Roberto Rossi");
email.setHtmlMsg("Ecco un testo in formato <b>HTML</b><br/>");
email.setHostName("host");
email.setFrom("no-reply@bits4beats.it");
email.addTo("user@bits4beats.it");
email.send();

Se invece vogliamo spedire una mail in formato testo standard basta usare l’oggetto SimpleEmail anziché HtmlEmail e il metodo setMsg anziché setHtmlMsg, in questo modo:

SimpleEmail email = new SimpleEmail();
email.setSubject("Una nuova mail per Roberto Rossi");
email.setMsg("Ecco un testo in formato standard");
email.setHostName("host");
email.setFrom("no-reply@bits4beats.it");
email.addTo("user@bits4beats.it");
email.send();

Infine, se abbiamo la necessità di aggiungere degli allegati alla mail, nel primo caso possiamo utilizzare semplicemente il metodo attach passando come parametro un oggetto EmailAttachment costruito così:

EmailAttachment attachment = new EmailAttachment();

String filePath = "pathtofile";
attachment.setPath(filePath);
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("description for this attachment");

emailAdmin.attach(attachment);

Mentre nel secondo caso dobbiamo utilizzare il tipo di email MultiPartEmail anziché SimpleEmail per poter disporre del metodo attach utile per l’inclusione di allegati.

Decisamente comodo e potente.

Rimpiazzare stringhe all’interno di campi di tabelle MySQL

Postato da ROb | nella categoria Sviluppo web, Varie | lunedì, 15 marzo 2010

0

Se avete bisogno di cercare e rimpiazzare una stringa all’interno di un campo in una tabella di un database MySQL esiste la comodissima istruzione replace.

Ipotizziamo di avere la tabella studenti con un campo tel e di voler rimpiazzare tutte le occorrenze del prefisso 0733 con il prefisso +39 0733, ecco il comando SQL per farlo:

update studenti set tel = replace(tel, '0733', '+39 0733');

E’ importante ricordare che la ricerca del testo è case sensitive.

Ulteriori informazioni su replace le trovate nella documentazione ufficiale.

Sostituzioni di testo multilinea in un file con sed

Postato da ROb | nella categoria Linux | venerdì, 12 marzo 2010

0

Proprio ieri ho dovuto necessità di costruire uno script che mi permettesse di sostituire in un file xml n occorrenze di un certo tag con il contenuto di un altro file xml.

sostituzione sed

Probabilmente esistono mille modi diversi per farlo, come mi avete sempre insegnato con i vostri mitici commenti.
Voglio postare la soluzione che ho trovato girovagando qua e là nei vari forum e che nel mio caso ha funzionato alla perfezione sfruttando la bash e il comando sed.

Valorizziamo innanzitutto la variabile str che contiene il testo da rimpiazzare.
Sia test.xml il file che contiene la stringa da rimpiazzare e contenuto.xml il file con il testo da sostiruire nel file test.xml al posto della stringa contenuta nella variabile str, ecco il comando sed che permette di farlo:

str="<rimpiazzo\/>"
sed -e "/$str/r contenuto.xml" -e "/$str/d" test.xml

Questi sono i due file xml:

test.xml

<prova>

  <rimpiazzo/>

</prova>

contenuto.xml

   <rimpiazzo>
      ciao
   </rimpiazzo>

Prima si valorizza la variabile str con il testo da rimpiazzare (in questo caso il testo rimpiazzo) quindi si lancia il comando sed.
E’ importante notare che il testo da rimpiazzare valorizzato nella variabile str deve essere valorizzato secondo la sintassi sed quindi con l’escaping di eventuali caratteri speciali sed o di espressioni regolare. In questo caso è stato fatto l’escaping del carattere /.

Ecco l’output in console ottenuto dal comando:

<prova>

   <rimpiazzo>
      ciao
   </rimpiazzo>

</prova>

Fusione xml completata!

Firewall Builder: la protezione dei nostri server

Postato da ROb | nella categoria Linux | mercoledì, 10 marzo 2010

0

AGGIORNAMENTO: è uscita oggi la versione beta 4.0.
Moltissime le modifiche e i miglioramenti sia a livello di interfaccia utente che a livello di funzionalità “core”. Ecco la lista completa.

Per chi volesse costruire un firewall potente ma nello stesso tempo in modo facile e intuitivo, Firewall Builder è lo strumento che fa per lui.

Dal nome stesso del software, Firewall Builder attraverso un’interfaccia pulita e ordinata (mutuata dai famosi firewall CheckPoint®) permette di costruire un insieme di regole per proteggere i nostri server dagli accessi esterni (ma anche interni).
L’idea interessante, che lo contraddistingue da molti altri software con scopi analoghi, è che il software di costruzione di tali regole, cioè Firewall Builder, è indipendente dal sistema in cui tali regole vengono applicate.
In questo modo possiamo usare FW (Firewall Builder) come strumento unico per la costruzione di regole per molteplici server (o firewall).

File di regole Firewall Builder

FW non è orientato solamente ai sistemi Linux (iptables/netfilter) ma conosce numerosi dialetti e linguaggi firewall tra cui FreeBSD, MacOS X, Cisco, Solaris.
Ogni configurazione è salvata in un file con estensione .fwb e attraverso opportune credenziali FW è in grado di installare le policy generate direttamente nel sistema interessato.

Nel caso di sistemi Linux viene generato un file di regole con estensione .fw (il nome del file di solito corrisponde al nome del file di configurazione) che può essere salvato nell’host da proteggere e che può essere eseguito durante il processo di boot del sistema.
Possiamo anche permettere che FW stesso si occupi del processo di installazione e avvio di tale file di policy.
E’ importante sottolineare anche come FW permetta di rendere tale configurazione temporanea garantendoci un ripristino allo stato precedente in caso di problemi tramite un riavvio forzato.
Nel file di log generato, durante il filtraggio dei pacchetti, FW distingue ogni record tramite il numero della regola matchata (sempre che tale regola sia stata impostata per generare log). In questo modo sarà facile capire il motivo del drop del pacchetto e intervenire eventualmente sulla configurazione.

Altra nota di rilievo è la disponibilità dell’interfaccia grafica di FW in numerose piattaforme. Prima fra tutte Linux ma anche Windows e MacOS X.

FW è giunto alla versione 3.0 aggiungendo interessanti funzionalità come supporto per IPv6, numero illimitato di policy e regole NAT e alcune miglioramenti dell’interfaccia grafica.

Per ulteriori approfondimenti vi rimando al sito ufficiale del progetto.

Generatore di testo fasullo, ecco il servizio web farlo

Postato da ROb | nella categoria Sviluppo web, Utilità | mercoledì, 10 marzo 2010

3

Lipsum Generator

Quante volte nei vostri web test o nelle vostre applicazioni avete avuto il bisogno di generare del testo fasullo per riempire le vostre pagine, i campi o alcune tabelle di db?

Ecco un servizio online che lo fa per noi, anche in lingua.
Lipsum generator dà la possibilità di generare il nostro testo fasullo impostando il numero dei paragrafi o dei byte o parole da generare.

Qui sotto trovate il testo generato usando come lingua l’italiano e 10 paragrafi di testo.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent pretium tempus augue at congue. Suspendisse quis libero ligula. Donec venenatis, lectus vel vestibulum gravida, massa erat sagittis elit, non lobortis tellus velit a orci. Nulla facilisi. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin tempor egestas lectus, id consectetur augue posuere et. Vivamus nec lacus sit amet eros porttitor vulputate. Aenean tristique gravida aliquam. Duis nec commodo mi. Vestibulum vehicula ligula sit amet velit aliquam fringilla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce non est non lorem vulputate placerat. Phasellus vehicula imperdiet augue. Cras sed nunc diam, non malesuada massa.

Quisque vel condimentum mauris. Sed pretium aliquam lacus, a sodales justo aliquet sed. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse eu nulla ut urna lobortis elementum. Fusce hendrerit sodales tellus, vel mattis nisi sodales id. Vestibulum rhoncus lacus eget leo condimentum ut gravida sem feugiat. Praesent pulvinar risus convallis tellus scelerisque consectetur quis id mi. Donec nec odio eget nibh lobortis posuere. Praesent quis neque vitae dolor feugiat molestie sodales in augue. Nam erat dui, hendrerit sed consequat at, ultricies vel sem. Sed sodales, turpis vitae hendrerit convallis, libero odio elementum nunc, a suscipit leo ante quis ligula. Pellentesque hendrerit est vitae ligula eleifend molestie. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In molestie risus a odio faucibus posuere. Integer odio nisl, porta quis commodo a, commodo sed lorem. Nullam tempus neque et dui volutpat posuere.

Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi feugiat posuere lacus ac tempor. Curabitur aliquam, nulla vel luctus tincidunt, nibh turpis pulvinar mi, eget volutpat elit tellus quis dolor. Cras ultricies egestas orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent mattis, quam eget volutpat malesuada, tellus ipsum porttitor est, vel fringilla lacus nisl quis turpis. Duis a dui dolor. Praesent sodales vulputate leo ut aliquet. Quisque pretium adipiscing placerat. Praesent congue aliquam consectetur. Praesent porta nibh ornare est eleifend vulputate. Curabitur ac dignissim nisl. Mauris rutrum, sem semper vulputate tristique, purus mi pharetra libero, ut elementum est sem eget libero. Mauris a diam in nisl elementum gravida et in urna. Praesent ante neque, porttitor in varius at, blandit tempor tortor. Aliquam pulvinar fringilla est, sit amet auctor purus hendrerit et. In hac habitasse platea dictumst.

Vivamus massa turpis, tempus eget viverra et, cursus eu turpis. Aenean metus dolor, faucibus a tempus ut, condimentum in nunc. Aliquam vitae consectetur quam. Suspendisse potenti. Curabitur semper scelerisque magna, vel egestas ligula accumsan a. Integer blandit faucibus est at adipiscing. Nulla lobortis euismod nulla non egestas. Nunc imperdiet fermentum nibh, a interdum est pharetra id. Praesent a diam in massa ultrices lacinia sit amet sit amet elit. Phasellus consectetur viverra luctus. Nam et justo eu tellus scelerisque rutrum. Suspendisse potenti. Nunc porttitor nibh vitae orci adipiscing a imperdiet orci viverra. Phasellus eleifend porta lorem, sollicitudin interdum elit scelerisque eget. Integer euismod egestas nibh, quis sollicitudin enim imperdiet ut.

Nulla sit amet urna eros. Suspendisse adipiscing aliquam lorem, nec gravida sem consectetur a. Nullam metus augue, ullamcorper sit amet vestibulum in, blandit pellentesque augue. Vivamus eu consectetur lacus. Cras eu nisl eget nulla sagittis sagittis sed in dui. In mollis feugiat sapien id aliquet. Phasellus cursus malesuada congue. Fusce vel nulla ac tellus ullamcorper fermentum. Nunc pellentesque diam in magna fermentum eu ultrices metus auctor. Quisque sit amet risus ut est aliquet iaculis elementum et velit. Curabitur viverra tempus quam non dapibus. Donec eros tortor, varius sed iaculis sit amet, tincidunt ut diam. Quisque ac vulputate lectus. Donec id sem et ipsum dapibus rhoncus. Mauris ac tellus ut nulla auctor interdum vitae ut nisi. Nulla nec justo purus, sed egestas ligula. Morbi eget erat orci.

Nulla elementum neque in ligula posuere et convallis leo cursus. Pellentesque iaculis feugiat venenatis. Aliquam sapien nisl, eleifend et mattis aliquam, malesuada et lacus. Nam porttitor tellus eu neque rhoncus ultrices. Nulla facilisi. Nulla id sollicitudin est. Suspendisse condimentum tincidunt nisl, quis venenatis leo pretium eu. Curabitur ac libero neque. Integer felis nunc, vestibulum ultrices porttitor nec, ornare in arcu. Proin ac volutpat odio. Praesent eget risus vitae felis tincidunt ullamcorper. Fusce in augue vel tellus imperdiet tincidunt in quis urna. Vestibulum porttitor nibh vitae tortor faucibus faucibus.

Phasellus orci mauris, dapibus quis semper vel, vestibulum ac dui. Vivamus velit libero, egestas eget rutrum eu, venenatis id tellus. Nulla facilisi. Mauris in lectus vitae mauris molestie convallis. Curabitur nisi lectus, feugiat eget rhoncus eget, dictum at tellus. Cras purus eros, malesuada id elementum eu, varius sed ligula. Sed consectetur blandit libero, eget viverra enim tincidunt at. Donec id sem vel ante condimentum sodales id ut nulla. Vestibulum quis tortor quam, ac consectetur tellus. Donec suscipit neque a leo suscipit interdum. Duis sed justo massa. Phasellus rhoncus vehicula elit, eu vulputate augue egestas et. In ac quam nulla.

Duis tellus erat, vestibulum ut vestibulum ac, molestie eu purus. Praesent vel quam nec neque feugiat venenatis quis vitae libero. Proin ac lectus erat. Nulla porta, orci ut fermentum ullamcorper, leo ipsum vehicula erat, placerat iaculis eros nisl vitae sem. Donec lacinia massa vitae erat dignissim pellentesque. Fusce sit amet sapien a turpis hendrerit convallis in nec leo. Cras facilisis dignissim enim a imperdiet. Mauris nisi ante, ultricies a commodo ut, elementum ac nisl. Mauris venenatis vestibulum nulla a pulvinar. Duis vel nisi at turpis condimentum dictum eget eu sapien. Fusce eget semper ligula. Vestibulum congue rutrum placerat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tellus leo, ultricies vel gravida ac, volutpat non orci. Curabitur bibendum arcu ut augue tempus sed vulputate lorem dapibus. Aenean porttitor rhoncus ante rutrum rhoncus. Donec ac sem orci, at tempor nunc. Donec eleifend elit ac libero ultricies non ultricies mi hendrerit. Suspendisse vitae lacus ac enim euismod commodo. Praesent euismod velit id diam suscipit euismod.

Donec gravida urna vel ligula lacinia et auctor lacus laoreet. Etiam feugiat est eget erat molestie vel adipiscing nulla cursus. Proin feugiat, risus sit amet blandit mattis, leo urna sodales neque, vel commodo leo arcu at erat. Pellentesque ut ligula eu tellus pretium convallis. Vivamus euismod libero sit amet eros suscipit sollicitudin. Nullam bibendum convallis dolor a luctus. Pellentesque sed dolor diam, vel scelerisque purus. Aliquam consequat imperdiet euismod. Suspendisse dolor tellus, viverra sit amet porta nec, venenatis ac lacus. Maecenas imperdiet magna sit amet magna interdum sit amet facilisis urna aliquam. Phasellus eu metus quis orci ultricies pretium eu sit amet tellus. Nulla dignissim arcu ut magna varius convallis. Aliquam consequat congue augue nec blandit. Phasellus condimentum convallis accumsan. Nunc varius ipsum vel mi faucibus porta. Nulla lacinia sem vel neque fringilla a interdum purus sollicitudin. Duis nec arcu nisl, scelerisque aliquet odio. Nulla velit neque, tincidunt ac posuere sit amet, elementum vitae lorem. Etiam ullamcorper leo ac nulla venenatis egestas. Morbi turpis ante, tempor dictum consectetur non, auctor sit amet est.

Aenean quis sem neque. Nullam a tellus nisi. Morbi sit amet orci eros, volutpat commodo enim. Sed ullamcorper arcu vel nunc aliquam feugiat. Vestibulum ut augue in nibh lacinia mollis. Nam sit amet lorem dolor, id molestie odio. Aliquam pulvinar mi vitae enim tincidunt et aliquam mi ullamcorper. Praesent et nibh leo. Morbi id ante quis sapien fermentum feugiat eu feugiat justo. Sed posuere, mi et posuere lobortis, felis libero auctor mauris, in ornare eros elit a eros. Quisque laoreet ullamcorper interdum.

Rimuovere i file che iniziano con il trattino

Postato da ROb | nella categoria Linux | martedì, 9 marzo 2010

3

File con trattino

Mi è capitato spesso di creare inavvertitamente dei file che iniziano con il trattino.
Quando ho provato a cancellarli o semplicemente a farne il listing i comandi bash tradizionali mi davano errore.

Facciamo infatti questa prova. Creiamo nella directory /tmp due file con il trattino in questo modo (digitate anche il carattere “>“):

cd /tmp/
> '-foo.txt'
> '--bar.txt'

A questo punto se provate a farne il listing in questo modo modo resterete sorpresi:

ls -l *.txt
ls: unrecognized option '--bar.txt'
Try `ls --help' for more information.

Esiste però un’opzione importante di molti comandi bash che ci viene in aiuto e delimita la lista delle opzioni dei comandi stessi. Quest’opzione è ““.
Se infatti proviamo il seguente comando i file “speciali” verranno listati correttamente:

ls -l -- *.txt

In pratica senza specificare quest’opzione i comandi espandono la lista dei file e interpretano quelli che iniziano con il trattino come se fossero delle opzioni del comando stesso. Sfruttando invece l’opzione speciale “–” il comando conosce esattamente dove termina la lista delle opzioni specificate dall’utente.

Tale logica è applicabile anche per molti altri comandi quali: rm, mv e cp. In generale la regola è:

comando opzioni -- '--filename'

L’articolo originale che tratta questo problema lo trovate su NixCraft.