Abra la terminal aquí en el buscador de Mac OS [cerrado]


682

¿Hay algo similar al "Abrir ventana de comandos aquí" Windows Powertoy para Mac OS? He encontrado un par de complementos a través de una búsqueda en Google, pero quería ver qué funciona mejor para los desarrolladores.


Respuestas:


900

A partir de Mac OS X Lion 10.7, Terminal incluye exactamente esta funcionalidad como Servicio. Como con la mayoría de los Servicios, estos están deshabilitados de manera predeterminada, por lo que deberá habilitarlo para que aparezca en el menú Servicios.

Preferencias del sistema> Teclado> Accesos directos> Servicios

Habilitar nueva terminal en la carpeta . También hay Nueva pestaña de terminal en la carpeta , que creará una pestaña en la ventana de terminal más frontal (si existe, de lo contrario creará una nueva ventana). Estos servicios funcionan en todas las aplicaciones, no solo en Finder, y operan en carpetas y en nombres de ruta absolutos seleccionados en el texto.

Incluso puede asignarles teclas de comando.

Los servicios aparecen en el submenú Servicios de cada menú de aplicación y dentro del menú contextual (Control-clic o clic derecho en una carpeta o nombre de ruta).

El servicio Nueva Terminal en Carpeta se activará cuando seleccione una carpeta en Finder. No puede simplemente abrir la carpeta y ejecutar el servicio "en su lugar". Vuelva a la carpeta principal, seleccione la carpeta correspondiente, luego active el servicio a través del menú Servicios o el menú contextual.

Además, Lion Terminal abrirá una nueva ventana de terminal si arrastra una carpeta (o nombre de ruta) al icono de la aplicación Terminal, y también puede arrastrar a la barra de pestañas de una ventana existente para crear una nueva pestaña.

Finalmente, si arrastra una carpeta o nombre de ruta a una pestaña (en la barra de pestañas) y el proceso en primer plano es el shell, ejecutará automáticamente un comando "cd". (Arrastrando a la vista de terminal dentro de la pestaña simplemente inserta el nombre de ruta por sí solo, como en versiones anteriores de Terminal).

También puede hacer esto desde la línea de comandos o un script de shell:

open -a Terminal /path/to/folder

Este es el equivalente de la línea de comandos de arrastrar una carpeta / nombre de ruta al icono de la aplicación Terminal.

En una nota relacionada, Lion Terminal también tiene nuevos Servicios para buscar páginas de manual: Abrir la página de manual en Terminal muestra el tema de la página de manual seleccionado en una nueva ventana de terminal, y Buscar páginas de manual en Terminal realiza "apropos" en el texto seleccionado. El primero también comprende las referencias de la página de manual ("open (2)"), los argumentos de la línea de comando de la página de manual ("2 open") y las URL de la página de manual ("x-man-page: // 2 / open").


8
No funciona en Yosemite.
Olcay Ertaş

2
@ OlcayErtaş ¿Qué no funciona? Todo en mi respuesta funciona en Yosemite 10.10.x.
Chris Page

2
¿Tengo que reiniciar Finer? No sé por qué, pero he habilitado el servicio New Terminal at Folder pero no funcionó.
Olcay Ertaş

13
@ OlcayErtaş tiene que hacer clic derecho en el icono de una carpeta para obtener el elemento del menú; no navegue a la carpeta en sí, sino a su padre.
Jonathan Landrum

2
Puedo usarlo haciendo clic con el botón derecho / servicios, pero no puedo usarlo mediante atajos de teclado.
Can Poyrazoğlu


56

Una aplicación que he encontrado indispensable como alternativa es DTerm , que en realidad abre un mini terminal directamente en su aplicación. Además, funciona con casi todo lo que existe: Finder, XCode, PhotoShop, etc.


38

Aclaración (gracias @ vgm64): si ya está en la Terminal, esto le permite cambiar rápidamente a la ventana del Finder superior sin salir de la Terminal. De esta manera, puede evitar usar el mouse.

He agregado lo siguiente a mi .bash_profilepara poder escribir cdffTerminal en cualquier momento.

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 $@`"; };

Esto es de esta sugerencia de terminal de macosxhints.com .


"abrir" abre una nueva ventana del Finder en el directorio actual
jolvi

2
@jolvi que es lo contrario de lo que proporciona esta respuesta. El punto no es abrir una ventana del buscador en pwd, sino al cddirectorio en el que está abierto el buscador.
Jonathan Landrum

Ah, lo siento, por supuesto que tienes razón.
jolvi

14

Echa un vistazo a Abrir terminal aquí . Puede ser el más similar a "Abrir ventana de comandos aquí". Solía >cdtoy esto es muy similar, pero parece ser un poco mejor en el tratamiento de espacios ... pero no es perfecto.

Lo que tiene de muy bueno es la capacidad de " detectar eventos de pulsación de tecla al inicio de la aplicación y usarlos para modificar el comportamiento del script ", lo que permite que el script abra una nueva pestaña en la ventana del terminal más frontal cuando se invoca manteniendo presionada la tecla ⌘. Buen truco.

También tenga en cuenta la respuesta de PCheese; ¡Probablemente sea más útil para usuarios de terminales pesados!


12

Hay una versión actualizada de la muy agradable y delgada Open Terminal aquí publicada por vgm64 y d0k . El cambio fue realizado por James David Low . Publicó la nueva versión en su sitio . Simplemente descargue OpenTerminalHere.zip, extráigalo, mueva el paquete a su carpeta Biblioteca / Scripts y arrástrelo desde allí a su barra de herramientas del Finder.

Lo especial es que siempre abre una nueva pestaña si ya está abierta una ventana de Terminal.app. ¡Muy útil! También noté que el estilo del botón de la aplicación se adapta mejor al estilo Snow Leopard Finder.app que el cdto publicado por redactado .


¡Esto es asombroso! Tenga en cuenta que debe Comando + Arrastrar (no solo arrastrar como se indica en la publicación anterior) a la Barra de herramientas del Finder. Y luego tiene un acceso directo de icono que, cuando se hace clic, terminará desde cualquier carpeta.
B. Nadolson

10

Además, puede copiar un elemento del buscador con el comando-C, saltar a la Terminal (por ejemplo, con Spotlight o QuickSilver) escriba 'cd' y simplemente pegar con el comando-v


4

Creé un paquete con 3 aplicaciones para la barra de herramientas del buscador. Las otras dos aplicaciones lo hacen:

  • Abra Textmate con la selección actual
  • abrir GitX con la carpeta actual

Para obtener más información, consulte aquí: http://nslog.de/posts/71


3

Si instala Big Cat Scripts ( http://www.ranchero.com/bigcat/ ) puede agregar sus propios elementos de menú contextual (clic derecho). No creo que venga con un AppleScript de Open Terminal Here, pero uso este script (que honestamente no recuerdo si me escribí a mí mismo o si saqué el ejemplo de otra persona):


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

Scripts similares también pueden obtener la ruta completa a un archivo con el clic derecho, lo que es aún más útil, creo.


3

Es un poco más de lo que estás pidiendo, pero recomiendo Cocoatech's Path Finder para cualquiera que desee que Finder tenga un poco más de jugo. Incluye un botón de barra de herramientas para abrir una ventana de Terminal para el directorio actual, o un panel retráctil con una línea de comando de Terminal en la parte inferior de cada ventana del Finder. Además de muchas otras características sin las que ahora no puedo vivir. Software muy maduro y estable. http://cocoatech.com/


2

Ok, me doy cuenta de que esto es un poco tarde ... ¿tal vez esta alternativa no estaba disponible al momento de escribir la publicación?

De todos modos, he encontrado que instalar el paquete pos a través de Fink (un requisito previo en este caso, ¿tal vez hay algo similar para quienes usan MacPorts?) Es la solución más fácil. Obtienes dos comandos:

  1. posd: que proporciona el directorio actual de la ventana del Finder (para la cual presumiblemente crea un alias cdf = cd posd)
  2. fdc: que cambia el directorio actual de la ventana del Finder frontal al Terminal pwd. Esto es ligeramente diferente de 'abierto'. que siempre abre una nueva ventana de búsqueda.

Sí, debe cambiar a la ventana Terminal antes de escribir cdf, pero supongo que es bastante barato en comparación con hacer clic en un botón en la barra de herramientas del Finder. Y también funciona con iTerm, no tiene que descargar un botón de la barra de herramientas del Finder que abra una ventana de iTerm. Este es el mismo enfoque propuesto por PCheese, pero no tiene que saturar su .bash_profile.



1

Principalmente uso esta función:

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

También puede asignar un acceso directo a un script como los que se muestran a continuación.

Reutilice una pestaña existente o cree una nueva ventana (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

Reutilice una pestaña existente o cree una nueva pestaña (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

Siempre cree una nueva pestaña (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

Los dos primeros scripts tienen dos ventajas en comparación con los servicios agregados en 10.7:

  • Usan la carpeta en la barra de título en lugar de requerir que primero seleccione una carpeta.
  • Reutilizan la pestaña frontal si no está ocupada, por ejemplo, ejecutando un comando, mostrando una página de manual o ejecutando emacs.

0

Hay un error en AppleScript en OSX 10.6. (2 ventanas de terminal abiertas). Lo arreglé agregando el comando de cierre después de activar. Esto cierra la primera ventana de 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

2
¿Por qué querrías cerrar una ventana de Terminal? ¿Eso no destruirá el trabajo que estabas haciendo?
Rob Kennedy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.