Linux下鏈結檔案使用RM無法刪除的處理辦法

2022-08-29 14:12:27 字數 2903 閱讀 3741

起原:網海拾貝

在中止u-boot啟示的時分,遇到乙個小成就。網友wanglida79前幾天剛遇到過,我事前沒有仿照出來,而今本人卻是遇上了。不外我想出認識決的辦法,只不外啟事不理解答理,概略使用方式錯誤,概略有bug。

情形描繪:

我中止u-boot移植的啟示,為了patch苟且,將原始碼的名字定名為.orig,多麼以示區分。但是名字太長,鄙人令行下操縱不太苟且,以是設法主意便是設立建立軟鏈結。

[armlinux@lqm bootloader] $ tree -l 1

.|-- patch

|-- u-boot-1.1.3

|-- u-boot-1.2.0

|-- u-boot-1.2.0.orig

|-- vivi

`-- vivi_origin

6 directories, 0 files

上面是目錄下的嚴厲資料夾。而今將原始碼鏈結為orig,將啟示部分鏈結為develop。

[armlinux@lqm bootloader] $ ln -s u-boot-1.2.0.orig/ orig

[armlinux@lqm bootloader] $ ln -s u-boot-1.2.0 develop

[armlinux@lqm bootloader] $ ls

develop orig patch u-boot-1.1.3 u-boot-1.2.0 u-boot-1.2.0.orig vivi vivi_origin

如上。而今想要刪除develop和orig。泛起不測形態:

[armlinux@lqm bootloader] $ rm develop/

rm: cannot remove `develop/': not a directory

[armlinux@lqm bootloader] $ rm -f develop/

rm: cannot remove `develop/': not a directory

[armlinux@lqm bootloader] $ unlink develop/

unlink: cannot unlink `develop/

看來刪不失。刪除orig也異樣如此。轉念又檢驗測驗了使用find來刪除:

[armlinux@lqm bootloader] $ find . -type l | xargs rm -f

[armlinux@lqm bootloader] $ ls

patch u-boot-1.1.3 u-boot-1.2.0 u-boot-1.2.0.orig vivi vivi_origin

看來可以成功。

情形闡發與處理:

上面提供的find and xargs的刪除方式可以完成。但是只用rm為什麼不克不及刪除呢。我想應該是使用的方式上有成就,必需查閱rm和ln的用法。顛末man查閱,ln的使用和rm的使用並沒有成就。****了前面的設法主意,我想從rm間接刪除和find刪除的差異入手找到啟事。

[armlinux@lqm bootloader] $ find . -type l

./develop

./orig

看來啟事找到了。我內使用rm的時分總是風氣使用tab鍵補全下令,但是tab補全下令的時分,末了因而「/」末端的。很大白的啟事,rm也好,unlink也好,並不克不及很好的處理處罰這種形態,這算是一處bug。我在前面寫shell腳原來完成autozip時的時分,本人遇到過這個成就,採取了awk處理。原有的指令碼如下:

上面的get_target便是對這個形態的處理處罰。不外沒有想到rm也無法處理處罰這種形態,要曉得,使用tab鍵前進功效是每每用的本領啊。

找到了bug,還沒有看rm的源**,卻是可以使用上面的指令碼的思緒來處理這個小bug。寫了乙個指令碼rmlink,如下:

測試:[armlinux@lqm bootloader] $ ls

develop orig patch u-boot-1.1.3 u-boot-1.2.0 u-boot-1.2.0.orig vivi vivi_origin

[armlinux@lqm bootloader] $ rmlink develop

[armlinux@lqm bootloader] $ rmlink orig

[armlinux@lqm bootloader] $ ls

patch u-boot-1.1.3 u-boot-1.2.0 u-boot-1.2.0.orig vivi vivi_origin

可見測試正常,rmlink可以正常使用。

至此,成就最終處理。

附:vmware瓦解,招致體恤查閱磁碟空間和檔案鉅細。而今附幾個常用的小下令,備查閱。

·反省檔案的鉅細

[armlinux@lqm bootloader] $ ls -hl

假定只想看到鉅細,而不盼願看到其他資訊,可以使用上面的下令:

[armlinux@lqm bootloader] $ ls -hl | awk ''

·反省單個目錄占用空間的鉅細

[armlinux@lqm bootloader] $ du -hs u-boot-1.2.0

71m u-boot-1.2.0

·反省磁碟剩餘空間的鉅細

[armlinux@lqm bootloader] $ df -hl

關於選項-h,在ls等等的下令中都有,詳細的寄義是分比方的,如下:

-h, --human-readable

with -l, print sizes in human readable format (e.g., 1k 234m 2g)

linux下rm命令使用詳解

linux下rm命令使用詳解 linux下rm 命令使用 詳解 linux刪除檔案或目錄命令 使用者可以用rm命令刪除不需要的檔案。該命令的功能為刪除乙個目錄中的乙個或多個檔案或目錄,它也可以將某個目錄及其下的所有檔案及子目錄均刪除。對於鏈結檔案,只是斷開了鏈結,原檔案保持不變。d director...

Linux下使用rm刪除檔案,並排除指定檔案

刪除全部檔案,保留1.txt find grep v 1.txt xargs rm 特別注意grep的 v引數,v引數表示反選,比如我們上面指定了 v 1.txt,即排除掉1.txt,選中其他全部檔案。所以這樣執行之後1.txt就被排除了 刪除全部檔案,保留1.txt和2.txt,特別注意grep的...

linux下的檔案鏈結

檔案鏈結,ln s sourcefile targetfile 加上 s為符號鏈結 符號鏈結下,targetfile相當於快捷方式檔案,sourcefile為原始檔 用ls l來檢視,會看到 targetfile sourcefile 符號鏈結類似於win下的快捷方式 鏈結有兩種,一種被稱為硬鏈結 ...