Niepełna kompatybilność Uniksa i Linuksa
Czytam sobie książkę “Unix dla początkujących i zaawansowanych”. Wiadomo, że Linux jest jedną z alternatyw Uniksa. Dlatego warto znać i Uniksa. Podoba mi się ta książka, gdyż opisuje budowę tego OS-a. Można tu przeczytać o tym jak wyglądają i-nody, do czego służą, jak działa jądro etc. Jedyną rzeczą, której żałuję jest to, że nie wszystkie polecenia z książki działają w moim systemie. Część aplikacji uniksowych nie ma swych odpowiedników w Linuksie. Tak, są programy zastępcze, ba, są nawet lepsze, ale to co :P
Mam podany przykład na wyszukanie i usunięcie danych plików:
find \ (-name core -o name “*.out”) -atime +7 -exec rm {} \;
gdzie pierwszy argument oznacza miejsce poszukiwań, kolejny zawiera nazwę poszukiwanych plików core albo *.out etc. Ostatni argument powinien nakazywać usunięcie plików, jeśli takowe zostaną znalezione. Nie działa :P
touch some some1 some2 some3
find . -iname “some*” -exec rm {} \;
Wypluło coś takiego:
BTW Ładny mam motyw, nie?
Spróbowałem zatem zrobić to bardziej “linuksowo”:
find . -iname “some*” | rm
rm: missing operand
Zrozumiałem co jest grane, ale wolałem się upewnić. Zajrzałem do “Linux. Leksykon kieszonkowy.” Tak, rm nie obsługuje stdin, ani stdout, choć to drugie to chyba logiczne :)
Szkoda.
b.YISK





“Tak, rm nie obsługuje stdin”
i dlatego powstał program xargs
find . -iname “some*” | xargs rm
i po kłopocie
anti
listopad 23, 2008 at 20:42