É possível fazer aliases de sandwhich?

8

Estou procurando uma maneira de fazer com que o alias a seguir funcione para qualquer nome de arquivo.

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'

Gostaria de saber se existe uma maneira de alterar esse alias para que eu possa digitar qualquer nome de arquivo da seguinte forma:

dim *the desired file*

E ainda obtém o mesmo resultado. Basicamente, existe uma maneira de chamar o que for digitado após o nome do alias no próprio alias? Algo como:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'
    
por Jason Basanese 05.07.2015 / 03:40

2 respostas

8

Não, você não pode fazer isso usando aliases de shell. Você precisa usar uma função.

Aqui está uma função simples para fazer o trabalho:

dim() {
cd /home/jason/Documents
vim ""
cd
}

A função dim terá um nome de arquivo como argumento. Você pode colocar este snippet de código no final do seu arquivo ~/.bashrc e executá-lo como:

dim file.txt

Substitua file.txt por qualquer nome de arquivo desejado.

Para executá-lo a partir da sessão de shell atual, source o arquivo ~/.bashrc primeiro:

. ~/.bashrc
    
por heemayl 05.07.2015 / 04:12
3

Não com aliases, use funções em vez disso.

Na página de manual do Bash :

  

ALIASES

     

[...] Não há mecanismo para usar argumentos no texto de substituição. Se argumentos forem necessários, uma função de shell deve ser usada (veja FUNÇÕES abaixo).

Então, sua função pode ser:

  

função dim () {cd ~ jason / Documentos; vim $ *; cd -;}

    
por CijcoSistems 05.07.2015 / 04:13

Tags