Soluções simples, mas limitadas
Se houver apenas um arquivo chamado filename.sh
em seu sistema, isso provavelmente funcionará
gedit "$(locate filename.sh)"
Ou, como Hennes aponta, se o nome do arquivo estiver no seu PATH:
gedit "$(which filename.sh)"
Há outro problema com os dois: as faixas de shell arrastando novas linhas da substituição de comandos, $(...)
. Portanto, no caso patológico em que seu nome de arquivo termina com novas linhas, isso falhará.
Solução geral
Para evitar esses problemas, tente:
locate -0 "filename.sh" | xargs --null gedit
Isso abrirá uma guia em gedit
para cada arquivo encontrado.
A opção -0
informa locate
para retornar uma lista separada por núm de nomes de arquivos. A opção --null
informa xargs
para interpretar sua entrada como uma lista separada por nulo. Conseqüentemente, isso funcionará com nomes de arquivos com novas linhas ou outros caracteres difíceis.
Por conveniência, você pode criar a função shell:
lge() { locate -0 "$@" | xargs --null gedit; }
E use-o como: lge filename.sh
Para tornar a definição da função permanente, coloque-a no seu ~/.bashrc
.