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 --exclude
regexes repetidamente. Eu já estava usando alias
por 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, $1
representa o primeiro argumento da função. $2
iria, é claro, representar o segundo, $3
iria 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 ~/.bashrc
arquivo para que possa continuar a usá-la em sua próxima sessão Bash.