Argumente an Alias ​​übergeben und dann verleugnen

Argumente an Alias ​​übergeben und dann verleugnen

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.

verwandte Informationen