Ich verwende BBEdit zum Schreiben und Testen von Python-Skripten und führe die Skripten normalerweise in einem Terminalprozess mit dem Befehl "In Terminal ausführen" aus. Gibt es eine Möglichkeit, den von BBEdit geöffneten Terminalprozess nach Abschluss des Skripts "aktiv" zu lassen? Ich möchte das nicht haben
[Process completed]
message und stattdessen immer noch eine aktive Eingabeaufforderung zu haben, entweder die Shell oder die Python-Umgebung, wobei alle Variablen, die ich im Skript erstellt habe, noch vorhanden sind. Dies ähnelt der Situation, wenn ich das Skript von einem vorhandenen Terminalprozess aus starte, entweder von der Shell aus:
$ python script_name.py
oder vom Python-Interpreter:
>>> script_name.py
Insbesondere im letzten Fall, wenn das Skript beendet wird, ist der Prozess im Terminalfenster noch aktiv.
quelle
Antworten:
Soweit ich weiß, haben Sie ein Python-Skript in BBEdit.
Sie können den Code mit der Option "Im Terminal ausführen" aus dem Feld "#!" Testen. Speisekarte.
Nun öffnet sich ein Terminalfenster, führt das Skript aus und beendet sich.
Jetzt ist hier der Täter. BBEdit führt nicht nur Ihr Skript aus, sondern fügt auch ein
exit
. Es gibt keine Option in BBEdit, um diesenexit
Befehl zu entfernen . Aber BBEdit ist in hohem Maße skriptfähig und es gibt einige Problemumgehungen. Sie können ein BBEdit-Skript (über das Menü "Skripte") erstellen, das ausgeführt wird. Ich persönlich halte das Erstellen von Diensten jedoch für das einfachste (führen Sie AppleScript aus, mit dem Sie Ihr Skript im Terminal wie manuell öffnen können).In diesem Artikel haben Sie ein Skript bereitgestellt, das genau das tut, was Sie wollen.
quelle
Aufbauend auf der Antwort von CousinCocaine und auf dieser Antwort auf eine alte Frage, die ich selbst im BBEdit-Forum gepostet habe, bin ich zu diesem AppleScript gekommen, das spezifisch für Python ist:
Ich finde diese Antwort besser als die von CousinCocaine vorgeschlagene, nur weil ich eine Tastenkombination für das Skript erstellen kann (AFAIK es ist nicht möglich, eine Tastenkombination mit einem Dienst zu verknüpfen).
Folgende Schritte müssen ausgeführt werden, damit dies funktioniert:
Beachten Sie beim AppleSript, dass die Option "-i" im Python-Aufruf in der Zeile steht
bewirkt, dass nach der Ausführung des Python-Skripts der Python-Interpreter gemäß der Anfrage in der Frage nicht beendet wird.
Wenn die Zeilen
werden durch die Zeilen ersetzt
dann kann dieses AppleScript jedes Skript starten, vorausgesetzt, die richtige "shebang" -Zeile ist in dem Skript als allererste Zeile vorhanden. Für ein Python-Skript sollte die Shebang-Zeile wie folgt lauten:
Für ein Bash-Shell-Skript sollte die Shebang-Zeile wie folgt lauten:
quelle
Dadurch wird der Prozess im Hintergrund ausgeführt.
Alternativ könnten Sie die Antworten hier versuchen , für die ich nicht die Gutschrift nehme
quelle
Dies ist nicht ganz das, was Sie wollen, aber es ist eine vernünftige Umgehung:
FSWatch. Kurz, es überwacht ein Verzeichnis oder eine Datei auf Änderungen und führt ein Skript aus, wenn es eine Änderung sieht.
Anstatt im Terminal zu laufen, haben Sie ein Terminalfenster geöffnet, in dem fswatch die Datei (en) auf Änderungen überwacht. Wenn es eines sieht, wird das Skript ausgeführt - in diesem Fall die überwachte Datei.
Dies hat den Vorteil, dass es jedes Mal im selben Fenster ausgeführt wird, sodass Sie nicht ständig neue Terminalfenster öffnen.
Anfahrt hier:
https://stackoverflow.com/questions/24573584/how-to-watch-file-changes-on-mac-osx-using-fswatch
quelle
Wählen Sie in den Terminaleinstellungen unter "Profile" das Profil aus, das Sie standardmäßig verwenden, und wechseln Sie zur Registerkarte "Shell". Wählen Sie unter "Wenn die Shell beendet wird" die Option "Schließen, wenn die Shell ordnungsgemäß beendet wurde".
Dadurch sollte das Fenster / die Registerkarte geschlossen werden, wenn das Skript, das Sie ausführen, ordnungsgemäß beendet wird.
quelle