Tampaknya Anda dapat mengubah nama file menjadi...
.
Jika saya gila, bagaimana saya mengganti nama file menjadi ..
atau .
? Apakah nama file seperti itu bahkan diizinkan?
Backslash tampaknya tidak menonaktifkan makna khusus dot:
$ mv test \.
mv: `test' and `./test' are the same file
.
dan..
sudah ada. Dan dot tidak memiliki arti khusus..
atau..
dari Windows ke eksternalFAT
atauNTFS
media, kemudian mencoba untuk me-mount itu ke sistem berbasis Unix. Hm ....
dan..
benar - benar ada di NTFS dan NT API atau jika mereka hanya ditambahkan oleh Win32 API. Saya tahu bahwa ada beberapa perbedaan antara NT API tingkat lebih rendah dan Win32, misalnya Win32 menyembunyikan beberapa file dari root drive.Jawaban:
..
tidak spesial, hanya saja sudah ada.Pada Unix, Dos, dan MS-Windows setiap direktori memiliki direktori
.
yang ditautkan kembali ke dirinya sendiri, dan direktori..
yang ditautkan ke direktori induknya (atau self jika direktori root).Jika
..
dan.
istimewa itu hanya karena Anda tidak dapat menghapusnya (sebenarnya Anda bisa, Anda cukup menghapus direktori yang berisi mereka).Karenanya Anda tidak dapat memberi nama file (lainnya)
.
atau..
.Namun Anda dapat membuat file
...
,\
,…
,..
(catatan ada ruang setelah..
, tetapi Anda tidak bisa melihatnya di sini, atau dengan mudah di dalam kamu daftar direktori) atau nama lain yang Anda seperti; Satu- satunya karakter yang dilindungi undang-undang adalah/
(Peringatan - perincian lanjut: dan null, null adalah karakter khusus, tidak digunakan untuk apa pun kecuali untuk menandai bagian akhir dan terkadang sebagai pemisah)..
tidak memiliki arti khusus: tidak untuk mengajukan nama, kernel atau ke shell, tidak perlu melarikan diri. Sebenarnya jika nama file dimulai dengan.
maka itu khusus, file tersebut biasanya disembunyikan, tetapi tetap saja tidak perlu melarikan diri.Ke samping
Perilaku file tersembunyi ini muncul dalam implementasi awal di
ls
mana penulis ingin menyembunyikan.
dan..
, jadi mereka menulis kode untuk menyembunyikan file yang dimulai dengan a.
. Pengguna lain memperhatikan bug / fitur ini dan mulai membuat file dimulai dengan.
ketika mereka ingin file tersebut disembunyikan.Penjelasan pertanyaan Linked
Dalam pertanyaan yang Anda tautkan ke penanya mencoba untuk memindahkan file ke direktori induk
..
tetapi akhirnya berganti nama menjadi...
, file yang dimulai dengan titik secara default disembunyikan, itu sebabnya mereka tidak dapat menemukannya.Saat menggunakan mv dalam formulir
mv a b
.
sana secara efektif operasi tidak, tetapimv
memperlakukannya sebagai kesalahan...
sana akan memindahkan file ke direktori induk.sumber
If you move to . it is effectively a no operation
? Ini bukan "no op" itu adalah kesalahan jika Anda mencoba untuk memindahkan file dari A ke B ketika A dan B adalah hal yang sama. Demonstrasi yang lebih praktis dari kesalahan ini adalahmv foo ../some_dir/foo
ataumv foo some_subdir/../foo
./
dan NUL) dan nama yang dipesan (yaitu.
dan..
) dapat dibuat lebih jelas. Juga perlu ditunjukkan bahwa.
pada awal nama hanya memiliki arti khusus pada lapisan aplikasi dan tidak dalam API panggilan sistem atau kernel...
dan.
yang khusus: Anda tidak dapat memindahkan atau menghapusnya. Tetapi mereka tidak istimewa ketika memindahkan file ke mereka.Anda tidak dapat mengganti nama file menjadi
.
atau..
karena semua direktori sudah berisi entri untuk kedua nama tersebut. (Entri tersebut menunjuk ke direktori, dan Anda tidak dapat mengganti nama file ke direktori.)mv
mendeteksi kasus di mana tujuan adalah direktori yang ada, dan menafsirkannya sebagai permintaan untuk memindahkan file ke direktori itu (menggunakan nama saat ini).Backslash tidak ada hubungannya dengan ini, karena
.
bukan metacharacter shell.\.
dan.
sama denganbash
.sumber
Masalahnya adalah Anda memindahkan file ke direktori. Ini dibiarkan gagal.
Saya akan memberi tahu Anda bagaimana dulu.
mkdir pada dasarnya membaca ini (sementara saya menulis ini di sh, itu benar-benar ditulis dalam C dan setuid-root).
Jadi seperti yang Anda lihat, tidak banyak yang spesial. dan .. kecuali untuk fakta mereka diciptakan untuk Anda oleh mkdir dan sudah ada. Ada kode sekarang yang mengatakan Anda tidak dapat menghapusnya, tetapi tidak selalu demikian.
rmdir dulu terlihat seperti ini:
sumber