Bagaimana Anda membuat file dengan nama kosong?

9

Saya tidak tahu caranya, tetapi saya membuat file dengan nama file kosong, saya ragu ada spasi putih di sana (saya akan menjelaskan mengapa pada akhirnya):

chaouche@karabeela /mnt/ubuntu/storage $ ls
total 352K
drwx------  3 chaouche chaouche 4.0K Feb 12 11:00
drwxr-xr-x  4 chaouche chaouche 4.0K Apr 14 23:13 AUDIO
drwxr-xr-x  5 chaouche chaouche 4.0K Jul 20 22:25 BACKUPS
-rw-r--r--  1 chaouche chaouche 310K Jun 15 13:00 cv_yassine_chaouche_2012.pdf
drwxr-xr-x  2 chaouche chaouche 4.0K Jun 10 22:16 Mageia-3-i586-DVD
drwxr-xr-x  5 chaouche     1001 4.0K Oct 12  2012 MUSIQUE
drwxr-xr-x 15 chaouche chaouche 4.0K Oct 27  2012 PARISVIII
drwxr-xr-x  6 chaouche chaouche 4.0K Jun 12 18:33 SABAYON
drwxr-xr-x  5 chaouche chaouche 4.0K Jun 15 13:23 SIFTECH
drwxr-xr-x  5 chaouche chaouche 4.0K Feb  6 15:11 TOILES
drwxr-xr-x  4 chaouche chaouche 4.0K Jul 17 17:21 VIDEOS
chaouche@karabeela /mnt/ubuntu/storage $

Saya bertanya pada #linux bagaimana cara menghapus file dan seseorang menyarankan agar saya memindahkan semua file lainnya kemudian menggunakan penyelesaian tab, yang memberikan perilaku yang sangat menarik:

# with tab completion
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 45M
-rwxr-xr-x  1 chaouche chaouche  34M Jan 16  2013 inkscape-0.48.4-1-win32.exe
-rwxr-xr-x  1 chaouche chaouche 8.6M Feb  4 11:42 mypaint-1.0.0-win32-installer.exe
-rwxr-xr-x  1 chaouche chaouche 2.7M Jan 17  2013 pdftkb_setup.exe

# without tab completion, wrote "/" by hand
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 212K
-rw-r--r--   1 root root    0 Apr 15  2012 1
drwxr-xr-x   2 root root 4.0K Dec  9  2012 bin
drwxr-xr-x   3 root root 4.0K Jun 15 12:10 boot
-rw-------   1 root root  74K Jul  1  2011 dead.letter
drwxr-xr-x  19 root root 4.2K Jul 20 20:14 dev
drwxr-xr-x 117 root root  12K Jul 20 21:30 etc
drwxr-xr-x   4 root root 4.0K Jun 12 18:40 home
drwxr-xr-x   2 root root 4.0K Jun  8  2011 initrd
drwxr-xr-x  20 root root  12K Dec  9  2012 lib
drwx------   2 root root  16K Jun  7  2011 lost+found
drwxr-xr-x   4 root root 4.0K Jul  3 01:56 media
drwxr-xr-x   9 root root 4.0K Apr 15 00:06 mnt
drwxr-xr-x   8 root root 4.0K Jun 30 23:19 opt
dr-xr-xr-x 198 root root    0 Jun 15 13:10 proc
drwxr-x---  28 root root 4.0K Jul 20 21:42 root
drwxr-xr-x   2 root root  12K Dec  9  2012 sbin
drwxr-xr-x   2 root root 4.0K Apr  3  2011 srv
drwxr-xr-x  12 root root    0 Jun 15 13:10 sys
-rw-r--r--   1 root root    0 Jun 12 18:40 thisismageia
drwxrwxrwt  69 root root  36K Jul 20 22:04 tmp
drwxr-xr-x  14 root root 4.0K Nov  6  2011 usr
drwxr-xr-x  18 root root 4.0K Jul  2  2011 var
chaouche@karabeela /mnt/ubuntu/storage $

Jika ada spasi putih dalam nama file itu akan diganti oleh \ "" ketika saya menekan tombol tab, tetapi tidak.

ychaouche
sumber
5
Itu direktori bukan file yang ternyata menampung tiga file.
Bananguin
2
Dengan asumsi Anda masih menyimpan direktori di mana Anda memindahkan semuanya tetapi file kosong, apa yang terjadi kapan file *?
Joseph R.
Tidak sayangnya saya mengganti nama file dengan perintah mv.
ychaouche
4
Kemungkinan duplikat File dengan nama kosong
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
2
Pertanyaan ini bukan duplikat dari pertanyaan itu.  Pertanyaan ini adalah tentang teknik praktis untuk menangani file (atau direktori) yang dibuat secara tidak sengaja yang namanya tidak mengandung karakter pencetakan.  Pertanyaan lain itu adalah diskusi teoretis, hipotetis, bertele-tele tentang cara-cara Anda dapat membuat file seperti itu jika Anda mau, dan tidak mengatakan apa-apa tentang berurusan dengan akibatnya.
G-Man Mengatakan 'Reinstate Monica'

Jawaban:

14

Tidak mungkin memiliki file dengan nama kosong. Apa yang Anda miliki adalah file yang namanya seluruhnya terdiri dari karakter kosong atau tidak dapat dicetak.

Untuk melihat apa nama file itu, jalankan LC_CTYPE=C ls -b. Ini menggantikan semua karakter kosong atau tidak dapat dicetak dengan lolos oktal. Sebagai contoh, file yang namanya ruang nol-lebar tunggal akan terdaftar sebagai \342\200\213.

Anda dapat mengisolasi file ini dengan glob yang mengecualikan file dengan nama yang bagus. Misalnya, Anda dapat mencoba membuat daftar file yang namanya tidak dimulai dengan huruf.

chaouche@karabeela /mnt/ubuntu/storage $ ls -d [^A-Za-z]*

Jangan lupa opsi -d, sehingga lsdaftar direktori itu sendiri dan bukan isinya.

Anda harus mengganti nama file untuk memiliki nama yang masuk akal. Anda bisa mengandalkan penyelesaian shell Anda, atau menggunakan bola yang hanya cocok dengan file ini.

mv [^A-Za-z]* windows-programs
Gilles 'SANGAT berhenti menjadi jahat'
sumber
5

Itu bisa berupa direktori dengan hanya spasi atau karakter non-cetak dalam namanya. Selain itu, tampaknya hanya ada satu entri di dalamnya, selain '.' dan '..', itulah sebabnya Anda melihat '3' di kolom kedua dari output perintah pertama Anda. Anda selalu bisa menggunakan statuntuk mencetak nama direktori, dengan: stat -f "'%N'" *. Jika tidak dapat dicetak, Anda mungkin harus memasukkannya ke dalam cat -vatau od -cuntuk melihat apa itu sebenarnya.

Untuk menghapusnya, Anda mungkin harus menjalankan rmdir -- 'dirname'(ganti 'dirname' dengan nama direktori. Anda mungkin perlu menggunakan gumpalan jika memiliki nama yang tidak diinginkan di dalamnya), meskipun seperti yang saya katakan sebelumnya, tampaknya memiliki isi sehingga Anda Anda harus turun ke direktori itu dengan cd -- 'dirname'dan memeriksa isinya.

Saya akan menyarankan Anda menghindari penggunaan rm -rfdi semua biaya, karena masalah penamaan direktori mudah kacau.

jsbillings
sumber