• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Verknüpfung zu einem Terminal-Befehl erstellen.

happymac

Damasonrenette
Registriert
17.05.09
Beiträge
486
Hallo zusammen!
Ich bin gerade etwas am Rumspielen mit Firefox. Hier mein Vorhaben: Ich will 2 Firefoxprozesse voneinander unabhängig ausführen (als hätte ich zwei mal Firefox installiert, was aber leider nicht geht).
Dazu habe ich mir erst ein neues Profil für Firefox erstellt, zum Aufrufen des Profilmanagers habe ich
Code:
/Applications/firefox.app/Contents/MacOS/firefox[B]-bin[/B] -P
ins Terminal eingegeben. Das hat soweit auch alles geklappt.
Ich kann jetzt zwar 2 Instanzen von Firefox starten und auch voneinander unabhängig ausführen, allerdings stört es mich, dass ich jedesmal den Terminalbefehl eingeben muss, um den Profilmanager aufzurufen.
Jetzt suche ich nach einem kleinen Script oder Ähnlichem, mit dem ich dann durch einfaches Anklicken diesen oben genannten Befehl im Terminal aufrufen lasse und sich somit der Profilmanager aufruft; dort kann ich dann mein Profil wechseln, oder eben eine zweite Instanz starten.
Am besten wäre natürlich ein kleiner Button direkt in Firefox, den habe ich aber nirgends gefunden. Ebenfalls genial wäre ein Button in der Menüleiste; aber auch eine Datei im Dock oder auf dem Schreibtisch würde mich nicht stören.
(edit) Auch gut wäre die Lösung, zwei Verknüpfungen mit Firefox im Dock zu haben, um die einzelnen Profile dann direkt aufrufen zu können. Das klappt leider ohne hin nicht so, denn wenn ich eine Instanz offen habe, werde ich, wenn ich das zweite Firefox-Symbol im Dock anklicke, zum ersten "umgeleitet".

Jedoch habe ich so ziemlich keine Ahnung, wie ich so eine Verknüpfung erstelle, und vor allem nicht sowas spezielles.
Ich habe schon vom Addon "Profile Switcher" gelesen, läuft jedoch nur mit Version 2.x.xx von Firefox o_O.

Wäre super, wenn mir jemand hier eine möglichst elegante Lösung bieten könnte... ;)
Vielen Dank, happymac.
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
2 Möglichkeiten fallen mir spontan ein:

1. Ein applescript mit ungefähr folgendem inhalt:
Code:
do shell script "/Applications/Firefox.app/Contents/MacOS/firefox-bin -P"

Oder eleganter:
Code:
set bundleIdentifier to "org.mozilla.firefox"
try
tell application "Finder" to set bundlePosixPath to POSIX path of ((application file id bundleIdentifier) as alias)
do shell script (quoted form of (bundlePosixPath & "/Contents/MacOS/firefox-bin -P"))
on error e
display alert "hat nicht geklappt, weil:" message e as warning
end

das ganze als app gespeichert.


2. ein shell script:
Code:
#!/bin/bash
/Applications/Firefox.app/Contents/MacOS/firefox-bin -P
Könnte man als "Starte_FF-PManager.command speichern", ausführrechte verpassen nicht vergessen, und dann durch doppelklick ausführen.


Was du, afaik, nicht kannst, ist eine solche datei mit einem file-link aus dem browser ausführen. das wäre ja ein mega sicherheitsrisiko.
 
  • Like
Reaktionen: happymac

happymac

Damasonrenette
Registriert
17.05.09
Beiträge
486
Perfekt! Vielen Dank dafür! :)

Ich habe es mit dem AppleScript gemacht, also mit
Code:
do shell script "/Applications/Firefox.app/Contents/MacOS/firefox-bin -P"

Ist genau das, was ich gesucht habe. Das ganze jetzt noch ins Dock und mein Plan ist perfekt! :)
 

pooz

Fuji
Registriert
07.11.09
Beiträge
37
Hallo,

ich habe Ähnliches probiert mit einem andere Terminalbefehl, aber leider klappt das nicht.
Ich möchte gerne eine enfternte Verbindung aufbauen, aber nicht jedes Mal das Terminalfenster einschließlich cmd-shift-k bemühen, sondern bequem auf ein icon im dock drücken.

Der Befehl lautet (verkürzt): ssh -l name -L localhost:1234:svn.blablabla

Aber ich erhalte eine Fehlermeldung:
Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory
Permission denied (publickey,password).

Wünschenswert wäre auch, wenn sich nach dem Aufbau der entfernten Verbindung gleich mein SVN-Programm "Cornerstone" sich öffnen würde.

Danke für eure Hilfe!!
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Wie willst du denn die ssh-Verbindung nutzen, ohne ein Terminal/eine Shell, mit dem/der du kommunizieren könntest?
Du verbindest den entfernten Rechner also mit... nichts?
Das stelle ich mir irgendwie ...schwierig... vor.

Dir ist schon klar, dass du bereits ein entsprechendes Dock-Symbol besitzt?
Guckstdu mal ins Kontextmenü des Symbols von Terminal.app
 

pooz

Fuji
Registriert
07.11.09
Beiträge
37
Na ich wollte gerne ein Kommando mir basteln, was automatisch eine Shell öffnet und die entfernte Verbindung aufbaut. Wünschenswert wäre noch, wenn dann Cornerstone zusätzlich geöffnet wird.

Das Kontextmenü hab ich bereits gesehen.

Ich denke, meine Frage ist noch nicht ganz klar formuliert worden von mir:
Ich möchte gerne den Mehraufwand vermeiden, per Hand:
1.) Terminal zu öffnen
2.) Entfernte Verbindung öffnen
(oder alternativ Kontextmenü des Terminal.apps anklicken, dann Entfernte Verbindung wählen)
3.) Dann die bestimmte EV auswählen
4.) Cornerstone öffnen

All das, würde ich äußerst gerne in einem Skript/Kommand drin haben. Sollte gehen, gehe ich von aus. Aber how?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Versuch mal folgendes:
Code:
tell application "Terminal"
	activate
	do script "ls -la /"
end tell
Das sollte eigentlich Denkanstoss genug sein?

Plies notiere: "do script" vs. "do shell script".
"do script" als zu übermittelnde Botschaft an Terminal.app; versus
"do shell script" als AppleSkript-interner Befehl, der eine autonome Shell ohne Feedback ausführt
 

pooz

Fuji
Registriert
07.11.09
Beiträge
37
Ausgezeichnet,

dankeschön, funktioniert seht gut.
Habe es als "Programm" gespeichert und im Dock abgelegt.

Zur Verifikation:
1.) Ist es richtig, dass jede Anwendung seine eigene Tell-Umgebung benötigt?
2.) Wodrin liegt der Unterschied zwischen "activate" und "launch"
3.) Ist es möglich, dass sich nur 1 Shell-Fenster öffnet?

Danke und Gruß!
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
1.) Ist es richtig, dass jede Anwendung seine eigene Tell-Umgebung benötigt?
Das nennt sich "tell-Block".
Alle in einem solchen Block zusammengefassten Anweisungen richten sich an das bestimmte, genannte Programm bzw Skripterweiterungsmodul.
Brauchst du nur eine einzelne Anweisungszeile, geht das auch ohne Block:
Code:
tell app "Finder" to quit

-- ist das gleiche wie

tell app "Finder"
  quit
end tell
2.) Wodrin liegt der Unterschied zwischen "activate" und "launch"
"launch" startet ein Programm nur (falls es nicht bereits läuft)
"activate" macht das gleiche UND holt es zusätzlich in den Vordergrund

"launch" ist meistens obsolet, da das Programm beim versenden der ersten daran gerichteten Anweisung sowieso geöffnet wird. Braucht man eigentlich nur, wenn das den zeitlichen Ablauf des Skripts visuell stören würde und man das Prog daher schon rechtzeitig vorher am laufen haben will. Oder wenn man gar nichts anderes mehr durchführen will als nur ein Programm aufstarten zu lassen und das wars.

3.) Ist es möglich, dass sich nur 1 Shell-Fenster öffnet?
Klar, dazu muss nur Terminal.app bereits vorher schon laufen.
(Das erste Fenster öffnet sich schon durch das "activate", falls das Programm damit erst gestartet werden musste - genauso wie bei einem Dock-Klick bedingt der Programmstart automatisch das öffnen eines neuen, leeren Fensters.)
 

pooz

Fuji
Registriert
07.11.09
Beiträge
37
Ok, danke. Problem 3.) werde ich wohl nicht lösen können, da meistens Terminal.app nicht bereits läuft.

Also, bis dahin!
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
@problem 3:
sowas müsste eigentlich funktionieren. konnte es aber nicht ausprobieren, weil ich grad nicht an osx sitze, sondern an... ähm... etwas anderes. :-[

Code:
set myTerminalCMD to "ls -1 /"
tell app "system events" to set terminalRunning  to (name of processes contains "Terminal")

if (terminalRunning) then
tell app "terminal" 
if (count of windows)>0 then
my cmdInNewTab(myTerminalCMD)
else
my cmdInNewWin(myTerminalCMD)
end
end
else
cmdInNewWin(myTerminalCMD)
end

to cmdInNewWin(cmd)
tell app "terminal" to do script cmd
end

to cmdInNewTab(cmd)
tell app "terminal"
activate
tell window 1
tell app "system events" to keystroke "t" using {command down}
do script cmd in it's selected tab
end
end
end

edit: wieder an osx: geht!
 
Zuletzt bearbeitet: