apelido curto para o arquivo no comando bash

0

Eu quero um caminho curto para acessar arquivos, o que geralmente uso no bash. Por exemplo, veja os logs. Agora eu uso:

less /var/log/user/server.log
less /var/log/user/server2.log

Eu quero atalho, para fazer

less server.log
less server2.log

Eu experimento essa variante no .bash_profile, mas tenho um erro em algum lugar:

less() { if [[ $@ == "server.log" ]]; then command less /var/log/user/server.log; else command less "$@"; fi; }

Obrigado em conselhos!

    
por Mikhail Erofeev 12.05.2013 / 13:42

4 respostas

5

você poderia ligar simbolicamente os arquivos da seguinte forma:

ln -s /var/log/user/server.log server.log
ln -s /var/log/user/server2.log server2.log

E então você pode fazer o que quiser com esses arquivos como:

less server.log
tail -f server2.log
    
por 12.05.2013 / 13:44
0
serverlog=/var/log/user/server.log
serverlog2=/var/log/user/server2.log

less $serverlog
    
por 12.05.2013 / 13:58
0

Eu fiquei entediado, então escrevi esta função de shell bash para você:

less()
{
    OIFS="$IFS"; IFS=:
    lesspath=('' $LESSPATH)
    IFS="$OIFS"
    for arg ; do
            for path in "${lesspath[@]}" ; do
                    file="${path:+$path/}${arg}"
                    if [[ -e "${file}" ]] ; then
                            command less "${file}"
                            continue 2
                    fi
            done
            command less "${arg}"
    done
}

Coloque essa função de shell no seu .bashrc , defina LESSPATH=/var/log/user e agora você pode executar menos conforme desejar.

Você pode adicionar outros caminhos a LESSPATH , separando-os com dois-pontos, assim como as outras variáveis de ambiente PATH. Portanto, se você definir LESSPATH=/var/log:/var/log/user , também poderá executar facilmente less syslog de qualquer lugar para ver facilmente /var/log/syslog .

    
por 12.05.2013 / 13:58
0

Para usar aliases, você pode fazer algo assim também ...

adicione isso a .bashrc

function lss { less "$1"; }
export lss
alias lf='echo /var/log/syslog'

executar

. ~/.bashrc

Agora você pode fazer:

less $(lf)

ou

lss $(lf)
    
por 12.05.2013 / 14:25

Tags