Como obtenho o grep para procurar ebuilds com strings específicas e produzir uma saída contendo apenas a localização da ebuild?

1

Eu tenho tentado criar uma função de script Bash que pode ser usada para procurar e abrir ebuilds com strings desejadas no Atom (o editor de texto). Esta é a minha função atual de script Bash (armazenada em ~/.bashrc )

function edsch {
  L=$(grep --include "*.ebuild" -R "$1" /usr/portage/$2)

  for i in ${L[@]}
  do
    atom $i
  done
}

Eu gostaria de usar edsch .src.rpm x11-themes para pesquisar ebuilds na categoria x11-themes com .src.rpm e, em seguida, abrir os resultados com Atom. O problema é que ${L} tem conteúdos que se referem a onde no ebuild a string (por exemplo, .src.rpm ) aparece, assim como a localização dos ebuilds no meu sistema de arquivos (que eu quero passar para atom no for loop). Ou seja, neste exemplo ${L} tem o conteúdo:

/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"

A primeira parte de cada uma destas linhas refere-se à localização da ebuild no meu sistema (por exemplo, /usr/portage/x11-themes/constantine-backgrounds/constantine-backgrounds-12.1.1.4.ebuild na linha final), enquanto a segunda parte (por exemplo, SRC_URI="mirror://fedora-dev/${SRC_PATH}/${PN}-$(replace_version_separator 3 -).fc${FEDORA}.src.rpm na linha final) se refere a a linha na qual a string .src.rpm aparece. Existe uma maneira de alterar a saída grep para que apenas a localização da ebuild no meu sistema de arquivos seja mostrada?

    
por Brenton Horne 15.12.2015 / 09:31

1 resposta

2

Você pode dizer a grep para exibir apenas os nomes dos arquivos correspondentes aos parâmetros de pesquisa, usando a opção -l :

function edsch {
  L=$(grep -l --include "*.ebuild" -R "$1" /usr/portage/$2)

  for i in ${L[@]}
  do
    atom $i
  done
}

Isso produzirá a saída que você está procurando e abrirá os arquivos apropriados com o Atom.

    
por 15.12.2015 / 09:40