Auf unserem Solaris-Server grep -r
funktioniert das nicht, wie ich es gewohnt bin grep
. Es scheint, dass egrep
das gleiche Verhalten hat.
Gibt es eine Möglichkeit grep
, eine rekursive Suche durchzuführen , da ich keine Kontrolle über die Maschine habe ? Oder muss ich die Ausgabe von find
in grep
umleiten?
Antworten:
Ich bin nicht mit Solaris vertraut, aber wenn Sie von GNU / Linux zu Solaris wechseln, werden Sie feststellen, dass sich die meisten Befehle etwas anders verhalten. Die GNU-Version der Unix-Tools verfügt über zusätzliche Funktionen, die in "proprietären" Unixen fehlen.
Sie können GNU grep (s) hier herunterladen, kompilieren und installieren.
Wenn Sie Root-Zugriff haben, können Sie configure --prefix = / usr / local ausführen, sodass die Dienstprogramme in / usr / local installiert werden
Wenn Sie keinen Root-Zugriff haben, können Sie configure --prefix = $ {HOME} ausführen, sodass die Dienstprogramme in Ihrem Home-Verzeichnis installiert werden
quelle
--prefix=${HOME}}/.local
ist wahrscheinlich ratsamer ... keine Notwendigkeit, das Home-Verzeichnis mitshare
undlib
Ordnershare
Das muss ein Junk-Verzeichnis sein!"rm -rf
Doh!Wenn Sie verwenden möchten,
find
ist dies der schnellste Weg:Allerdings ist Gnu grep höchstwahrscheinlich bereits auf Ihrem Computer installiert.
Es ist Teil der Standardinstallation unter Solaris 11 in
/usr/gnu/bin/grep
. Dasselbe gilt für Solaris 10, in dem Sie es finden/usr/sfw/bin/ggrep
. Bei älteren Versionen, könnte es von Sunfreeware oder anderen Repositories, Check installiert/usr/local/bin/grep
und/opt/csw/bin/grep
für gemeinsame Standorte.quelle
-name
Option auch mit verwendenfind
.-name
durchsucht die Dateien nicht, sondern nur die Dateinamen, nach denen das OP nicht fragt.Verwenden Sie stattdessen ggrep, wenn es installiert ist.
ZB Suche nach "mysearchstring" vom aktuellen Verzeichnis bis in alle Unterverzeichnisse (
-R
) und zeige den Dateinamen und Pfad für Übereinstimmungen (-H
) und ignoriere Binärdateien (-I
). Vergessen Sie nicht*
das Ende des Befehls.ggrep befindet sich in
/usr/sfw/bin
Sie können es mit einem EXPORT-Befehl zu Ihrem Profil hinzufügen, sodass Sie es direkt über die Befehlszeile aufrufen können.Solaris-Version: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
quelle
ggrep
ist GNU in der Tat grep. Vielen Dank!Laden Sie das eigenständige
ack
Perl-Skript von http://betterthangrep.com/ herunter , fügen Sie es in Ihr Skript ein$HOME/bin
und lernen Sie, es stattdessen zu verwenden. Ich finde es, wie angekündigt, für viele Zwecke in meiner täglichen Entwicklungsarbeit besser als grep.quelle
Solaris grep hat keine
-r
Option.Sie können folgenden Befehl verwenden.
quelle
find /opt/ -name "*.sh" -type f | xargs grep "start"
Ja, du brauchst das GNU grep. Persönlich vermisse ich das "-r" -Flag nicht, weil Sie dasselbe mit einer Kombination von
find
und tun können.grep
Dies erinnert jedoch daran, dass die Verfügbarkeit der GNU-Tools auf Ihrer Solaris-Box meiner Meinung nach die beste Vorgehensweise ist. Auf geht's:Ich würde mich nicht darum kümmern, Quellcode von verschiedenen Stellen im Internet herunterzuladen und dann selbst zu erstellen. Das ist nicht nötig. Wenn Sie einfach möchten, dass Solaris über die typischen GNU-Tools verfügt, gehen Sie wie folgt vor:
Wenn Sie mit Solaris 10 arbeiten , sollten Sie die Solaris 10 Companion Disk erwerben. Früher wurde es von Sun vertrieben, heute lebt es hier . Persönlich würde ich es mir zur Gewohnheit machen, immer den Inhalt dieser Diskette oder zumindest die wichtigsten GNU-Teile zu installieren. Machen Sie es zu einem Teil Ihres JumpStart (oder was auch immer Sie verwenden) für neue Server in Ihrer Organisation!
Wenn Sie mit Solaris 11 arbeiten, ist das Leben viel einfacher. Die GNU-Tools werden normalerweise standardmäßig installiert, aber nicht alle werden in lokale Zonen übertragen. IFS, das Verpackungssystem unter Solaris 11, erleichtert Ihnen das Leben erheblich. Sie sollten also wirklich auf Solaris 11 umsteigen (viele andere Gründe). Die Liste der Pakete, die Sie immer für eine Zone zur Verfügung haben sollten, lautet wie folgt:
und wenn Sie den Host für Entwicklungs- / Erstellungszwecke verwenden, möchten Sie möglicherweise Folgendes hinzufügen:
Persönlich würde ich das Obige (möglicherweise weniger die Entwicklerwerkzeuge) zu einem Teil der Standardinstallation meines Unternehmens für neue Server / Zonen machen. Solaris-Systemadministratoren bestehen häufig darauf, sich von der Linux-Welt zu unterscheiden, müssen dies jedoch nicht. Tun Sie es einfach und machen Sie es zu einem Teil Ihrer Standardinstallation. Du wirst es nicht bereuen.
quelle