Karena karakter tersebut kemungkinan adalah karakter internasional, mereka kemungkinan muncul sebagai kode kontrol dalam rangkaian karakter en_US Anda, itulah sebabnya ls menunjukkannya sebagai tanda tanya.
Ini mungkin karena pilihan distribusi Anda untuk alias secara default di profil global. Sebagai contoh:
alias ls='ls -q'
Anda dapat melihat apakah distribusi Anda telah melakukannya dengan mengetikkan ke shell Anda:
alias ls
Yang akan mencetak sesuatu seperti berikut:
$ alias ls
alias ls='ls --color=auto'
Halaman yang tertaut di bawah ini menunjukkan bahwa jika Anda melakukan "ls -b", Anda akan melihat kode kontrol oktal sehingga Anda tahu setidaknya karakter apa yang digunakan.
http://www.arsc.edu/arsc/support/howtos/nonprintingchars/
Dengan asumsi itu tidak berhasil, Anda memiliki pilihan lain yang juga disebutkan lebih dekat ke bawah:
Alat yang saya tidak sadari sampai sekarang bernama OctalDump (di Debian - / usr / bin / od)
$ ls | od -b
Akan menunjukkan kepada Anda bentuk oktal dari kode kontrol.
$ ls | od -c
Akan menampilkan karakter termasuk ruang kosong tambahan tersembunyi yang mungkin ada di akhir (perhatikan spasi tambahan di akhir dalam contohnya)
Setelah Anda tahu karakter kontrol apa yang sedang dimainkan dan apakah ada spasi kosong tambahan, Anda mungkin dapat menemukan cara untuk melakukan cd ke direktori dengan keluar dari karakter kontrol. Jika gagal, Anda memiliki beberapa opsi untuk mengganti nama direktori.
Halaman di atas juga, dengan mudah, memiliki metode cepat dan kotor untuk menghapus karakter kontrol melalui perintah mv, yang saya pikir akan berhasil, selama Anda DO melarikan diri dari ruang, tetapi DONT lolos dari tanda tanya (sehingga membuat mereka karakter tunggal wildcard), dan selama tidak ada lagi yang ada di direktori di mana direktori jahat ini berada. Alasan untuk persyaratan eksplisit ini adalah karena Anda hanya menggunakan karakter wildcard dan satu ruang, dan karenanya Anda tidak ingin wildcard secara tidak sengaja cocok dengan file atau direktori lain.
Jika metode di atas tidak berhasil, Anda hampir pasti dapat menggunakan metode temukan yang disebutkan oleh respons lain, dengan cara yang berbeda. Daripada mencoba untuk cd ke direktori menggunakan nomor inode, yang adalah apa yang Anda katakan telah Anda coba, Anda dapat mengganti nama menggunakan nomor inode. Pastikan untuk menyalin seluruh rangkaian 3 baris untuk satu perintah dari halaman di atas (ganti bagian "nama yang diinginkan" dengan nama sebenarnya yang ingin Anda ganti namanya).
Setelah direktori diganti nama, maka Anda harus dapat mengaksesnya. Saya hanya bisa berharap bahwa itu juga tidak berisi file dengan kode kontrol dalam nama, atau Anda harus membilas dan mengulangi untuk setiap file (dan / atau subdirektori) di direktori yang baru saja Anda ganti namanya, pada titik mana untuk loop akan mungkin lebih bijak untuk hanya memberi nama setiap file sebagai angka, dengan menambahkan dari 1. :-)
cd */
mungkin bekerja.*
harus memperluas deskripsi shell dari direktori, dancd
mengabaikan argumen tambahan. Cara lain mungkin dengan menggunakan manajer file grafis (termasuk MC berbasis terminal) atau navigator pohon file bawaan di misalnya Vim. Anda juga dapat bereksperimen dengan-exec
beralih kefind, not with
cd` secara langsung (yang merupakan built-in shell) tetapi denganls
alat eg dan lainnya.