OS X otwiera nowy terminal z linii poleceń, który działa również w systemie Linux

0

Tworzę skrypty npm dla projektu opartego na węzłach i chciałbym utworzyć skrypt, który najpierw otworzy nowy terminal, a następnie wykona tam to polecenie. Sam używam Maca, ale inni deweloperzy mogą używać Linuksa.

Teraz chcę wykonać polecenie cross env w taki sposób, aby działało w obu środowiskach. Wiem, że OS X opiera się na Uniksie, więc można pomyśleć, że dzięki temu istnieje prosty sposób na utworzenie skryptu powłoki cross env, który otwiera terminal.

EDYCJA: Nie chcę żadnych kliknięć myszką. Tylko skrypt powłoki, który otwiera nowy terminal zarówno w systemie OS X, jak i Linux.

Ville Miekk-oja
źródło

Odpowiedzi:

2

Nie ma na to żadnego polecenia międzyplatformowego. Podczas gdy macOS używa Unixa pod spodem, aplikacje terminalowe pod macOS i Linuksem są zupełnie inne, a użytkownik może mieć zainstalowane inne terminale. W systemie macOS może to być Terminal.app, iTerm2 lub inne, a pod Linuksem możesz mieć osoby obsługujące Terminal GNOME, Konsole, Terminator itp. - lub nawet nie działające w środowisku graficznym. Czy zastanawiałeś się nad tym?

Sposoby otwierania aplikacji również różnią się w zależności od systemu operacyjnego. Musisz napisać osobne funkcjonalności dla obu systemów operacyjnych.

System operacyjny Mac

W systemie macOS wszystko, czego potrzebujesz, aby uruchomić Terminal.app i uruchomić skrypt, to:

osascript -e 'tell application "Terminal" to do script "/path/to/script.sh"'

Myślę, że możesz uzyskać domyślny terminal (jeśli nie jest to Terminal.app), sprawdzając domyślne skojarzenia plików, ale jest to trochę uciążliwe bez narzędzi innych firm, takich jak duti(Użyj Homebrew do brew install duti), gdzie możesz:

terminal=$(duti -x .command | head -n 1)
osascript -e "tell application \"$terminal\" to do script \"/path/to/script.sh\""

Ale sądzę duti, że funkcjonalność można poddać inżynierii wstecznej, sprawdzając jej kod źródłowy . Aby uzyskać więcej informacji, zobacz ten post .

Możesz także utworzyć .commandplik i otworzyć go za pomocą open:

touch example.command
echo "echo foo" > example.command
chmod +x example.command
open example.command

Spowodowałoby to automatyczny wybór emulatora terminala zdefiniowanego przez użytkownika.

Linux

W systemie Linux zwykle można uzyskać dostęp do domyślnego terminala za pomocą x-terminal-emulator:

x-terminal-emulator -e "/path/to/script"

Upewnij się, że skrypt jest rzeczywiście wykonywalny ( chmod +x).

slhck
źródło