Na naszym serwerze Solaris stwierdzam, że grep -r
to nie działa, co jest zwykłym sposobem, którego używam grep
. Wygląda na to, że egrep
ma takie samo zachowanie.
Biorąc pod uwagę, że nie mam kontroli nad maszyną, czy istnieje sposób na grep
przeprowadzenie wyszukiwania rekurencyjnego? A może muszę przesłać dane wyjściowefind
do grep
?
Odpowiedzi:
Nie znam Solaris, ale jeśli przejdziesz z GNU / Linux na Solaris, zauważysz, że większość poleceń będzie się nieco różnić. W wersjach GNU narzędzi uniksowych brakuje unikatowych funkcji w „zastrzeżonych” uniksach.
Możesz pobrać GNU grep (s) tutaj, a następnie skompilować i zainstalować.
Jeśli masz dostęp do konta root, możesz chcieć uruchomić config --prefix = / usr / local Tak, aby narzędzia instalowały się w / usr / local
Jeśli nie masz dostępu do konta root, możesz uruchomić config --prefix = $ {HOME} Tak, aby narzędzia instalowały się w twoim katalogu domowym
źródło
--prefix=${HOME}}/.local
jest prawdopodobnie bardziej wskazane ... nie trzeba zaśmiecać katalogu domowegoshare
ilib
folderówshare
? To musi być katalog śmieci!”rm -rf
Doh!Jeśli chcesz użyć
find
, byłby to najszybszy sposób:Jednak Gnu grep jest już prawdopodobnie zainstalowany na twoim komputerze.
Jest to część domyślnej instalacji w systemie Solaris 11 w
/usr/gnu/bin/grep
. To samo dotyczy Solaris 10, w którym go znajdziesz/usr/sfw/bin/ggrep
. W starszych wersjach program mógł zostać zainstalowany z oprogramowania SunFreeware lub innych repozytoriów, sprawdź/usr/local/bin/grep
i znajdź/opt/csw/bin/grep
typowe lokalizacje.źródło
-name
opcji za pomocąfind
.-name
nie będzie przeszukiwał plików, lecz będzie wyszukiwał tylko nazwy plików, o które nie prosi OP.Zamiast tego użyj ggrep, jeśli jest zainstalowany.
Np. Wyszukaj „mysearchstring” z bieżącego katalogu do wszystkich podkatalogów (
-R
) i pokaż nazwę pliku i ścieżkę do match (-H
) oraz zignoruj pliki binarne (-I
). Nie zapomnij*
o końcu polecenia.ggrep znajduje się w.
/usr/sfw/bin
Możesz dodać go do swojego profilu za pomocą polecenia EXPORT, aby móc wywoływać go bezpośrednio z wiersza poleceń.Wersja Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
źródło
ggrep
jest rzeczywiście GNU grep. Dzięki!Pobierz samodzielny
ack
skrypt perla ze strony http://betterthangrep.com/ , włóż go do swojego$HOME/bin
i naucz się go używać. Uważam, że jest to, jak reklamowano, lepsze niż grep do wielu zastosowań w mojej codziennej pracy programistycznej.źródło
Solaris grep nie ma
-r
opcji.Możesz użyć następującego polecenia.
źródło
find /opt/ -name "*.sh" -type f | xargs grep "start"
Tak, potrzebujesz GNU grep. Osobiście nie tęsknię za flagą „-r”, ponieważ możesz zrobić to samo z kombinacją
find
i,grep
ale to przypomina, że posiadanie narzędzi GNU dostępnych na twoim komputerze Solaris uważam za najlepszą praktykę. Więc zaczynamy:Nie chciałbym pobierać kodu źródłowego z różnych miejsc w Internecie, a następnie budować siebie. To nie jest konieczne. Jeśli chcesz, aby Twój Solaris miał dostępne typowe narzędzia GNU, wykonaj następujące czynności:
Jeśli korzystasz z systemu Solaris 10 , powinieneś zdobyć Dysk towarzyszący Solaris 10. Kiedyś była dystrybuowana przez Sun, ale teraz tu mieszka . Osobiście postanowiłbym zawsze instalować zawartość tego dysku lub przynajmniej najważniejszych części GNU. Włącz go do JumpStart (lub cokolwiek, czego używasz) dla nowych serwerów w organizacji!
Jeśli korzystasz z systemu Solaris 11, życie jest znacznie prostsze. Narzędzia GNU są zazwyczaj instalowane domyślnie, ale nie wszystkie z nich są propagowane do stref lokalnych. IFS, system pakowania w systemie Solaris 11, znacznie ułatwia życie, dlatego naprawdę powinieneś przejść na system Solaris 11 (również z wielu innych powodów). Lista pakietów, które należy zawsze mieć na uwadze dla każdej strefy, to:
a jeśli używasz hosta do celów programowania / kompilacji, możesz chcieć dodać:
Osobiście uczyniłbym powyższe (potencjalnie mniej narzędzi programistycznych) częścią domyślnej instalacji mojej firmy dla nowych serwerów / stref. Administratorzy systemu Solaris często nalegają na to, by różnić się od świata Linuksa, ale tak naprawdę nie ma takiej potrzeby. Po prostu zrób to i ustaw jako część domyślnej instalacji. Nie pożałujesz.
źródło