web-dev-qa-db-fra.com

Ouvrez le terminal ici dans Mac OS Finder

Existe-t-il quelque chose de similaire au "Powertoy Windows" pour "Ouvrir la fenêtre de commande ici"? J'ai trouvé quelques plugins grâce à une recherche sur Google, mais je voulais voir ce qui fonctionnait le mieux pour les développeurs.

682
Abdullah Jibaly

À partir de Mac OS X Lion 10.7, Terminal inclut exactement cette fonctionnalité en tant que service. Comme avec la plupart des services, ceux-ci sont désactivés par défaut. Vous devez donc l'activer pour les afficher dans le menu Services.

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

Activer Nouveau terminal dans un 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 cela créera une nouvelle fenêtre). Ces services fonctionnent dans toutes les applications, pas seulement dans le Finder, et ils agissent aussi bien sur les dossiers 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 un 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 "en place". Retournez au dossier parent, sélectionnez le dossier approprié, puis activez le service via le menu Services ou le menu contextuel.

En outre, Lion Terminal ouvre une nouvelle fenêtre de terminal si vous faites glisser un dossier (ou un chemin d'accès) sur l'icône de l'application Terminal. Vous pouvez également faire glisser le curseur sur 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". (Faire glisser dans la vue du terminal dans l'onglet insère simplement le chemin d'accès, comme dans les anciennes versions de Terminal.)

Vous pouvez également le faire depuis la ligne de commande ou un script Shell:

open -a Terminal /path/to/folder

C'est l'équivalent en ligne de commande de glisser un dossier/chemin d'accès sur l'icône de l'application Terminal.

Sur une note connexe, Lion Terminal dispose également de nouveaux services de consultation des pages de manuel: Ouvrir la page de manuel dans Terminal affiche le sujet de la page de manuel sélectionné dans une nouvelle fenêtre de terminal, et Rechercher des pages de manuel dans Terminal effectue "apropos" sur 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").

900
Chris Page

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’y intégrant très bien. Cela fonctionne avec Terminal, xterm (sous X11), iterm.

153
redacted

Une application que j'ai trouvée indispensable en tant qu'alternative est DTerm , qui ouvre en réalité un mini-terminal directement dans votre application. De plus, cela fonctionne avec à peu près tout - Finder, XCode, PhotoShop, etc.

56
Paul Alexander

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

J'ai ajouté ce qui suit à mon .bash_profile afin de pouvoir taper cdff dans Terminal à 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 $@`"; };

Ceci est de cette astuce de terminal macosxhints.com .

38
PCheese

Départ Open Terminal Here . C'est 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 traiter avec Spaces ... mais pas parfait.

Ce qui est très pratique, c’est la possibilité de " détecter les événements de touche enfoncée au début de l’application et de les utiliser pour modifier le comportement du script "permettant au script d’ouvrir un nouvel onglet dans la fenêtre la plus frontale du terminal 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!

14
physicsmichael

Il y a une version mise à jour du très beau et mince Open Terminal Here posté par vgm64 et d0k . Le changement a été effectué par james david low . Il a publié la nouvelle version sur son site . Il suffit de télécharger OpenTerminalHere.Zip, de l'extraire, de déplacer l'ensemble dans votre dossier Bibliothèque/Scripts et de le faire glisser dans la barre d'outils du Finder.

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

12
pklaus

Vous pouvez également copier un élément du Finder à l’aide de la commande C, passer au terminal (par exemple à l’aide de Spotlight ou de QuickSilver), taper 'cd' et simplement coller avec commande-v.

10
Henrik Hartz

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

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

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

4
stigi

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 que cela vienne avec un appellation Open Terminal Here, mais j'utilise ce script (dont je ne me souviens pas honnêtement si j'ai écrit moi-même ou tiré 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 complet d'un fichier en faisant un clic droit, ce qui est encore plus utile, à mon avis.

3
iayork

C'est un peu plus que ce que vous demandez, mais je recommande Path Finder de Cocoatech à quiconque souhaite que le Finder ait un peu plus de jus. Il comprend un bouton de barre d’outils permettant d’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. En plus de nombreuses autres fonctionnalités sans lesquelles je ne peux plus vivre. Logiciel très mature et stable. http://cocoatech.com/

3
Gabe

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.

2
joachim

Ok, je me rends compte que c'est un peu tard ... peut-être que cette alternative n'était pas disponible au moment de la rédaction du post?

Quoi qu'il en soit, j'ai trouvé que l'installation du paquet pos via Fink (une condition préalable dans ce cas, il existe peut-être 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 actuel de la fenêtre la plus en avant du Finder (pour lequel vous créez probablement un alias cdf = cd posd)
  2. fdc - qui bascule le répertoire actuel de la fenêtre de recherche la plus en avant vers le mot de passe du terminal. Ceci est légèrement différent de "ouvert". qui ouvre toujours une nouvelle fenêtre du Finder.

Oui, vous devez passer à la fenêtre Terminal avant d'écrire cdf, mais j'imagine que c'est assez économique comparé au fait de cliquer sur un bouton de la barre d'outils du Finder. Et cela fonctionne aussi avec iTerm, vous n’avez pas à télécharger un bouton séparé de la barre d’outils du Finder qui ouvre une fenêtre iTerm. C’est la même approche que celle proposée par PCheese, mais vous n’avez pas à encombrer votre .bash_profile.

2
Jonatan Lindén

J'utilise principalement cette fonction:

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

Vous pouvez également assigner 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éutiliser un onglet existant ou créer 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

Toujours créer 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 dans 10.7:

  • Ils utilisent le dossier dans la barre de titre au lieu de vous demander de sélectionner d'abord un dossier.
  • Ils réutilisent l'onglet le plus en avant s'il n'est pas occupé, par exemple. exécuter une commande, afficher une page de manuel ou exécuter emacs.
1
Lri

Il y a un bogue dans AppleScript sur OSX 10.6. (2 fenêtres de terminal ouvertes). J'ai résolu ce problème en ajoutant la commande de fermeture après l'activation. Ceci 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
0
Master Bee