私はAtom(テキストエディタ)で目的の文字列を持つebuildを検索して開くために使用できるBashスクリプト機能を作成しようとしました。これは私の現在のBashスクリプト関数です(次の~/.bashrc
場所に保存されます)。
function edsch {
L=$(grep --include "*.ebuild" -R "$1" /usr/portage/$2)
for i in ${L[@]}
do
atom $i
done
}
edsch .src.rpm x11-themes
カテゴリからebuildを検索するにはAtomを使用し、Atomを使用して結果を開きたいです。問題は、その内容が文字列(たとえば)が表示されるebuildの場所と、ファイルシステムのebuildの場所(ループから渡したい)を参照していることです。つまり、この例には次の内容があります。x11-themes
.src.rpm
${L}
.src.rpm
atom
for
${L}
/usr/portage/x11-themes/redhat-artwork/redhat-artwork-5.0.8-r4.ebuild:SRC_URI="mirror://gentoo/${P}-${MY_R}.fc7.src.rpm"
/usr/portage/x11-themes/lovelock-backgrounds/lovelock-backgrounds-14.91.1.1.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
/usr/portage/x11-themes/laughlin-backgrounds/laughlin-backgrounds-14.1.0.3.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
/usr/portage/x11-themes/solar-backgrounds/solar-backgrounds-0.92.0.5.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
/usr/portage/x11-themes/goddard-backgrounds/goddard-backgrounds-13.0.0.3.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
/usr/portage/x11-themes/leonidas-backgrounds/leonidas-backgrounds-11.0.0.2.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
/usr/portage/x11-themes/verne-backgrounds/verne-backgrounds-15.91.0.1.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
/usr/portage/x11-themes/constantine-backgrounds/constantine-backgrounds-12.1.1.4.ebuild:SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm"
各行の最初の部分は私のシステムのebuild位置(/usr/portage/x11-themes/constantine-backgrounds/constantine-backgrounds-12.1.1.4.ebuild
最後の行など)を表し、2番目の部分(SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm
最後の行など)は.src.rpm
文字列が表示される行を表します。grep
ファイルシステムのebuild位置のみが表示されるように出力を変更する方法はありますか?
ベストアンサー1
grep
次のオプションを使用して、検索パラメータと一致するファイルのファイル名のみを出力できます-l
。
function edsch {
L=$(grep -l --include "*.ebuild" -R "$1" /usr/portage/$2)
for i in ${L[@]}
do
atom $i
done
}
これにより、探している出力が生成され、Atomを使用してそのファイルが開きます。