Como pesquisar strings em linhas Python não comentadas usando uma função Bash

Recentemente, descobri que queria uma maneira fácil de usar o grep para strings em linhas não comentadas em meus arquivos Python. Eu estava cansado de redigitar os mesmos se --excluderegexes repetidamente. Eu já estava usando aliaspor um tempo para encurtar comandos que comecei a usar muito, mas precisava de uma maneira de conectar uma string no regex em tempo de execução e me vi prejudicado pelo fato de não poder fazer referência a argumentos para o alias em sua definição. Lembrei que o Bash permite definir novas funções diretamente na linha de comando, então acabei escrevendo uma função do Bash:

function pygrep () { grep -r --exclude="*.pyc" --exclude="*.swp" ^[^#]*$1.* ${@:2}; }

Uso:

pygrep "search_string_here" optional_list_of_files_and_directories

Na definição de função acima, $1representa o primeiro argumento da função. $2iria, é claro, representar o segundo, $3iria representar o terceiro e assim por diante. $@é uma matriz de todos os argumentos da função. Neste exemplo, estou pegando todos os seus elementos a partir do segundo elemento. Se eu quisesse apenas obter os dois argumentos após o primeiro, poderia ter feito referência ${@:2:2}. O número após os primeiros dois pontos é o índice inicial (inclusive), e o número após os segundos dois pontos é o número de elementos a serem capturados.

Se você achar uma função particularmente útil (como achei a acima), não se esqueça de adicioná-la ao seu ~/.bashrcarquivo para que possa continuar a usá-la em sua próxima sessão Bash.