Apri il terminale qui in Mac OS finder [chiuso]


682

Esiste qualcosa di simile a "Apri finestra di comando qui" di Windows Powertoy per Mac OS? Ho trovato un paio di plugin tramite una ricerca su Google, ma volevo vedere cosa funziona meglio per gli sviluppatori.


Risposte:


900

A partire da Mac OS X Lion 10.7, Terminal include esattamente questa funzionalità come servizio. Come con la maggior parte dei servizi, questi sono disabilitati per impostazione predefinita, quindi è necessario abilitarlo per farlo apparire nel menu Servizi.

Preferenze di Sistema> Tastiera> Scorciatoie> Servizi

Abilita nuovo terminale nella cartella . C'è anche una nuova scheda Terminale nella cartella , che creerà una scheda nella finestra Terminale più in alto (se presente, altrimenti creerà una nuova finestra). Questi servizi funzionano in tutte le applicazioni, non solo nel Finder, e operano su cartelle e su percorsi assoluti selezionati nel testo.

Puoi anche assegnare loro i tasti di comando.

I servizi vengono visualizzati nel sottomenu Servizi di ciascun menu dell'applicazione e nel menu contestuale (Control-Click o Right-Click su una cartella o percorso).

Il servizio Nuovo terminale nella cartella diventerà attivo quando si seleziona una cartella nel Finder. Non è possibile semplicemente aprire la cartella ed eseguire il servizio "sul posto". Torna alla cartella principale, seleziona la cartella pertinente, quindi attiva il servizio tramite il menu Servizi o il menu contestuale.

Inoltre, Lion Terminal aprirà una nuova finestra del terminale se si trascina una cartella (o nome percorso) sull'icona dell'applicazione Terminale e si può anche trascinare sulla barra delle schede di una finestra esistente per creare una nuova scheda.

Infine, se trascini una cartella o un percorso su una scheda (nella barra delle schede) e il processo in primo piano è la shell, eseguirà automaticamente un comando "cd". (Il trascinamento nella vista terminale all'interno della scheda non fa altro che inserire il percorso da solo, come nelle versioni precedenti di Terminale.)

Puoi anche farlo dalla riga di comando o da uno script shell:

open -a Terminal /path/to/folder

Questo è l'equivalente da riga di comando del trascinamento di una cartella / percorso sull'icona dell'applicazione Terminale.

Su una nota correlata, Lion Terminal ha anche nuovi servizi per la ricerca di pagine man: Apri la pagina man in Terminal visualizza l'argomento della pagina man selezionata in una nuova finestra del terminale e Cerca pagine man in Terminal esegue "apropos" sul testo selezionato. Il primo comprende anche i riferimenti alle pagine man ("open (2)"), gli argomenti della riga di comando man page ("2 open") e gli URL delle pagine man ("x-man-page: // 2 / open").


8
Non funziona su Yosemite.
Olcay Ertaş,

2
@ OlcayErtaş Cosa non funziona? Tutto nella mia risposta funziona su Yosemite 10.10.x.
Chris Page

2
Devo riavviare Finer? Non so perché ma ho abilitato il servizio Nuovo terminale nella cartella ma non ha funzionato.
Olcay Ertaş,

13
@ OlcayErtaş devi fare clic con il tasto destro sull'icona di una cartella per ottenere la voce di menu; non accedere alla cartella stessa, ma al suo genitore.
Jonathan Landrum,

2
Posso usarlo con il tasto destro / servizi ma non posso usarlo tramite le scorciatoie da tastiera.
Can Poyrazoğlu l'


56

Un'applicazione che ho trovato indispensabile in alternativa è DTerm , che in realtà apre un mini terminale proprio nella tua applicazione. Inoltre, funziona praticamente con qualsiasi cosa: Finder, XCode, PhotoShop, ecc.


38

Chiarimento (grazie @ vgm64): se sei già nel Terminale, questo ti consente di passare rapidamente alla finestra del Finder più in alto senza uscire dal Terminale. In questo modo, puoi evitare di usare il mouse.

Ho aggiunto quanto segue al mio in .bash_profilemodo da poter digitare cdffTerminal in qualsiasi 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 $@`"; };

Questo è da questo suggerimento terminale macosxhints.com .


"apri" apre una nuova finestra del Finder nella directory corrente
jolvi

2
@jolvi questo è l'opposto di ciò che questa risposta fornisce. Il punto non è aprire una finestra del Finder in pwd, ma alla cddirectory in cui il Finder è aperto.
Jonathan Landrum,

ah, scusa, certo che hai ragione.
jolvi,

14

Dai un'occhiata a Open Terminal Here . Potrebbe essere il più simile a "Apri finestra di comando qui". Ho usato >cdtoe questo è molto simile, ma sembra essere un po 'meglio nel trattare con Spaces ... ma non perfetto.

Ciò che ha di bello è la capacità di " rilevare eventi key-down all'avvio dell'applicazione e di usarli per modificare il comportamento dello script " consentendo allo script di aprire una nuova scheda nella finestra più terminale quando viene richiamato tenendo premuto il tasto ⌘. Trucco pulito.

Nota anche la risposta di PCheese; è probabilmente più utile per gli utenti di terminali pesanti!


12

Esiste una versione aggiornata del terminale aperto molto bello e sottile Qui pubblicato da vgm64 e d0k . Il cambiamento è stato fatto da James David Low . Ha pubblicato la nuova versione sul suo sito . Basta scaricare OpenTerminalHere.zip, estrarlo, spostare il pacchetto nella cartella Libreria / Script e trascinarlo da lì nella barra degli strumenti del Finder.

La cosa speciale è che apre sempre una nuova scheda se una finestra Terminal.app è già aperta. Molto utile! Ho anche notato che lo stile del pulsante dell'applicazione si adatta meglio allo stile di Snow Leopard Finder.app di CDTO inviato da redatto fatto.


Questo è bellissimo! Nota che devi Comando + Trascina (non solo trascinalo come indicato nel post precedente) nella barra degli strumenti del Finder. E poi hai una scorciatoia icona che quando si fa clic terminerà da qualsiasi cartella.
B. Nadolson,

10

Inoltre, puoi copiare un elemento dal finder usando command-C, saltare nel Terminale (es. Usando Spotlight o QuickSilver) digitare 'cd' e semplicemente incollare con command-v


4

Ho creato un pacchetto con 3 app per la barra degli strumenti del Finder. Le altre due app fanno:

  • apri Textmate con la selezione corrente
  • apri GitX con la cartella corrente

Per ulteriori informazioni, consultare qui: http://nslog.de/posts/71


3

Se installi Big Cat Scripts ( http://www.ranchero.com/bigcat/ ) puoi aggiungere le tue voci del menu contestuale (tasto destro). Non credo che venga fornito con un terminale Open Here Here, ma utilizzo questo script (che non ricordo onestamente se mi sono scritto o estratto dall'esempio di qualcun altro):


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

Script simili possono anche darti il ​​percorso completo di un file con il tasto destro del mouse, che è ancora più utile, trovo.


3

È un po 'più di quello che stai chiedendo, ma raccomando il Path Finder di Cocoatech a chiunque desideri che il Finder abbia un po' più di succo. Include un pulsante della barra degli strumenti per aprire una finestra Terminale per la directory corrente o un riquadro a scomparsa con una riga di comando Terminale nella parte inferiore di ciascuna finestra del Finder. Inoltre molte altre funzionalità di cui non posso vivere senza. Software molto maturo e stabile. http://cocoatech.com/


2

Ok, mi rendo conto che è un po 'tardi ... forse questa alternativa non era disponibile al momento della stesura del post?

Ad ogni modo, ho trovato che l'installazione del pacchetto pos tramite Fink (un prerequisito in questo caso, forse esiste qualcosa di simile per coloro che usano MacPorts?) Sia la soluzione più semplice. Ottieni due comandi:

  1. posd - che fornisce la directory corrente della finestra del Finder in primo piano (per la quale presumibilmente crei un alias cdf = cd posd)
  2. fdc - che cambia la directory corrente della finestra del Finder in primo piano nel Terminale pwd. Questo è leggermente diverso da "aperto". che apre sempre una nuova finestra di ricerca.

Sì, devi passare alla finestra Terminale prima di scrivere in cdf, ma suppongo che sia abbastanza economico rispetto a fare clic su un pulsante nella barra degli strumenti del Finder. Funziona anche con iTerm, non è necessario scaricare un pulsante separato sulla barra degli strumenti del Finder che apre una finestra iTerm. Questo è lo stesso approccio proposto da PCheese, ma non devi ingombrare il tuo .bash_profile.



1

Uso principalmente questa funzione:

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

È inoltre possibile assegnare un collegamento a uno script come quelli di seguito.

Riutilizzare una scheda esistente o creare una nuova finestra (Terminale):

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

Riutilizzare una scheda esistente o creare una nuova scheda (Terminale):

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

Crea sempre una nuova scheda (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

I primi due script hanno due vantaggi rispetto ai servizi aggiunti in 10.7:

  • Usano la cartella sulla barra del titolo invece di richiedere prima di selezionare una cartella.
  • Riutilizzano la scheda in primo piano se non è occupata, ad esempio eseguendo un comando, mostrando una pagina man o eseguendo emacs.

0

C'è un bug in AppleScript su OSX 10.6. (2 finestre dei terminali aperte). Ho risolto il problema aggiungendo il comando di chiusura dopo l'attivazione. Questo chiude la prima finestra Terminale.

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
Perché vorresti chiudere una finestra Terminale? Non distruggerà qualsiasi lavoro ci stavi facendo?
Rob Kennedy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.