특정 문자열이 포함된 ebuild에 대해 grep 검색을 수행하고 ebuild 위치만 포함된 출력을 생성하려면 어떻게 해야 합니까?

특정 문자열이 포함된 ebuild에 대해 grep 검색을 수행하고 ebuild 위치만 포함된 출력을 생성하려면 어떻게 해야 합니까?

나는 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.rpmatomfor${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마지막 줄)를 나타내고, 두 번째 부분(예: 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을 사용하여 해당 파일이 열립니다.

관련 정보