Sur notre serveur Solaris, je trouve que grep -r
cela ne fonctionne pas, ce qui est la manière habituelle que j'utilise grep
. Il semble que cela egrep
a le même comportement.
Étant donné que je n'ai aucun contrôle sur la machine, existe-t-il un moyen d' grep
effectuer une recherche récursive? Ou dois-je rediriger la sortie de find
dans grep
?
Réponses:
Je ne connais pas Solaris, mais si vous passez de GNU / linux à Solaris, vous constaterez que la plupart des commandes se comporteront légèrement différemment. La version GNU des outils Unix a des fonctionnalités supplémentaires manquantes dans les Unix "propriétaires".
Vous pouvez télécharger GNU grep (s) ici, puis compiler et installer.
Si vous disposez d'un accès root, vous voudrez peut-être exécuter configure --prefix = / usr / local De telle sorte que les utilitaires s'installent dans / usr / local
Si vous ne disposez pas d'un accès root, vous voudrez peut-être exécuter configure --prefix = $ {HOME} de telle sorte que les utilitaires s'installent dans votre répertoire personnel
la source
--prefix=${HOME}}/.local
est probablement plus conseillé ... pas besoin d'encombrer le répertoire personnel avecshare
et leslib
dossiersshare
? Ça doit être un répertoire indésirable!"rm -rf
Ah!Si vous souhaitez l'utiliser
find
, ce serait le moyen le plus rapide:Cependant, Gnu grep est très probablement déjà installé sur votre machine.
Il fait partie de l'installation par défaut sur Solaris 11 dans
/usr/gnu/bin/grep
. Idem pour Solaris 10 où vous le trouvez/usr/sfw/bin/ggrep
. Sur les versions plus anciennes, il pourrait avoir été installé à partir de sunfreeware ou d'autres référentiels, vérifiez/usr/local/bin/grep
et/opt/csw/bin/grep
pour les emplacements communs.la source
-name
option avecfind
.-name
ne cherchera pas à l'intérieur des fichiers, mais recherchera uniquement les noms de fichiers, ce qui n'est pas ce que l'OP demande.Utilisez plutôt ggrep s'il est installé.
Par exemple, recherchez "mysearchstring" à partir du répertoire courant jusqu'à tous les sous-répertoires (
-R
), et affichez le nom de fichier et le chemin d'accès pour matches (-H
) et ignorez les fichiers binaires (-I
). N'oubliez pas*
la fin de la commande.ggrep est situé dans
/usr/sfw/bin
Vous pouvez l'ajouter à votre profil avec une commande EXPORT afin de pouvoir l'appeler directement depuis la ligne de commande.Version Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
la source
ggrep
c'est bien GNU grep. Merci!Téléchargez le
ack
script perl autonome sur http://betterthangrep.com/ , mettez-le dans votre$HOME/bin
et apprenez à l'utiliser à la place. Je trouve que c'est, comme annoncé, meilleur que grep pour de nombreuses utilisations dans mon travail de développement quotidien.la source
Solaris grep n'a pas d'
-r
option.Vous pouvez utiliser la commande suivante.
la source
find /opt/ -name "*.sh" -type f | xargs grep "start"
Oui, vous aurez besoin du grep GNU. Personnellement, je ne manque pas l'indicateur "-r" car vous pouvez faire de même avec une combinaison de
find
etgrep
mais cela rappelle que disposer des outils GNU sur votre boîtier Solaris est ce que je considérerais comme la meilleure pratique. Alors c'est parti:Je n'irais pas à télécharger du code source à partir de divers endroits sur Internet, puis à vous construire. Ce n'est pas nécessaire. Si vous souhaitez simplement que votre Solaris dispose des outils GNU typiques, procédez comme suit:
Si vous utilisez Solaris 10, vous devez vous procurer le Solaris 10 Companion Disk. Avant, il était distribué par Sun, mais il vit maintenant ici . Personnellement, j'en ferais un habbit pour toujours installer le contenu de ce disque ou au moins les parties GNU les plus importantes. Intégrez-le à votre JumpStart (ou à tout ce que vous utilisez) pour les nouveaux serveurs de votre organisation!
Si vous utilisez Solaris 11, la vie est beaucoup plus simple. Les outils GNU sont généralement installés par défaut mais ne sont pas tous propagés dans les zones locales. IFS, le système d'emballage de Solaris 11, vous facilite grandement la vie, vous devriez donc vraiment passer à Solaris 11 (et bien d'autres raisons également). La liste des packages que vous devez toujours considérer comme disponibles pour n'importe quelle zone sont les suivants:
et si vous utilisez l'hôte à des fins de développement / construction, vous voudrez peut-être ajouter:
Personnellement, je ferais de ce qui précède (potentiellement moins les outils de développement) une partie de l'installation par défaut de mon entreprise pour les nouveaux serveurs / zones. Les administrateurs système Solaris insistent souvent pour être différents du monde Linux, mais ce n'est vraiment pas nécessaire. Faites-le et intégrez-le à votre installation par défaut. Vous ne le regretterez pas.
la source