Question:
Comment ouvrir un nouvel onglet Terminal dans le répertoire de travail actuel?
sargas
2014-04-28 22:02:57 UTC
view on stackexchange narkive permalink

Je souhaite créer et exécuter une fonction bash qui:

  1. cd dans le répertoire d'un projet
  2. Ouvrez un nouvel onglet dans Terminal dans le même répertoire
  3. Ouvrez mes outils de développement et démarrez les services de développement

L'élément n ° 2 ne fonctionne pas comme prévu, le nouvel onglet ne fonctionne pas ne change pas de répertoire.

Voici le script (les deux fonctions résidant dans mon fichier .bashrc :

  # Ouvre un nouvel onglet (nécessite un chemin comme argument) new_terminal_tab () {osascript -e "dire à l'application \" Terminal \ "" \ -e "dire à l'application \" Evénements système \ "d'appuyer sur une touche \" t \ "en utilisant {commande vers le bas}" \ -e "do script \" cd $ 1; clear; \ "dans la fenêtre avant" \ -e "end tell" > / dev / null} # Configurer workspaceaffiliatesForm () {# cd dans le répertoire du projet cd / Users / iamuser / Documents / chemin / vers / projet \ fichier # Obtenir le répertoire de travail pwd = `pwd` # Ouvrir un nouvel onglet dans Terminal et cd i nto project's directory # L'idée est d'avoir un onglet avec la sortie du serveur Rails, et un autre onglet dans le répertoire du projet new_terminal_tab $ pwd # Ouvrir le projet dans Sublime Text 2 subl $ pwd # Démarrer le serveur Rails server rails}  

Qu'est-ce que je fais de mal? Que fait ce code que je ne sais pas?


Mise à jour

Le chemin du répertoire auquel je tente d'accéder contient des espaces. Mais échapper à l'espace n'aide pas du tout. Le script fonctionne avec des chemins qui n'incluent pas d'espaces.

Cinq réponses:
#1
+11
grg
2014-04-28 22:09:09 UTC
view on stackexchange narkive permalink

L'ouverture d'un nouvel onglet dans Terminal devrait par défaut conserver le répertoire actuel. Si ce n'est pas le cas, vous avez peut-être cassé le $ PROMPT_COMMAND .

N'oubliez pas également de ne pas remplacer la valeur précédente si vous avez l'intention d'ajouter un comportement personnalisé en ajoutant ; $ PROMPT_COMMAND à la fin.

  PROMPT_COMMAND = "my_custom_function; $ PROMPT_COMMAND"  

Pour référence, voici la valeur par défaut de / etc / bashrc (OS X 10.9):

  # Indiquez au terminal le répertoire de travail à chaque invite.if ["$ TERM_PROGRAM" == "Apple_Terminal"] && [- z "$ INSIDE_EMACS"]; then update_terminal_cwd () {# Identifiez le répertoire en utilisant une URL de schéma "file:", # incluant le nom d'hôte pour lever l'ambiguïté des connexions locales par rapport aux # connexions distantes. Espaces de pourcentage de fuite. local SEARCH = '' local REPLACE = '% 20' local PWD_URL = "file: // $ HOSTNAME $ {PWD // $ SEARCH / $ REPLACE}" printf '\ e] 7;% s \ a' "$ PWD_URL" } PROMPT_COMMAND = "update_terminal_cwd; $ PROMPT_COMMAND" fi  
$ PROMPT_COMMAND n'est pas cassé. D'autres suggestions?
Cela résout mon problème, mais il serait utile d'expliquer pourquoi $ PROMPT_COMMAND est utilisé pour le répertoire courant.
#2
+6
rossarian
2016-08-25 23:50:13 UTC
view on stackexchange narkive permalink

Je sais que cette question est un peu datée mais je viens de trouver une réponse qui serait utile pour les utilisateurs d'iTerm2 sous Mac OS X.

Sous l'onglet "profil" dans les préférences iTerm2, vous pouvez définir exactement oùiterm ouvre de nouveaux onglets sous la rubrique "Répertoire de travail"

iterm preferences

Après cela, fermez et redémarrez iTerm et vous devriez être prêt à partir!

C'est exactement ce que je veux.Réservoirs ;)
#3
+1
sargas
2014-04-29 22:15:36 UTC
view on stackexchange narkive permalink

Donc, comme il a été mentionné, mon script fonctionnait avec des chemins qui n'incluaient pas d'espaces. Il s'avère que la solution consiste à envelopper la variable (dans new_terminal_tab () ) entre guillemets simples comme ceci:

-e "do script \" cd '$ 1 '; clear; \ "in front window" \

Incroyable ce que les citations peuvent faire n'est-ce pas?

#4
  0
Jose Llausas
2014-04-29 00:58:48 UTC
view on stackexchange narkive permalink

J'utilise une application appelée go2shell. Cela vous donne un petit bouton sur Finder qui ouvre le répertoire actuel dans un terminal.

https://itunes.apple.com/es/app/go2shell/id445770608?mt=12

Vous pouvez également utiliser le terminal pour accéder au dossier de votre choix et utiliser «ouvrir».

#5
  0
Saaru Lindestøkke
2014-04-29 01:40:06 UTC
view on stackexchange narkive permalink

Le service fourni ici fonctionne pour moi. Cela ouvre un nouvel onglet Terminal dans le dossier à partir duquel j'ai exécuté le service.

J'ai rencontré le problème que lorsque j'avais déjà une fenêtre Terminal ouverte, une nouvelle fenêtre s'ouvrirait. Je l'ai résolu comme suit:

  on run {input, parameters} repeat with this_item in input set the_path to POSIX path of this_item repete until the_path ends with "/" set the_path to text 1 thru - 2 of the_path end repeat set numberOfWindows à "0" dire à l'application "Terminal" activer set numberOfWindows à (numberOfWindows + (count windows)) si numberOfWindows est 0 puis faire un script avec la commande "cd" & sous forme citée du_path activer sinon activer le délai ( 0.3) dire à l'application "Evénements système" la frappe "t" en utilisant la commande down end tell do script avec la commande "cd" & a cité la forme citée de the_path dans la fenêtre 0 end if end tell end repeat return inputend run  

Tous les crédits pour ce code vont à Jeroen Leenarts. Je viens de faire quelques petits ajustements.

c'est un script intéressant. Mais mon idée est de taper une commande dans Terminal et d'ouvrir mes applications ainsi que les deux onglets de Terminal, un pour Rails Server, un autre dans le répertoire où réside le projet.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...