Passei algumas horas tentando ter um acesso fácil aos meus comandos mais úteis que tenho que usar em um determinado ambiente, tenho a "incrível" ideia de usar o histórico para esse fim, para resumir, tenho um arquivo chamado .bash_history_template com esses comandos que eu sempre uso e adicionei algo assim:
~/.bash_history_template >> ~/.bash_history
em ~/.bashrc para ter acesso fácil a uma lista ordenada de comandos que uso sempre (é mais complexo, mas você entendeu)
Minha pergunta é: Existe alguma outra maneira de, em vez de usar history ou fc, usar outro comando para obter os comandos existentes localizados no arquivo .bash_history_template e usar atalhos bastante impressionantes para executá-los e editá-los (como !number ou fc number )
Não exatamente o que você está pedindo, mas uma alternativa.
Vasculhe seu
~/.bash_history
arquivo em busca de comandos executados com frequência. Analise várias instâncias do mesmo comando, procurando coisas que possam ser transformadas em variáveis.Você também pode examinar as páginas man para esses comandos, para opções que você pode usar no futuro - mas não gaste muito tempo ou esforço nisso, concentre-se em recursos/opções/argumentos que você já está usando. Você sempre pode atualizar seus scripts para adicionar novos recursos quando realmente precisar deles.
Escreva scripts wrapper para executar esses comandos, obtendo argumentos da linha de comando para as variáveis. Se necessário, use
getopts
para manipular as opções do seu script. Os scripts podem estar em bash, awk, perl ou qualquer outro com o qual você se sinta confortável para trabalhar e seja apropriado para a tarefa em mãos.Se você usar
getopts
, tente usar letras de opção que sirvam como um mnemônico útil. Ou cartas de opção que são comuns a outros programas, especialmente programas similares ou conceitualmente relacionados. por exemplo, se seu script precisar fazer qualquer correspondência de regex, use-i
para não diferenciar maiúsculas de minúsculas,-v
para inverter uma correspondência. Se ele pegar uma lista de itens (por exemplo, nomes de arquivos) de stdin ou gerar um em stdout, use-z
para entrada/saída separada por NUL - dessa forma, seu script pode ser usado com segurança em um pipeline com outros programas (a maioria das ferramentas GNU, por exemplo) que funcionam com entrada separada por NUL.Crie um diretório chamado
~/bin/
e adicione-o ao seu $PATH (edite seu~/.bashrc
ou~/.bash_profile
). Salve seus scripts em ~/bin/.Se alguns deles precisam ser executados por vários usuários (por exemplo, root E seu usuário), considere colocar esses scripts em
/usr/local/bin/
vez disso.Os nomes dos scripts serão mais fáceis de lembrar do que os números das linhas do histórico (e não mudarão conforme você usa o shell). E você pode adicionar comentários a cada script descrevendo o que ele faz e quais argumentos são necessários. Ou até mesmo adicione uma opção
-h
ou--help
.Faço isso há décadas - quase tudo o que faço mais do que algumas vezes e provavelmente faço muitas vezes se transforma em um script - e a parte mais difícil é pensar em um nome útil e descritivo para o script :)
BTW, eu recomendo executar
git init
em seu diretório ~/bin/ para que você possagit
manter um histórico de revisões de todas as alterações em seus scripts.Uma combinação de resposta @cas e esta resposta é o que resolveu meu problema:
retirado de: https://stackoverflow.com/questions/62667273/can-bash-write-a-command-to-the-terminal-input