Alias ​​um comando para executar em segundo plano

25

Eu gostaria que um atalho de teclado funcionasse da seguinte maneira:

> e foo.txt

expandir como

> emacs foo.txt &

É simples de usar alias e=emacs, mas como insiro o &após o nome do arquivo? Sei que talvez não seja possível usar apenas alias, então aceitarei qualquer solução do bash. Se for necessário um script de shell, explique como ele funciona.

Hooked
fonte
4
Você deve usar emacsclientou gnuclientabrir um arquivo a partir de linha de comando em vez de abrir uma nova emacspara cada arquivo: emacswiki.org/emacs/EmacsClient
andcoz

Respostas:

38

O alias no bash não pode ter argumentos, mas você pode usar funções.

e() { emacs "$@" & }

então

e foo.txt

fará o que você quiser.

AProgrammer
fonte
11
Isso tem um problema quando eu digito e foo*um diretório com ambos foo.cppe foo.h, apenas um dos arquivos será aberto.
21711
4
@Hooked, use em "$@"vez de "$1"na função.
AProgramador 23/09
11
@ AProgrammer que parece não funcionar para caracteres curinga. A sintaxe que estou usando é: emacs $* &e parece ser uma solução ainda melhore() { command emacs $* & disown }
nome: