Ich versuche, einen einfachen Alias zu erstellen:
alias draw="pinta &> /dev/null & disown"
Die Absicht hier ist ziemlich offensichtlich. Mein Problem ist, dass ich jedes Mal, wenn ich ein Argument übergebe,
bash: disown: file.jpg: no such job
und Pinta wird geöffnet, ohne dass die Datei geladen ist. Wie übergebe ich mein Argument an Pinta und lehne dann die Aufgabe ab?
BEARBEITEN:
Ich habe versucht, die Argumente wie folgt explizit zu übergeben:
alias draw="pinta $* &> /dev/null & disown"
aber ich bekomme das gleiche Ergebnis
Antwort1
Verwenden Sie stattdessen eine Funktion:
function draw {
pinta "$@" &> /dev/null & disown
}
Bonus:Sie sollten "$@"
anstelle von verwenden $*
.
Angenommen, Sie haben:
function foo {
echo "1: $1"
echo "2: $2"
echo "3: $3"
}
function bar {
echo '$*'; foo $*
echo '$@'; foo $@
echo '"$*"'; foo "$*"
echo '"$@"'; foo "$@"
}
Dann versuche es:
bar "f o o" bar baz
Nur mit "$@"
Ihnen bekommen Sie das richtige Verhalten.