Ouvrir le terminal ici dans le Finder Mac OS [fermé]

682

Existe-t-il quelque chose de similaire à «Ouvrir la fenêtre de commande ici» Windows Powertoy pour Mac OS? J'ai trouvé quelques plugins via une recherche Google, mais je voulais voir ce qui fonctionne le mieux pour les développeurs.

Abdullah Jibaly
la source

Réponses:

900

Depuis Mac OS X Lion 10.7, Terminal inclut exactement cette fonctionnalité en tant que service. Comme pour la plupart des services, ceux-ci sont désactivés par défaut, vous devrez donc l'activer pour le faire apparaître dans le menu Services.

Préférences Système> Clavier> Raccourcis> Services

Activez le nouveau terminal dans le dossier . Il y a aussi Nouvel onglet de terminal dans le dossier , ce qui créera un onglet dans la fenêtre de terminal la plus en avant (le cas échéant, sinon il créera une nouvelle fenêtre). Ces services fonctionnent dans toutes les applications, pas seulement dans le Finder, et ils fonctionnent sur les dossiers ainsi que sur les chemins absolus sélectionnés dans le texte.

Vous pouvez même leur attribuer des touches de commande.

Les services apparaissent dans le sous-menu Services de chaque menu d'application et dans le menu contextuel (Ctrl + clic ou clic droit sur un dossier ou un chemin d'accès).

Le service Nouveau terminal dans le dossier devient actif lorsque vous sélectionnez un dossier dans le Finder. Vous ne pouvez pas simplement ouvrir le dossier et exécuter le service "sur place". Revenez au dossier parent, sélectionnez le dossier approprié, puis activez le service via le menu Services ou le menu contextuel.

De plus, Lion Terminal ouvrira une nouvelle fenêtre de terminal si vous faites glisser un dossier (ou chemin d'accès) sur l'icône de l'application Terminal, et vous pouvez également faire glisser vers la barre d'onglets d'une fenêtre existante pour créer un nouvel onglet.

Enfin, si vous faites glisser un dossier ou un chemin d'accès sur un onglet (dans la barre d'onglets) et que le processus de premier plan est le shell, il exécutera automatiquement une commande "cd". (Le fait de glisser dans la vue du terminal dans l'onglet insère simplement le chemin d'accès seul, comme dans les anciennes versions de Terminal.)

Vous pouvez également le faire à partir de la ligne de commande ou d'un script shell:

open -a Terminal /path/to/folder

Il s'agit de l'équivalent en ligne de commande de faire glisser un dossier / nom de chemin sur l'icône de l'application Terminal.

Dans le même ordre d'idées, Lion Terminal propose également de nouveaux services pour rechercher des pages de manuel: Ouvrir la page de manuel dans Terminal affiche la rubrique de page de manuel sélectionnée dans une nouvelle fenêtre de terminal, et Rechercher les pages de manuel dans Terminal exécute "apropos" le texte sélectionné. Le premier comprend également les références de page de manuel ("open (2)"), les arguments de ligne de commande de page de manuel ("2 open") et les URL de page de manuel ("x-man-page: // 2 / open").

Chris Page
la source
8
Ne fonctionne pas sur Yosemite.
Olcay Ertaş
2
@ OlcayErtaş Qu'est-ce qui ne fonctionne pas? Tout dans ma réponse fonctionne sur Yosemite 10.10.x.
Chris Page
2
Dois-je redémarrer Finer? Je ne sais pas pourquoi, mais j'ai activé le service Nouveau terminal au dossier, mais cela n'a pas fonctionné.
Olcay Ertaş
13
@ OlcayErtaş vous devez cliquer avec le bouton droit sur une icône de dossier pour obtenir l'élément de menu; ne naviguez pas vers le dossier lui-même, mais vers son parent.
Jonathan Landrum
2
Je peux l'utiliser via un clic droit / services mais je ne peux pas l'utiliser via des raccourcis clavier.
Can Poyrazoğlu
153

Cette:

https://github.com/jbtule/cdto#cd-to

C'est une petite application que vous faites glisser dans la barre d'outils du Finder, l'icône s'intègre très bien. Il fonctionne avec Terminal, xterm (sous X11), iterm.

expurgé
la source
56

Une application que j'ai trouvée indispensable comme alternative est DTerm , qui ouvre en fait un mini terminal directement dans votre application. De plus, il fonctionne avec à peu près tout ce qui existe - Finder, XCode, PhotoShop, etc.

Paul Alexander
la source
38

Clarification (merci @ vgm64): si vous êtes déjà dans Terminal, cela vous permet de passer rapidement à la fenêtre du Finder la plus haute sans quitter Terminal. De cette façon, vous pouvez éviter d'utiliser la souris.

J'ai ajouté ce qui suit à mon .bash_profileafin que je puisse taper cdffTerminal à tout moment.

function ff { osascript -e 'tell application "Finder"'\
 -e "if (${1-1} <= (count Finder windows)) then"\
 -e "get POSIX path of (target of window ${1-1} as alias)"\
 -e 'else' -e 'get POSIX path of (desktop as alias)'\
 -e 'end if' -e 'end tell'; };\

function cdff { cd "`ff $@`"; };

C'est à partir de cette astuce Terminal macosxhints.com .

PCheese
la source
"open" ouvre une nouvelle fenêtre du Finder dans le répertoire actuel
jolvi
2
@jolvi c'est le contraire de ce que cette réponse fournit. Le point n'est pas d'ouvrir une fenêtre de recherche sur pwd, mais cdvers le répertoire dans lequel la recherche est ouverte.
Jonathan Landrum
ah, désolé, bien sûr, vous avez raison.
jolvi
14

Découvrez Ouvrir le terminal ici . Il peut être le plus similaire à «Ouvrir la fenêtre de commande ici». j'ai utilisé>cdto et c'est très similaire mais cela semble être un peu mieux pour gérer les espaces ... mais pas parfait.

Ce qu'il a de très agréable, c'est la possibilité de " détecter les événements de frappe au début de l'application et de les utiliser pour modifier le comportement du script ", ce qui permet au script d'ouvrir un nouvel onglet dans la fenêtre du terminal avant lorsqu'il est appelé en maintenant la touche ⌘ enfoncée. Astuce.

Notez également la réponse de PCheese; c'est probablement plus utile pour les gros utilisateurs de terminaux!

physiquemichael
la source
12

Il existe une version mise à jour du très joli et mince Open Terminal Here publié par vgm64 et d0k . Le changement a été fait par James David Low . Il a publié la nouvelle version sur son site . Téléchargez simplement OpenTerminalHere.zip, extrayez-le, déplacez le bundle vers votre dossier Library / Scripts et faites-le glisser de là vers votre barre d'outils du Finder.

La particularité est qu'elle ouvre toujours un nouvel onglet si une fenêtre Terminal.app est déjà ouverte. Très utile! J'ai également noté que le style du bouton de l'application correspond mieux au style Snow Leopard Finder.app que cdto publié par expurgé .

pklaus
la source
C'est génial! Notez que vous devez Command + Glisser (pas seulement faire glisser comme indiqué dans le post ci-dessus) vers la barre d'outils du Finder. Et puis vous avez un raccourci d'icône qui, lorsque vous cliquez dessus, terminera à partir de n'importe quel dossier.
B. Nadolson
10

En outre, vous pouvez copier un élément à partir du Finder en utilisant la commande-C, sauter dans le terminal (par exemple en utilisant Spotlight ou QuickSilver), tapez 'cd' et simplement coller avec command-v

Henrik Hartz
la source
4

J'ai créé un bundle avec 3 applications pour la barre d'outils du Finder. Les deux autres applications:

  • ouvrir Textmate avec la sélection actuelle
  • ouvrir GitX avec le dossier actuel

Pour plus d'informations, voir ici: http://nslog.de/posts/71

stigi
la source
3

Si vous installez des scripts Big Cat ( http://www.ranchero.com/bigcat/ ), vous pouvez ajouter vos propres éléments de menu contextuel (clic droit). Je ne pense pas qu'il vienne avec un applescript Open Terminal Here, mais j'utilise ce script (dont je ne me souviens pas honnêtement si je me suis écrit ou si je me suis éloigné de l'exemple de quelqu'un d'autre):


on main(filelist)
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end main

Des scripts similaires peuvent également vous donner le chemin d'accès complet à un fichier par clic droit, ce qui est encore plus utile, je trouve.

iayork
la source
3

C'est un peu plus que ce que vous demandez, mais je recommande Path Finder de Cocoatech à tous ceux qui souhaitent que le Finder ait un peu plus de jus. Il comprend un bouton de barre d'outils pour ouvrir une fenêtre de terminal pour le répertoire en cours, ou un volet rétractable avec une ligne de commande de terminal au bas de chaque fenêtre du Finder. Et de nombreuses autres fonctionnalités dont je ne peux plus me passer. Logiciel très mature et stable. http://cocoatech.com/


la source
2

Ok, je me rends compte que c'est un peu tard ... peut-être que cette alternative n'était pas disponible au moment d'écrire le post?

Quoi qu'il en soit, j'ai trouvé que l'installation du package pos via Fink (une condition préalable dans ce cas, peut-être qu'il y a quelque chose de similaire pour ceux qui utilisent MacPorts?) Est la solution la plus simple. Vous obtenez deux commandes:

  1. posd - qui donne le répertoire courant de la fenêtre du Finder la plus en avant (pour laquelle vous créez vraisemblablement un alias cdf = cd posd)
  2. fdc - qui fait basculer le répertoire courant de la fenêtre du Finder le plus en avant vers le Terminal pwd. C'est légèrement différent de «ouvert». qui ouvre toujours une nouvelle fenêtre de recherche.

Oui, vous devez basculer vers la fenêtre Terminal avant d'écrire du cdf, mais je suppose que c'est assez bon marché par rapport à cliquer sur un bouton dans la barre d'outils du Finder. Et cela fonctionne également avec iTerm, vous n'avez pas besoin de télécharger un bouton de barre d'outils Finder distinct qui ouvre une fenêtre iTerm. Il s'agit de la même approche que celle proposée par PCheese, mais vous n'avez pas à encombrer votre .bash_profile.

Jonatan Lindén
la source
2

Si, comme moi, vous désactivez la barre d'outils du Finder, ce service ajoute un élément au menu contextuel de chaque dossier: http://blog.leenarts.net/2009/09/03/open-service-here/

Cela vous permet également d'ouvrir n'importe quel dossier que vous voyez dans l'arborescence du Finder.

joachim
la source
1

J'utilise principalement cette fonction:

cf() {
  cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')"
}

Vous pouvez également attribuer un raccourci à un script comme ceux ci-dessous.

Réutilisez un onglet existant ou créez une nouvelle fenêtre (Terminal):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "Terminal"
    if (exists window 1) and not busy of window 1 then
        do script "cd " & quoted form of p in window 1
    else
        do script "cd " & quoted form of p
    end if
    activate
end tell

Réutilisez un onglet existant ou créez un nouvel onglet (Terminal):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    if busy of window 1 then
        tell application "System Events" to keystroke "t" using command down
    end if
    do script "cd " & quoted form of p in window 1
end tell

Créez toujours un nouvel onglet (iTerm 2):

tell application "Finder" to set p to POSIX path of (insertion location as alias)
tell application "iTerm"
    if exists current terminal then
        current terminal
    else
        make new terminal
    end if
    tell (launch session "Default") of result to write text "cd " & quoted form of p
    activate
end tell

Les deux premiers scripts présentent deux avantages par rapport aux services ajoutés en 10.7:

  • Ils utilisent le dossier de la barre de titre au lieu de vous obliger à sélectionner d'abord un dossier.
  • Ils réutilisent l'onglet le plus en avant s'il n'est pas occupé, par exemple en exécutant une commande, en affichant une page de manuel ou en exécutant emacs.
Lri
la source
0

Il y a un bogue dans AppleScript sur OSX 10.6. (2 fenêtres de terminal ouvertes). J'ai corrigé cela en ajoutant la commande close après activation. Cela ferme la première fenêtre du terminal.

on run
    tell application "Finder"
        try
            activate
            set frontWin to folder of front window as string
            set frontWinPath to (get POSIX path of frontWin)
            tell application "Terminal"
                activate
                close
                do script with command "cd \"" & frontWinPath & "\""
            end tell
        on error error_message
            beep
            display dialog error_message buttons ¬
                {"OK"} default button 1
        end try
    end tell
end run
Master Bee
la source
2
Pourquoi voudriez-vous fermer une fenêtre de terminal? Cela ne détruira-t-il pas le travail que vous y faisiez?
Rob Kennedy