Existe algum utilitário para adicionar, listar e remover rapidamente aliases de comandos?

3

Gostaria de poder adicionar rapidamente aliases de comando add (e list / remove) para que eles persistissem entre as reinicializações do shell (como se tivessem sido adicionados a .bashrc ). Existe algum utilitários / scripts / o que pode me ajudar com isso?

Idealmente, o caso de uso seria semelhante:

aliasutil add "gcm" "git checkout master"
aliasutil add "gfp %1" "git push --force %1"
aliasutil list
aliasutil remove "gcm"
    
por Fixpoint 06.09.2012 / 14:26

3 respostas

5

alias lida com a criação e listagem de aliases. unalias lida com a exclusão deles. Se você precisar, poderá obter mais detalhes com o bash help incorporado - help alias e help unalias ou na página man bash.

Para salvá-los, uso os seguintes itens há anos:

$ alias savealias='alias > ~/.bash-aliases'
$ savealias

Todos os aliases (incluindo o savealias recém-definido serão salvos em ~/.bash-aliases . Esse é um arquivo de texto simples que pode ser editado como um script de shell, se necessário. Por exemplo, o meu contém linhas como esta:

alias acs='apt-cache show'
alias acss='apt-cache search'
alias loadalias='. ~/.bash-aliases '
alias mq='mailq | grep "^[0-9A-Z]"'
alias savealias='alias >~/.bash-aliases'
alias ttystat='echo $(tty) $TERM ${COLUMNS}x$LINES'
alias where='type -all'
alias which='type -path'

e muitos outros.

Os aliases salvos são carregados no momento do login adicionando o seguinte a ~ / .bash_profile, ~ / .bashrc, ou até mesmo / etc / profile

[ -e ~/.bash-aliases ] && . ~/.bash-aliases

i.e. "se um arquivo .bash-aliases existir no meu diretório home e, em seguida, fonte dele."

Com esse método, as alterações feitas nos aliases serão perdidas no logout, a menos que você execute savealias - isso inclui adicionar, editar e excluir aliases.

    
por 07.09.2012 / 15:50
5

Não conheço nenhuma ferramenta que faça isso, mas você deve ser capaz de fazer a maior parte com utilitários existentes. Dependendo de como você deseja que os aliases sejam sincronizados, você pode obter a lista em .bashrc ou antes de cada linha de comando com PROMPT_COMMAND :

ALIAS_FILE='~/.aliases'
PROMPT_COMMAND=". $ALIAS_FILE"

aliasutil adicione "gcm" "git checkout master"

echo 'alias gcm="git checkout master"' >> $ALIAS_FILE

aliasutil adicione "gfp% 1" "git push --force% 1"

Você pretende o %1 como um argumento? Os aliases não suportam argumentos, portanto, para conseguir isso, você precisa criar uma função.

lista aliasutil

cat $ALIAS_FILE

aliasutil remove "gcm"

sed -i '/^alias gcm=/d'
unalias gcm
    
por 06.09.2012 / 15:11
0

Como eu mesmo estava implementando isso (inspirado na resposta do @ Thor), pensei em criar uma ferramenta que fosse instalada por outras pessoas: link .

Isso funciona para zsh e deve funcionar com bash (não testado).

Se você estiver usando zsh , poderá instalá-lo com zplug .

source /usr/share/zplug/init.zsh
zplug talwrii/aliasutil
zplug install
zplug load
    
por 16.04.2017 / 23:14