Alias ​​un comando para ejecutar en segundo plano

25

Me gustaría que un atajo de teclado funcione así:

> e foo.txt

para expandirse como

> emacs foo.txt &

Es fácil de usar alias e=emacs, pero ¿cómo inserto &después del nombre del archivo? Me doy cuenta de que puede que no sea posible usar solo alias, así que aceptaré cualquier solución bash. Si se necesita un script de shell, explique cómo funciona.

Enganchado
fuente
44
Debe usar emacscliento gnuclientpara abrir un archivo desde la línea de comandos en lugar de abrir uno nuevo emacspara cada archivo: emacswiki.org/emacs/EmacsClient
andcoz

Respuestas:

38

El alias en bash no puede tener argumentos, pero puedes usar funciones.

e() { emacs "$@" & }

luego

e foo.txt

Hará lo que quieras.

Un programador
fuente
1
Esto tiene un problema cuando escribo e foo*en un directorio con ambos foo.cppy foo.hsolo se abrirá uno de los archivos.
Enganchado el
44
@ Enganchado, luego use en "$@"lugar de "$1"en la función.
Programador
1
@AProgrammer que no parece funcionar para comodines. La sintaxis que estoy usando es: emacs $* &y parece ser una solución aún mejore() { command emacs $* & disown }
nombre