Estou procurando uma maneira de fazer o seguinte alias funcionar 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 torná-lo para que eu possa digitar qualquer nome de arquivo como tal:
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'
Respostas:
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:
A função
dim
terá um nome de arquivo como argumento. Você pode colocar esse trecho de código no final do seu~/.bashrc
arquivo e executá-lo como:Substitua
file.txt
por qualquer nome de arquivo desejado.Para executá-lo a partir da sessão atual do shell, primeiro
source
o~/.bashrc
arquivo:fonte
$1
indica o primeiro parâmetro posicional ou argumento para a função .. pense nisso como uma maneira de dar entrada a uma função ou script .. como todas as linguagens de programaçãobash
também usam isso .... você encontrar inúmeros recursos sobre isso no Google ..Não com aliases, use funções.
Na página do manual do Bash :
Portanto, sua função pode ser:
fonte
cd
para levá-lo ao seu diretório pessoal;cd ..
sobe um nível.cd -
traz para o diretório anterior da qual vocêcd
'ed.$*
é como$1 $2 $3...
apenas dar a lista inteira ao vim, não o primeiro argumento digitado. E, como Chriki disse,cd -
retornará ao diretório anterior (o que você era quando invocou a função).