Alias ​​perintah untuk dijalankan di latar belakang

25

Saya ingin pintasan keyboard berfungsi seperti itu:

> e foo.txt

untuk memperluas sebagai

> emacs foo.txt &

Ini mudah digunakan alias e=emacs, tetapi bagaimana cara memasukkan &setelah nama file? Saya menyadari itu tidak mungkin menggunakan hanya alias, jadi saya akan menerima solusi bash. Jika skrip shell diperlukan, tolong jelaskan cara kerjanya.

Doyan
sumber
4
Anda harus menggunakan emacsclientatau gnuclientuntuk membuka file dari command-line alih-alih membuka yang baru emacsuntuk setiap file: emacswiki.org/emacs/EmacsClient
andcoz

Jawaban:

38

Alias ​​di bash tidak dapat memiliki argumen, tetapi Anda dapat menggunakan fungsi.

e() { emacs "$@" & }

kemudian

e foo.txt

akan melakukan apa yang Anda inginkan.

Pemrogram
sumber
1
Ini memiliki masalah ketika saya mengetik e foo*direktori dengan keduanya foo.cppdan foo.h, hanya satu file yang akan terbuka.
Hooked
4
@ Hooked, lalu gunakan "$@"alih-alih "$1"dalam fungsi.
Pemrogram
1
@AProgrammer yang sepertinya tidak berfungsi untuk wildcard. Sintaks yang saya gunakan adalah: emacs $* &dan solusi yang lebih baik tampaknyae() { command emacs $* & disown }
nama