Mostra o texto de substituição do alias no arquivo .bash_history

2

Dado que tenho o seguinte alias em um dos meus arquivos de inicialização do bash (.bash_profile etc.):

alias gs='git status'

Como posso obter meu arquivo .bash_history para exibir o texto de substituição: "git status" em vez do alias: "gs"?

    
por webappzero 09.12.2014 / 18:09

1 resposta

0

Eu não acho que isso seja (facilmente) possível.

Eu tentei isso:

alias foo="echo foo;fc -e /home/hl/tmp/testscript.sh 0"
start cmd:> cat /home/hl/tmp/testscript.sh
#! /bin/bash

set -x

# simple case
#test -f "$1" || exit 1
#echo ": alias replacement : echo foo" >"$1"


# complex case
IFS= read -r line <"$1"
: line: _"$line"_
case "$line" in
        foo)
                echo ": alias replacement : echo foo" >"$1"
        ;;
        bar)
                echo ": alias replacement : echo bar" >"$1"
        ;;
        *)
                echo ": alias replacement error" >"$1"
        ;;
esac

A ideia era: executar o comando real e corrigir imediatamente o histórico de comandos, o que pode ser feito pelo bash builtin fc . Existem dois problemas:

  1. fc permite editar o arquivo, mas o executa posteriormente. Isso pode ser parcialmente resolvido escrevendo um comando fictício (por exemplo, pré-definir : ).

  2. O histórico é baseado em linhas que não estão em comandos executados. Assim, o comando a ser modificado ainda não está na pilha. Isso pode ser resolvido por algum truque maléfico como colocar o código em $PS1 , mas não tenho vontade de tentar ...

história incorporada

Pode haver uma maneira melhor que compartilhe o problema "ainda não na pilha" com a abordagem acima. Eu não estava ciente do builtin history . Este comando permite escrever e ler o arquivo de histórico. Assim, isso poderia ser feito:

  1. escreva o arquivo
  2. modificar o arquivo com, por exemplo sed : sed -i 's/^gs$/git status/' ~/.bash_history
  3. leia o arquivo

O problema do stack histórico pode ser endereçado desta forma (eu não tentei, no entanto):

alias foo="echo foo;(sleep 1; history ...) &"
    
por 09.12.2014 / 19:06

Tags