Nie możesz, ponieważ użytkownik tworzący katalog ma wystarczające uprawnienia do zapisu w katalogu nadrzędnym.
Zamiast tego możesz wykorzystać inotify
rodzinę wywołań systemowych dostarczanych przez jądro Linuksa, aby obserwować tworzenie (i opcjonalnie mv
-ing) katalogu shop
w danym katalogu, jeśli został utworzony (lub opcjonalnie mv
-ed), rm
katalog.
Program przestrzeni użytkownika, którego potrzebujesz w tym przypadku to inotifywait
(pochodzi z inotify-tools
, zainstaluj go najpierw, jeśli to konieczne).
Zakładając, że katalog shop
będzie znajdować się w /foo/bar
katalogu, ustawmy monitorowanie /foo/bar/shop
tworzenia i rm
natychmiast, jeśli zostanie utworzone:
inotifywait -qme create /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
inotifywait -qme create /foo/bar
/foo/bar
katalog zegarki dla każdego pliku / katalogu, który może zostać utworzony, tj. obserwuj każde create
zdarzenie
Jeśli utworzony, awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
sprawdza, czy plik jest katalogiem, a nazwa to shop
( /,ISDIR shop$/
), jeśli tak, rm
to katalog ( system("rm -r -- /foo/bar/shop")
)
Musisz uruchomić polecenie jako użytkownik, który ma uprawnienia do zapisu w katalogu w /foo/bar
celu usunięcia go shop
z katalogu.
Jeśli chcesz też monitorować mv
operacje-dodawania, dodaj też obserwację moved_to
zdarzenia:
inotifywait -qme create,moved_to /foo/bar | \
awk '/,ISDIR shop$/ { system("rm -r -- /foo/bar/shop") }'
Uwaga: jeśli szukasz pliku, a nie katalogu o nazwie shop
:
inotifywait -qme create /foo/bar | \
awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'
inotifywait -qme create,moved_to /foo/bar | \
awk '$NF == "shop" { system("rm -- /foo/bar/shop") }'