學校嘛,有些時候還是得逆逆上網客戶端啥的,並且學校的不少工作,這Windows的需求還是挺強的,之前Win10的體驗並不是太好,不過時隔這么久,打算從7升級到10了,恰好系統也該換了。
首先是命令行的關注,在家里使用了太久的marjaro,逐漸轉為開發,以前對windows的命令行不關注也變為關注了,PowerShell安裝了scoop,可以一鍵安裝不少工具了,但是有一個痛點就是,以前對用戶目錄不關注,但是linux用久了反而覺得用戶目錄好用挖,我想在在命令行下切到我快捷方式指向的目錄,但是是不行的,然后了解了一下這方面,就像是linux下的軟鏈接硬鏈接一樣。
使用PowerShell
軟鏈接
New-Item -ItemType SymbolicLink -Path C:\\image -Target C:\\source.txt
硬鏈接
New-Item -ItemType HardLink -Path C:\\image.txt -Target C:\\source.txt
Junction
windows中文件與文件夾是完全不同的兩種類型,創建文件夾鏈接不可以使用 HardLink
,但是可以使用 Junction
New-Item -ItemType Junction -Path C:\\test\_image -Target C:\\test\_source
雖然powershell可以建立,但是命令還是很繁瑣,cmd下有個工具mklink
使用CMD
cmd下有個好用的工具mklink
C:\\>mklink
創建符號鏈接。
MKLINK \[\[/D\] | \[/H\] |\[/J\]\] Link Target
/D 創建目錄符號鏈接。默認為文件符號鏈接。
/H 創建硬鏈接而非符號鏈接。
/J 創建目錄鏈接。
Link 指定新的符號鏈接名稱。
Target 指定新鏈接引用的路徑(絕對或相對)。
軟鏈接和硬鏈接的區別
其實這部分和linux中的是差不多的
符號(軟)鏈接(Symbolic link)
- 執行命令 mklink link_name target_name
- 創建鏈接后的圖標和快捷方式很像
- 在系統中不占用空間
- 在文件系統中不是一個單獨的文件
- 在操作系統層解析(!?)
- 如果源文件被刪除了,鏈接就沒用了
- 移除源文件不會影響符號鏈接
- 移除鏈接文件也不會影響源文件
硬鏈接(Hard link)
- 執行命令 mklink /H link_name target_name
- 在系統中占用的空間與源文件相同,但在系統中引用的是相同的對象(不是拷貝)
- 在操作系統層解析(!?)
- 圖標和創建快捷方式的圖標不同
- 移除源文件不會影響硬鏈接
- 移除硬鏈接不會影響源文件
- 如果源文件被刪除,它的內容依然通過硬鏈接存在
- 硬鏈接文件的任何更改都會影響到源文件
快捷方式有何不同
首先不說快捷方式占空間, 軟鏈接不占空間,還有我覺得很重要的區別是快捷方式帶后綴.lnk
,是個文件,無法通過路徑重定向到目標地址,反正我不太推薦這個,除非是建立到桌面方便鼠標點擊的用戶。
軟鏈接和Junction的區別
可能你會疑惑 mklink
命令參數 /D
和 /J
的區別。這里我直接貼一段我查到的東西:
-
創建
- /d 可以使用相對路徑方式創建
- /j 必須絕對路徑方式創建
此區別意義不大,建議所有的mklink目錄均用絕對路徑創建
-
復制和剪切
- 復制:/d /j 均生成源目錄的內容副本,變為一般文件夾
- 剪切/移動:
- /d 生成的目錄,移動到其他地方,仍舊保持鏈接,對源目錄無影響,/d生成的目錄消失。
- /j 生成的目錄,移動到其他地方,會產生一個新的副本文件夾,源文件夾內容全部移至新普通文件夾內,源文件夾清空,源文件夾仍舊存在,/j生成的目錄也依舊存在
-
軟件打開 用 filedialog 打開,/d生成的目錄,地址欄會跳到源目錄位置。 /J 生成的目錄,地址欄不會跳到源目錄位置。 用 FolderDialog 打開,兩者相同。
整體來說,/D 更像一個快捷方式。
符號鏈接(Symlink,Softlink)是對文件或目錄的引用,實際上符號鏈接本身是一個“記錄着所引用文件或目錄的絕對或相對路徑”的特殊文件,通過符號鏈接的操作都會被重定向到目標文件或目錄。
交接點(Junction),也稱為“再分析點”,是 NTFS 3.0 及以上文件系統(Windows 2000 及以上系統)的特性,它是鏈接本地目錄(可跨卷)的訪問點,通過交接點的操作都會被系統映射到實際的目錄上。通過建立交接點,可以在保證一個目錄實例(目錄的一致性)的前提下,允許用戶或程序從本地文件系統中的多個位置訪問此目錄。
對符號鏈接和快捷方式的“讀、寫、遍歷”等操作都會被重定向到目標文件或目錄;但對它們的“復制、刪除、移動、配置 ACL”等操作只針對自身;符號鏈接不但可以應用於本地系統,還可以應用 UNC 路徑。
對交接點內文件和子目錄的“建立、刪除、修改”等操作都被映射到對應的目錄中的文件和子目錄上;
對交接點的“復制、粘貼、剪切、配置 ACL”,只會影響此交接點;
在同一卷內移動交接點,只會影響此交接點;但在不同卷間移動交接點,會將此交接點轉換為正常目錄,並且交接點對應目錄下的所有內容都會被移動;
通過“資源瀏覽器(Explorer.exe)”和“命令行 del”等工具刪除交接點時,會同時刪除對應目錄下的所有內容(但不會刪除目錄);可通過“linkd.exe /d”安全的刪除交接點;但在 vista 及以后的系統中,對交接點的刪除會被正確的處理。
你可以自己建立這兩個后,在同卷和在不同卷間復制移動粘貼看看區別,就暫時我了解到的來說的話,我個人建議是使用/D
。