mac comment exécuter une commande dans un autre onglet / fenêtre d'un terminal

1

Sous Windows, je peux exécuter n’importe quel programme à partir de l’invite de commande en tapant

c:> start startup.sh

et windows exécutera le fichier startup.sh dans une autre fenêtre d'invite de commande (terminal).

Comment puis-je faire la même chose sur le Mac (linux bash) pour que le script startup.sh s'exécute dans
1) une fenêtre de terminal différente?
2) un autre onglet de terminal?

mise à jour: Comme mentionné, je cherche à démarrer un programme (tel que mc) ou un script de shell dans un autre onglet ou une autre fenêtre - pas seulement un script de shell.

Anjanbacchu
la source
1
Est-ce que quelque chose sur cette page pourrait vous aider? stackoverflow.com/questions/7171725/…
Touff

Réponses:

1

Vous pouvez lancer un script dans une nouvelle instance de terminal avec:

open -b com.apple.terminal test.sh

test.shest le nom du script que vous voulez exécuter.

La source


@anjanbecchu a trouvé le script suivant:

TAB_NAME=$1; COMMAND=$2; osascript -e "tell application \"Terminal\"" -e "tell application \"System Events\" to keystroke \"t\" using {command down}" -e "do script \"printf '\\\e]1;$TAB_NAME\\\a'; $COMMAND\" in front window" -e "end tell" > /dev/null
Darth Android
la source
quand j'ai essayé cette commande pour lancer un script shell, cela fonctionne; Cependant, lorsque j'ai essayé d'utiliser la même commande pour démarrer midnight commander (mc), cela suppose que mc réside dans le répertoire en cours. Je ne veux pas taper le chemin complet de mc. Y a-t-il un moyen d'utiliser le $ PATH pour trouver ce que je veux? Aussi, quel est le moyen d'exécuter le shellscript / programme dans un autre onglet?
Anjanbacchu
@ anjanbacchu Je ne pense pas que vous puissiez l'exécuter dans un autre onglet. Le problème est qu’il n’ya pas de moyen facile de parler à l’application Terminal en cours de frottement depuis la ligne de commande. Même ce qui précède ne lui parle pas directement - il utilise le mécanisme de type de fichier ouvert du système d'exploitation, comme si vous aviez double-cliqué sur le fichier. Le fonctionnement de la ligne de commande sous Windows est très différent de celui utilisé sur * nix (OS X, Linux), ce qui rend très difficile la tâche que vous souhaitez effectuer.
Darth Android
J'ai trouvé un script sur le net qui peut faire ce que je cherchais. Voici la fonction shell.TAB_NAME = $ 1; COMMAND = 2 $; osascript -e "informe l'application \" Terminal \ "" -e "indique à l'application \" Evénements système \ "la saisie de touche \" t \ "à l'aide de {commande vers le bas}" -e "script \" printf '\\\ e] 1; $ TAB_NAME \\\ a '; $ COMMAND \ "dans la fenêtre avant" -e "end tell"> / dev / null
anjanbacchu