Raspberry-Pi

rm 萬用字元不適用於 Raspberry Pi 作業系統

  • September 6, 2022

我有以下目錄列表:

 0 -rw-r--r-- 1 root root      0 Sep  2 15:19 aws.greengrass.LambdaLauncher.log
 0 -rw-r--r-- 1 root root      0 Sep  2 15:19 aws.greengrass.LambdaRuntimes.log
 0 -rw-r--r-- 1 root root      0 Sep  2 14:53 aws.greengrass.Nucleus.log
80 -rw-r--r-- 1 root root  75017 Sep  2 15:55 greengrass_2022_09_02_15_0.log
40 -rw-r--r-- 1 root root  36930 Sep  2 16:50 greengrass_2022_09_02_16_0.log
216 -rw-r--r-- 1 root root 217065 Sep  2 20:40 greengrass_2022_09_02_20_0.log
96 -rw-r--r-- 1 root root  92764 Sep  2 21:54 greengrass_2022_09_02_21_0.log
64 -rw-r--r-- 1 root root  58307 Sep  2 22:57 greengrass_2022_09_02_22_0.log
48 -rw-r--r-- 1 root root  46475 Sep  6 14:37 greengrass_2022_09_06_14_0.log
16 -rw-r--r-- 1 root root  14845 Sep  6 17:57 greengrass_2022_09_06_17_0.log
40 -rw-r--r-- 1 root root  39037 Sep  6 18:11 greengrass_2022_09_06_18_0.log
184 -rw-r--r-- 1 root root 186318 Sep  6 19:48 greengrass_2022_09_06_19_0.log
12 -rw-r--r-- 1 root root  10793 Sep  6 20:25 greengrass_2022_09_06_20_0.log
124 -rw-r--r-- 1 root root 122363 Sep  6 21:43 greengrass.log

我想刪除任何名稱以 greengrass 開頭的文件。我已經嘗試過這些萬用字元命令,但它們都不起作用:

sudo rm /greengrass/v2/logs/greengrass*.*
sudo rm /greengrass/v2/logs/greengrass*
sudo rm /greengrass/v2/logs/greengrass*.log

我得到:

rm: cannot remove '/greengrass/v2/logs/greengrass*.*': No such file or directory

正在發生的一切都是關於全球擴張的。

當你執行時:

sudo rm dir/*

執行 sudo 的 shell 會嘗試擴展“*”萬用字元。如果它無法讀取目錄,則將萬用字元按原樣傳遞給 sudo。

sudo 執行rmdir/*rm 不做全域擴展,只有 shell 做。rm 正在尋找一個名為的文件,該文件*是一個合法(但不尋常的)文件名。

如果執行 sudo 的使用者可以讀取該目錄,那麼 acutall sudo 命令將是:

sudo rm dir/filea dir/fileb dir/filec

這會奏效的。由於您希望 root 進行全域擴展,因此您需要使用 shell,如下所示

sudo sh -c "rm dir/*"

然後 sudo 將以 root 身份執行一個 shell,它將執行命令“rm dir/*”,因為 shell 了解如何擴展 glob,然後它將變成“rm dir/filea dir/fileb …”

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