Wie schließe ich eine OS X-Anwendung über die Befehlszeile mit einem in meinem .bash_profile definierten Alias?

5

Ich habe das folgende Shell-Skript gefunden, mit dem eine OS X-Anwendung angewiesen werden kann, das Programm zu beenden:

#!/bin/sh

echo | osascript <<EOF
tell application "$*"
  quit
end tell
EOF

Ich habe mehrere einfache Alias-Befehle in meinem .bash_profile und möchte dort einen "quit" -Befehl hinzufügen, anstatt dieses Skript zu verwenden. Ich habe folgendes erstellt, aber es funktioniert nicht:

alias quit='osascript -e "quit application \"$1\""' 

Ich bin mir sicher, dass ich den Befehl getäuscht habe. Irgendein Rat?

Michael Prescott
quelle

Antworten:

7

Verwenden Sie stattdessen eine Funktion:

function quit {
osascript <<EOF
  tell application "$*" to quit
EOF
}
devanjedi
quelle
tell application "$*" to quitist kompakter.
Daniel Beck
@DanielBeck: Ich habe es bearbeitet, um auch andere Redundanzen zu entfernen, z. B. um einen Alias ​​zu definieren, dessen einziger Zweck darin besteht, die Funktion aufzurufen. Ich habe das Zitat im HEREDOC-Stil verlassen, da ich Probleme mit Alternativen hatte und ungeduldig wurde;)
iconoclast
2

Aliase können keine Parameter haben. Aliase führen eine strikte Textsubstitution durch, bei der "Parameter" am Ende stehen.

Ich würde eine Funktion ausführen, die Parameter haben kann.

function quit
{
    if [ $# -ne 0 ]; then
        echo "usage: quit _appname_" >&2
        return
    fi
echo | osascript <<EOF
tell application "$1"
  quit
end tell
EOF
}

Tut mir leid, aber ich kann das heute nicht testen und verifizieren (kein Mac), aber die Idee würde als Funktion funktionieren.

Reiche Homolka
quelle
0

Muss es ein Alias ​​sein?

pkill Application

wie zum Beispiel pkill Safarisollte das gleiche tun

dajo
quelle
Die Antwort ist für eine richtige Antwort, keine andere Frage. Bitte lies, wie ich eine gute Antwort schreibe und bearbeite deine Antwort
bis zum