Solarisサーバーでgrep -r
が機能しないことがわかりました。これがgrep
を使用する通常の方法です。 egrep
も同じ動作をするようです。
マシンを制御できない場合、grep
に再帰検索を実行させる方法はありますか?または、find
の出力をgrep
にパイプする必要がありますか?
私はSolarisに慣れていませんが、GNU/linuxからSolarisに切り替えると、ほとんどのコマンドの動作がわずかに異なることがわかります。 GNU Unixツールのバージョンには、「独自の」Unixにはない追加機能があります。
GNU grep(s) here をダウンロードして、コンパイルしてインストールできます。
Rootアクセス権がある場合は、configure --prefix =/usr/localを実行すると、ユーティリティが/ usr/localにインストールされます。
Rootアクセス権がない場合は、configure --prefix = $ {HOME}を実行すると、ユーティリティがホームディレクトリにインストールされます。
find
を使用する場合は、これが最も速い方法です。
find . -type f -exec grep pattern {} +
ただし、Gnu grepはすでにマシンにインストールされている可能性が非常に高いです。
これは、Solaris 11のデフォルトインストールの/usr/gnu/bin/grep
に含まれています。 /usr/sfw/bin/ggrep
にあるSolaris 10でも同じです。古いリリースでは、サンフリーウェアまたは他のリポジトリからインストールされた可能性があります。一般的な場所については、/usr/local/bin/grep
および/opt/csw/bin/grep
を確認してください。
インストールされている場合は、代わりにggrepを使用してください。
例えば。現在のディレクトリからすべてのサブディレクトリ(-R
)まで「mysearchstring」を検索し、一致するファイル名とパス(-H
)を表示し、バイナリファイル(-I
)を無視します。コマンドの最後の*
を忘れないでください。
/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *
ggrepは/usr/sfw/bin
にあります。EXPORTコマンドを使用してプロファイルに追加できるため、コマンドラインから直接呼び出すことができます。
PATH=$PATH:/usr/sfw/bin
export PATH
Solarisバージョン:SunOS 5.10 Generic_147440-13 Sun4u sparc SUNW、SPARC-Enterprise
Solaris grepには-r
オプション。
次のコマンドを使用できます。
find . -type f | xargs grep 'sometext'
スタンドアロンのack
Perlスクリプトを http://betterthangrep.com/ からダウンロードし、$HOME/bin
、代わりにそれを使用することを学びます。宣伝されているように、毎日の開発作業の多くの用途でgrepよりも優れていることがわかりました。
はい、GNU grepが必要になります。find
とgrep
しかし、これは、GNUツールをSolarisボックスで使用できるようにすることが私がベストプラクティスと見なすものであることを思い出させます。
インターネット上のさまざまな場所からソースコードをダウンロードして、自分でビルドすることはしません。それは必要ありません。 Solarisに通常のGNUツールを使用可能にしたいだけの場合は、次のようにします。
Solaris 10を使用している場合は、Solaris 10コンパニオンディスクを取得する必要があります。これは以前はSunによって配布されていましたが、現在は here で提供されています。個人的には、このディスクの内容、または少なくとも最も重要なGNUパーツをインストールすることを常に習慣にしています。新しいサーバーのJumpStart(または使用するもの)の一部にしてください)組織!
Solaris 11を使用している場合、生活ははるかに簡単です。 GNUツールは通常デフォルトでインストールされますが、すべてがローカルゾーンに伝達されるわけではありません。Solaris11のパッケージングシステムであるIFSを使用すると、作業が非常に簡単になるため、実際に移動する必要があります。 Solaris 11へ(他にも多くの理由があります。)どのゾーンでも常に利用できるようにしておくべきパッケージのリストは次のとおりです。
pkg:// solaris/archiver/gnu-tar pkg:// solaris/developer/gnu-binutils pkg:// solaris/diagnostic/top pkg:// solaris/file/gnu-coreutils pkg:// solaris/file/gnu-findutils pkg:// solaris/text/gawk pkg:/ /solaris/text/gnu-diffutils pkg://solaris/text/gnu-grep pkg://solaris/text/gnu-sed
また、ホストを開発/ビルドの目的で使用する場合は、追加することをお勧めします。
pkg:// solaris/developer/build/gnu-make pkg:// solaris/developer/build/make pkg:// solaris/developer/gcc-45 pkg:// solaris/system/header pkg:// solaris/developer/build/autoconf pkg:// solaris/developer/build/automake-110
個人的には、上記の(開発ツールよりも少ない可能性があります)を、会社の新しいサーバー/ゾーンのデフォルトインストールの一部にします。 Solarisのシステム管理者は、Linuxの世界とは違うと主張することがよくありますが、実際にそうする必要はありません。それを実行して、それをデフォルトのインストールの一部にしてください。後悔はしません。