Solarisサーバーgrep -r
では、それが機能しないことがわかりました。これは、私が使用する通常の方法ですgrep
。egrep
同じ動作をしているようです。
マシンを制御できないのでgrep
、再帰検索を実行する方法はありますか?それとも私はパイプに出力の必要がありますかfind
にはgrep
?
Solarisサーバーgrep -r
では、それが機能しないことがわかりました。これは、私が使用する通常の方法ですgrep
。egrep
同じ動作をしているようです。
マシンを制御できないのでgrep
、再帰検索を実行する方法はありますか?それとも私はパイプに出力の必要がありますかfind
にはgrep
?
回答:
私はSolarisに精通していませんが、GNU / linuxからSolarisに切り替えると、ほとんどのコマンドの動作がわずかに異なることがわかります。UnixツールのGNUバージョンには、「独自の」Unixにはない追加機能があります。
ここからGNU grepをダウンロードし、コンパイルしてインストールできます。
rootアクセスがある場合は、configure --prefix = / usr / localを実行することをお勧めします。このようなユーティリティは/ usr / localにインストールされます。
ルートアクセス権がない場合は、configure --prefix = $ {HOME}を実行します。ユーティリティがホームディレクトリにインストールされるようにします。
--prefix=${HOME}}/.local
おそらくより賢明です...ホームディレクトリshare
とlib
フォルダを乱雑にする必要はありません
share
?それはジャンクディレクトリになるはずだ!」rm -rf
ど!
を使用する場合find
、これが最速の方法です。
find . -type f -exec grep pattern {} +
ただし、Gnu grepはおそらくマシンにすでにインストールされています。
これは、Solaris 11のデフォルトのインストールの一部です/usr/gnu/bin/grep
。Solaris 10でも同じです/usr/sfw/bin/ggrep
。古いリリースでは、sunfreewareまたは他のリポジトリからインストールされている可能性が/usr/local/bin/grep
あり/opt/csw/bin/grep
、一般的な場所を確認してください。
-name
オプションを利用することもできますfind
。
-name
はファイル内を検索せず、OPが要求するものではないファイル名のみを検索します。
インストールされている場合は、代わりにggrepを使用します。
たとえば、現在のディレクトリからすべてのサブディレクトリまで「mysearchstring」を検索し(-R
)、一致するファイル名とパスを表示し(-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
ggrep
は、確かにGNU grepです。ありがとう!
スタンドアロンのack
perlスクリプトをhttp://betterthangrep.com/からダウンロードし、に入れて、$HOME/bin
代わりに使用することを学びます。宣伝されているように、毎日の開発作業の多くの用途でgrepよりも優れていると思います。
Solaris grepには-r
オプションがありません。
次のコマンドを使用できます。
find . -type f | xargs grep 'sometext'
find /opt/ -name "*.sh" -type f | xargs grep "start"
はい、GNU grepが必要です。個人的には、「-r」フラグは見逃しません。これはfind
、との組み合わせでも同じことができるためです。grep
しかし、これは、GNUツールをSolarisボックスで使用できることがベストプラクティスだと思います。だからここに行きます:
インターネット上のさまざまな場所からソースコードをダウンロードして、自分でビルドすることはしません。それは必要ありません。Solarisで一般的なGNUツールを使用できるようにする場合は、次のようにします。
あなたが上にある場合のSolaris 10あなたは、Solaris 10コンパニオンディスクを取得する必要があります。これはかつてSunによって配布されていましたが、現在はここにあります。個人的には、このディスクの内容または少なくとも最も重要なGNUパーツを常にインストールすることを習慣にしています。組織の新しいサーバーのJumpStart(または使用するもの)の一部にします。
Solaris 11を使用している場合は、はるかに簡単です。GNUツールは通常デフォルトでインストールされますが、すべてがローカルゾーンに伝播されるわけではありません。Solaris 11のパッケージングシステムである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の世界とは異なることをしばしば主張しますが、実際にその必要はありません。実行して、デフォルトのインストールの一部にするだけです。後悔することはありません。