Alias ​​ein Befehl, der im Hintergrund ausgeführt werden soll

25

Ich möchte, dass eine Tastenkombination so funktioniert:

> e foo.txt

erweitern als

> emacs foo.txt &

Es ist einfach zu benutzen alias e=emacs, aber wie füge ich das &nach dem Dateinamen ein? Mir ist klar, dass die Verwendung von just möglicherweise nicht möglich aliasist. Ich akzeptiere daher jede bash-Lösung. Wenn ein Shell-Skript benötigt wird, erklären Sie bitte, wie es funktioniert.

Süchtig
quelle
4
Sie sollten emacsclientoder verwenden gnuclient, um eine Datei über die Befehlszeile zu öffnen, anstatt emacsfür jede Datei eine neue zu öffnen : emacswiki.org/emacs/EmacsClient
andcoz

Antworten:

38

Alias ​​in Bash kann keine Argumente haben, aber Sie können Funktionen verwenden.

e() { emacs "$@" & }

dann

e foo.txt

werde tun was du willst.

Ein Programmierer
quelle
1
Dies hat ein Problem, wenn ich e foo*ein Verzeichnis mit beiden foo.cppund eingebe foo.h, wird nur eine der Dateien geöffnet.
Hooked
4
@Hooked, dann verwenden Sie "$@"statt "$1"in der Funktion.
AProgrammer
1
@AProgrammer, der nicht für Platzhalter zu funktionieren scheint. Die Syntax, die ich verwende, ist: emacs $* &und eine noch bessere Lösung scheint zu seine() { command emacs $* & disown }
Name