So che questo è un vecchio argomento, ma ho avuto lo stesso problema e volevo condividere.
Ecco la mia storia (abbi pazienza, c'è un lieto fine).
Ambiente:
kernel Gentoo 4.12.5 64 bit su reiserfs
Come è potuto succedere?
Ho diverse macchine con una cartella condivisa usando syncthing. Ad un certo punto in passato, ho rimosso un file denominato ".stfolder" e invece ho creato una directory con quel nome. Quindi forse il bug è dovuto alla sincronizzazione della sincronizzazione di questa operazione su un altro computer.
Ora esaminiamo il bug: (sto operando come root qui)
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
drw-rw---- 2 stopi syncthing 48 3 sept. 18:24 .stfolder
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
find -type f -name .stfolder
(<= no output there)
find -type f -name ".*"
./.stignore
./.stfolder
find -type f -name ".s*"
./.stignore
sembra che il file sia un fantasma, tuttavia la cartella risponde normalmente (con find)
file .*
.: directory
..: directory
.stfolder: directory
.stfolder: empty
.stignore: C source, ASCII text
file .s*
.stfolder: directory
.stignore: C source, ASCII text
Lo so, molto strano ...
rm -r .stfolder
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
rm .stfolder
rm: impossible de supprimer '.stfolder': Aucun fichier ou dossier de ce type
Non riesco a rimuovere quel file fantasma!
Ma alla fine, l'ho rimosso con successo spostandolo su un punto di montaggio tmpfs
mv .stfolder /elsewhere/
mv: impossible d'évaluer '.stfolder': Aucun fichier ou dossier de ce type
mv .* /elsewhere/
Devo dire che il bug è ancora presente su tmpfs, quindi non correlato a reiserfs:
cd /elsewhere
ls -lahd .*
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
ls -lahd .s*
ls: impossible d'accéder à '.s*': Aucun fichier ou dossier de ce type
Come puoi vedere in questo output bash, il file è presente e non presente allo stesso tempo. Grazie a questa abilità del gatto Schrödinger , possiamo creare una cartella con lo stesso nome.
Ma aspetta, c'è di più (e dovresti trovare questo ovvio): possiamo creare anche un altro file con lo stesso nome.
touch .stfolder
ls -lahdQ
total 0
drwxrwxr-x 3 root users 100 3 sept. 19:13 "."
drwxrwxrwt 18 root root 440 3 sept. 17:35 ".."
-rw-r--r-- 1 root root 0 3 sept. 19:13 ".stfolder"
-rw-r----- 1 root root 0 3 sept. 19:09 ".stfolder"
Il fantasma può essere copiato (quindi posso duplicare il bug), o manipolato da chown, chmod, ecc. L'unica limitazione è che non puoi nominarlo, quindi devi metterlo in una directory vuota e usare ". *" Come argomenti per quei comandi ... ma funziona!
Per la sua stessa natura, questo file era vuoto dall'inizio (è solo una bandiera per la sincronizzazione).
Quindi ero curioso di poter inserire alcuni dati in quel file.
E qui, la soluzione è arrivata a me:
vi .*
" ============================================================================
" Netrw Directory Listing (netrw v162)
" /elsewhere
" Sorted by name
" Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special
" ==============================================================================
../
./
.<200b>stfolder
Sì, c'è un carattere invisibile in quel file, subito dopo il punto.
Questo spiega tutto.
Grazie a Dio, non ho usato "echo test >>. *" E cat ...
.myfile
?