Rename

如何將文件重命名為 ..(點點)?

  • June 14, 2021

顯然您可以將文件重命名為....

如果我瘋了,我將如何將文件重命名為..or .?這樣的文件名甚至允許嗎?

反斜杠似乎並沒有禁用點的特殊含義:

$ mv test \.
mv: `test' and `./test' are the same file

..並不特別,只是它已經存在。

在 Unix、Dos 和 MS-Windows 上,每個目錄都有一個.連結回自身的目錄和一個..連結到其父目錄的目錄(如果是根目錄,則為自身)。

如果...是特殊的,那隻是因為你不能刪除它們,或者重命名它們(實際上你可以刪除它們,你只需刪除包含它們的目錄)。

因此,您不能命名任何(其他)文件....

但是你可以創建文件..., \, , ..(注意後面有一個空格..,但是你在這裡幾乎看不到它,或者在你的目錄列表中很容易看到它)或者你喜歡的任何其他名稱;唯一的保留字元是/(警告 - 高級詳細資訊:null,null 是一個特殊字元,除了標記事物的結束,有時用作分隔符之外,不用於任何用途)。.沒有特殊含義:不是文件名、核心或shell,不需要轉義。實際上,如果文件名以 a 開頭,.那麼它是特殊的,該文件通常會被目錄列表工具(例如ls)隱藏,但它仍然不需要轉義。

在旁邊

ls這種隱藏文件行為出現在作者想要隱藏的早期實現中...因此他們編寫了程式碼來隱藏任何以 . 開頭的文件.。其他使用者注意到此錯誤/功能並開始創建以 a 開頭.的文件,當時他們希望隱藏文件。

連結問題的解釋

在您連結到提問者的問題中,試圖將文件移動到父目錄..但最終重命名為...,預設情況下,以點開頭的文件是隱藏的,這就是他們找不到它的原因。

在表單中使用 mv 時mv a b

  • 如果你移動到.它實際上是一個無操作,但mv將它視為一個錯誤。
  • 如果移動到..它將文件移動到父目錄。

您不能將文件重命名為...因為所有目錄都已包含這兩個名稱的條目。(這些條目指向目錄,您不能將文件重命名為目錄。)

mv檢測目標是現有目錄的情況,並將其解釋為將文件移動到該目錄的請求(使用其目前名稱)。

反斜杠與此無關,因為.它不是 shell 元字元。 \..相同bash

引用自:https://unix.stackexchange.com/questions/148563