Configure o bash para executar o comando com o último argumento quando nenhum argumento foi fornecido

1

Eu gostaria de configurar o bash para que, quando eu executar o comando (preferencialmente de uma lista de comandos, não de qualquer comando) sem um argumento, ele tome o argumento do comando anterior.

Por exemplo, digito emacs ~/.bashrc e, quando eu digito source , o bash executa source ~/.bashrc . Eu sei que é possível, mas não sei onde procurar essas opções.

    
por syntagma 12.03.2013 / 19:04

2 respostas

3

Você pode pressionar Espaço e Meta + . antes de pressionar Enter . Isso tem a vantagem de que você pode usá-lo mesmo com comandos que fazem sentido quando aplicados a nenhum argumento. Para source , use . para digitar menos.

Se você é da velha guarda, pode usar !^ para recuperar o primeiro argumento do comando anterior ou !$ para recuperar o último argumento, ou !* para recuperar todos eles (exceto o nome do comando).

Você pode obter exatamente o comportamento que descreve ao escrever funções que envolvem cada comando. O último argumento do comando anterior está disponível no parâmetro especial $_ .

make_wrapper_to_recall_last_argument () {
  for f do eval <<EOF; done
function $f {
  if [ \$# -eq 0 ]; then set -- "\$_"; fi
  command $f "\$@"
}
EOF
}
make_wrapper_to_recall_last_argument source .
    
por 12.03.2013 / 23:06
3

A estratégia de closes que eu conheço é Alt + .

Isso permite que você percorra todos os argumentos anteriores.

    
por 12.03.2013 / 19:07