Substituição de alias para uma string para usá-lo em um comando de terminal

1

Existe uma maneira de substituir aliases que são acrescentados ou prefixados a um comando existente no shell?

Por exemplo, definindo o alias:

alias execloc='/home/user/'

Pré-adicionando isso a um comando no terminal bash:

cd exeloc/temp/somefolder

Pode algo assim ser feito, ou há uma maneira de fazer isso?

    
por Stephen Jacob 24.10.2013 / 07:13

3 respostas

2

Você não pode fazer assim porque /home/user/ não é um comando. Não é mais como uma string estática.

De man bash (em algum lugar na linha 1984):

  

Aliases permitem que uma string seja substituída por uma palavra quando é usada como        a primeira palavra de um comando simples .

No seu caso, execloc nunca será a primeira palavra de um comando simples.

Mas, em vez de definir execloc como um alias, você pode defini-lo como uma variável de ambiente:

export execloc='/home/user/'

E então você pode usá-lo onde quiser, como segue:

cd $exeloc/temp/somefolder
    
por Radu Rădeanu 24.10.2013 / 07:51
0

Eu não penso assim com o bash / dash, mas posso estar errado. Eu acho que isso pode ser possível com 'zsh' (alias -g foo = 'bar').

Mas existem algumas outras possibilidades.

Se você está apenas querendo comandos 'cd' mais convenientes, você poderia usar o CDPATH (google it). Ou use links simbólicos ou hardlinks (man ln).

Ou modifique / crie ~ / .inputrc com uma linha como:

Controle-f: "grep -r -i. \ e [D \ e [D \ e [D"

Isso digita um comando grep para mim e depois retrocede para antes do ponto para que eu possa digitar ctrl-f e depois uma palavra que estou procurando.

    
por Scott Salley 24.10.2013 / 08:04
0

Você pode fazer isso (se eu ler sua pergunta corretamente) da seguinte forma:

  

export EXECLOG = / home / user

     

cd $ EXECLOG / temp / somefolder

Basicamente, configure suas substituições no shell e acesse-as prefixando-as com o sinal "$". Variáveis de shell padrão.

(saiu para corrigir erros de digitação no EXECLOG)

    
por FreudianSlip 24.10.2013 / 08:53