Nowe posty

Autor Wątek: Nakładka na find, przeszukiwanie zawartości plików.  (Przeczytany 6308 razy)

eighteenthsecond

  • Gość
Czesć, piszę na zajęcia z systemów operacyjnych prostą nakładkę na finda. Ma to polegać na tym, że użytkownik wybiera sobie opcje poszukiwania, a skrypt na podstawie tego generuje odpowiednią komendę i wyświetla wynik. Wszystko właściwie już mam prócz jednej sprawy. Przy przeszukiwaniu po zawartości, skrypt generuje mi poprawne polecenie, (po wpisaniu tego samego poza skryptem w terminalu ładnie mi wyszukuje) a pomimo to w skrypcie bash twierdzi że "find: brak argumentu dla `-exec'". Podejrzewam jakąś nadmiarową spację o powodowanie zamieszania.

Oto kod na chwilę obecną:
http://wklej.org/id/414917/

Zakomentowany fragment (tak mi się wydaje) sprawia problem.

I jeszcze taka mała, podobna sprawa. Gdzie się podziewają znaki końca linii podczas wyświetlania wyniku przez skrypt? Polecenie w terminalu normalnie je dodaje, wyniki są wtedy czytelniejsze.

arctgx

  • Gość
Nakładka na find, przeszukiwanie zawartości plików.
« Odpowiedź #1 dnia: 2010-11-08, 21:15:53 »
    read szuk
    #szuk=" -exec grep -l \\"$szuk\\" {} \\\\;"
Odwrotny ukośnik na końcu maskujesz po to, by do finda trafiał dosłowny średnik. Bez tej maski średnik zostałby zjedzony (zinterpretowany) przez powłokę i find z jego braku wywali ten komunikat. U Ciebie jest z kolei za dużo: średnik trafia razem z maską (pojedynczym odwrotnym ukośnikiem - dotarł tam, zamaskowany drugim) - to tak jakbyś dał
 -exec grep -l return {} '\\;'
Find chce dokładnie średnika.

eighteenthsecond

  • Gość
Nakładka na find, przeszukiwanie zawartości plików.
« Odpowiedź #2 dnia: 2010-11-08, 22:08:39 »
Ok, rozumiem, find już siedzi cicho :) Z kolei nie wypisuje mi żadnego wyniku choć wiem że powinien. Rozumiem że mam pokombinować jakoś z -print?

arctgx

  • Gość
Nakładka na find, przeszukiwanie zawartości plików.
« Odpowiedź #3 dnia: 2010-11-08, 23:25:32 »
Cytat: eighteenthsecond
nie wypisuje mi żadnego wyniku choć wiem że powinien
Może napisz, o który kawałek Ci chodzi - najlepiej przygotuj błędny kawałek kodu. Cały kod jest na tyle krótki, że możesz go tu dać w znacznik "code" (http://forum.linux.pl/help.php#bbcode), więc tym bardziej fragment - zamiast odsyłać do wklejarki.

Zajrzyj do man find (lub man -LC find) i zobacz jak działa find. Domyślna akcja "-print" wykonywana jest, gdy nie podajesz żadnej. Użycie innej akcji, np -exec powoduje, że printa w razie potrzeby musisz wywołać jawnie (dopisując -print).

eighteenthsecond

  • Gość
Nakładka na find, przeszukiwanie zawartości plików.
« Odpowiedź #4 dnia: 2010-11-10, 12:26:09 »
Cytat: arctgx
Domyślna akcja "-print" wykonywana jest, gdy nie podajesz żadnej. Użycie innej akcji, np -exec powoduje, że printa w razie potrzeby musisz wywołać jawnie (dopisując -print).
A więc wszystko jasne. Ciekawe że skrypt nie chciał przełknąć podania -print po execu, tylko koniecznie przed, kiedy w terminalu nie robiło to absolutnie żadnej różnicy. Dzięki za pomoc. :)