Newsgroup: it.comp.os.linux.iniziare
Titolo: cancellare files con nomi particolari

Preso dalla disperazione di non riuscire in alcun modo a cancellare con 
i normali comandi rm e unlink file i cui nomi contengono alcuni 
metacaratteri mi sono scritto un programmino C che chiama la systemcall 
unlink sul nome del file passato come parametro e questo ha funzionato 
per i filename che cominciano con -, che non sono riuscito a cancellare 
  altrimenti in alcun modo, neanche racchiudendo il nome tra '', che 
evita alla shell di interpretare alcunché. Mi sono trovato un file 
chiamato ?????? e non sono riuscito a cancellarlo né usando sequenze di 
escape, né "" né '' e neanche con il piccolo applicativo di cui sopra. 
Neanche modificando il programma in modo che il nome del file lo legga 
con una scanf una volta avviato il programma!!!

 chiamato ?????? e non sono riuscito a cancellarlo né usando sequenze di
]zac[
????
touch "????"
ls -al | grep "?"
-rw-rw-r--  1 gdb  gdb        0 15 lug 15:52 ????
rm \?\?\?\?
ls -alt |grep "?"

 touch "????"
Vi sfugge che al 99%, quei punti interrogativi NON sono punti
interrogativi, ma caratteri non stampabili.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 interrogativi, ma caratteri non stampabili.
si, ma
rm -i -- ??????
eliminerà anche quelli (però eliminerà qualsiasi cosa che abbia sei
caratteri, quindi conviene usare -i). O sbaglio e la regola non vale se
i caratteri non sono stampabili?
Saludos
Adriano

 i caratteri non sono stampabili?
E' che non e' detto che siano sei.
Una volta che entri nell'interpretazione a video di caratteri fuori dal
set previsto, non puoi sapere se ci sono caratteri intermedi che non
vengono proprio rappresentati.
Puo' provare con mc, a me ha tolto alcuni file con nomi strani.
Altrimenti, diskedit  o cercare di trovarne l'i-node e poi delinkare
quello.
http://www.pluto.it/files/ildp/guide/abs/moreadv.html
Esempi 12.3 e 12.4


 quello.
Beh, si, ma siamo arrivati molto lontano dalla domanda iniziale, che
chiedeva esplicitamente per un file chiamato "??????". Ovviamente roba
più complicata sarà più difficile da togliere. A volte la GUI è il
miglior modo, non ci piove. Peccato che sia improponibile per un
server.
Saludos
Adriano

 server.
rm --help credo sia proponibile per un server
[..]
To remove a file whose name starts with a
`-', for example `-foo', use one of these commands:
  rm -- -foo
  rm ./-foo
[..]
Pertanto rm ./??????

 Pertanto rm ./??????
... E leggere l'altro post in cui offrivo rm --? Le leggo anch'io le
pagine del manuale.
Saludos
Adriano

 interrogativi, ma caratteri non stampabili.
In effetti è plausibile in quanto il file è stato generato da un 
programma che stavo scrivendo per esercitarmi che doveva leggere il nome 
del file stesso da una pipe, ma c'erano errori di lettura dovuti a 
variabili non inizializzate nel processo che mandava il nome del file.
Da shell nessuna speranza quindi. Comunque ho eliminato l'intera directory.

 Le leggo anch'io le pagine del manuale.
Era una esortazione generica.

 interrogativi, ma caratteri non stampabili.
Ipotesi interessante.
Quindi rimangono solo poche soluzioni:
- rimozione della directory che contiene il file
- usare rm -i * e confermare solo sul file non stampabile
- usare ls -i, segnare il numero di inode, e usare find con l'opzione  -inum
in modo da agire (opzione -exec ) solo su quel file.

 Ipotesi interessante.
]zac[
Un'aggiunta curiosa:
touch ^M 
ls -alt 
drwx------ 51 gdb  gdb     4096 16 lug 17:19 .
-rw-rw-r--  1 gdb  gdb        0 16 lug 17:19 ?
-rw-------  1 gdb  gdb       75 16 lug 17:18 .lesshst
-rw-------  1 gdb  gdb     7441 16 lug 16:53 .viminfo
]zac[
rm "?"
rm: impossibile rimuovere `?': No such file or directory
rm ? e dopo aver premuto tab è diventato rm ^M 
o ancora
rm e dopo aver premuto tab
^M                           .fonts/                      .local/                      .serverauth.2817
]zac[
e poi
rm ?
ls -alt
drwx------ 52 gdb  gdb     4096 16 lug 17:29 .
-rw-------  1 gdb  gdb     7288 16 lug 17:27 .viminfo
-rw-------  1 gdb  gdb       72 16 lug 17:26 .lesshst
Quindi in realtà anche i file non stampabili (almeno quelli che ho provato) 
sono facilmente 'maneggiabili'.

 server.
Gui?
Chi ha nominato la GUI?
mc e' a caratteri
diskedit
ls -i anche.
find pure
Ne approfittavo per fare anche un pelino di didattica, per rinfrescare
il concetto di inode e di link dei contenuti.


 il concetto di inode e di link dei contenuti.
E infatti ne sono avvantaggiato anch'io.
Saludos
Adriano