Откройте терминал здесь в Mac OS finder [закрыто]

682

Есть ли что-то похожее на «Открыть окно командной строки» Windows Powertoy для Mac OS? Я нашел пару плагинов через поиск в Google, но хотел посмотреть, что лучше всего подходит для разработчиков.

Абдулла Джибали
источник

Ответы:

900

Начиная с Mac OS X Lion 10.7, Terminal включает в себя именно эту функцию в качестве Сервиса. Как и в большинстве сервисов, по умолчанию они отключены, поэтому вам нужно включить это, чтобы оно появилось в меню сервисов.

Системные настройки> Клавиатура> Сочетания клавиш> Сервисы

Включить новый терминал в папке . В папке также есть новая вкладка терминала , которая создаст вкладку в самом верхнем окне терминала (если есть, в противном случае будет создано новое окно). Эти Сервисы работают во всех приложениях, а не только в Finder, и они работают с папками, а также с абсолютными путями, выбранными в тексте.

Вы даже можете назначить им клавиши управления.

Службы отображаются в подменю «Службы» каждого меню приложения и в контекстном меню (удерживая нажатой клавишу «Control» или «Щелчок правой кнопкой мыши» на папке или имени пути).

Служба « Новый терминал в папке» станет активной после выбора папки в Finder. Вы не можете просто открыть папку и запустить службу «на месте». Вернитесь в родительскую папку, выберите соответствующую папку, затем активируйте службу через меню «Сервисы» или контекстное меню.

Кроме того, Lion Terminal откроет новое окно терминала, если вы перетащите папку (или путь к файлу) на значок приложения терминала, а также вы можете перетащить на панель вкладок существующего окна, чтобы создать новую вкладку.

Наконец, если вы перетащите папку или имя пути на вкладку (в панели вкладок), а основной процесс - это оболочка, он автоматически выполнит команду «cd». (Перетаскивание в представление терминала на вкладке просто вставляет путь самостоятельно, как в более старых версиях Терминала.)

Вы также можете сделать это из командной строки или из сценария оболочки:

open -a Terminal /path/to/folder

Это эквивалент командной строки для перетаскивания папки / пути к значку приложения терминала.

Что касается примечания, у Lion Terminal также есть новые службы для поиска справочных страниц: при открытии справочной страницы в терминале отображается выбранная тема справочной страницы в новом окне терминала, а при поиске справочных страниц в терминале выполняется «уместно» для выбранного текста. Первый также понимает ссылки на справочную страницу («open (2)»), аргументы командной строки справочной страницы («2 open») и URL-адреса справочной страницы («x-man-page: // 2 / open»).

Крис Пейдж
источник
8
Не работает на Йосемити.
Олкай Эрташ
2
@ OlcayErtaş Что не работает? Все в моем ответе работает на Yosemite 10.10.x.
Крис Пейдж
2
Нужно ли перезапускать Finer? Я не знаю почему, но я включил Новый терминал в службе папок, но он не работал.
Олкай Эрташ
13
@ OlcayErtaş Вы должны щелкнуть правой кнопкой мыши значок папки, чтобы получить пункт меню; не переходить к самой папке, а к ее родителю.
Джонатан Ландрум
2
Я могу использовать его с помощью правого клика / службы, но я не могу использовать его с помощью сочетаний клавиш.
Может Пойразоглу
153

Эта:

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

Это небольшое приложение, которое вы перетаскиваете на панель инструментов Finder, значок очень хорошо вписывается. Работает с терминалом, xterm (под X11), iterm.

УДАЛЕНО
источник
56

Приложение, которое я нашел незаменимым в качестве альтернативы, - это DTerm , который фактически открывает мини-терминал прямо в вашем приложении. Кроме того, он работает практически со всем - Finder, XCode, PhotoShop и т. Д.

Пол Александр
источник
38

Пояснение (спасибо @ vgm64): если вы уже находитесь в Терминале, это позволяет вам быстро перейти в самое верхнее окно Finder, не выходя из Терминала. Таким образом, вы можете избежать использования мыши.

Я добавил следующее к своему, .bash_profileчтобы я мог печатать cdffв Терминале в любое время.

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

Это из этой подсказки терминала macosxhints.com .

PCheese
источник
«open.» открывает новое окно Finder в текущем каталоге
jolvi
2
@jolvi это противоположно тому, что дает этот ответ. Смысл не в том, чтобы открыть окно поиска pwd, а cdв том каталоге, в котором открыт поиск.
Джонатан Ландрум
ах, извини, конечно ты прав.
Jolvi
14

Проверьте открытый терминал здесь . Это может быть больше всего похоже на «Открыть окно команд здесь». Я использовал, >cdtoи это очень похоже, но это, кажется, немного лучше иметь дело с пробелами ... но не идеально.

Очень приятно то, что он может « обнаруживать события нажатия клавиш при запуске приложения и использовать их для изменения поведения сценария », позволяя сценарию при вызове открывать новую вкладку в самом переднем окне терминала. удерживая клавишу ⌘. Аккуратный трюк.

Также обратите внимание на ответ PCheese; это, вероятно, более полезно для активных пользователей терминалов!

physicsmichael
источник
12

Здесь обновленная версия очень красивого и тонкого открытого терминала, размещенного vgm64 и d0k . Изменение было сделано Джеймсом Дэвидом Лоу . Он опубликовал новую версию на своем сайте . Просто скачайте OpenTerminalHere.zip, распакуйте его, переместите пакет в папку Library / Scripts и перетащите его оттуда на панель инструментов Finder.

Что особенного в этом то, что он всегда открывает новую вкладку, если окно Terminal.app уже открыто. Очень полезный! Я также отметил , что стиль кнопки приложения лучше подходит к стилю Snow Leopard Finder.app чем cdto разместил отредактированный сделал.

pklaus
источник
Это круто! Обратите внимание, что вы должны Ctrl + Drag (а не просто перетаскивать, как указано в посте выше) его на панель инструментов Finder. И тогда у вас есть значок ярлыка, который при нажатии будет терминал из любой папки.
Б. Надолсон
10

Кроме того, вы можете скопировать элемент из поиска с помощью команды-C, перейти в терминал (например, с помощью Spotlight или QuickSilver), набрав «cd», и просто вставить с помощью команды-v

Хенрик Харц
источник
4

Я создал пакет с 3 приложениями для панели инструментов поиска. Два других приложения делают:

  • открыть TextMate с текущим выбором
  • откройте GitX с текущей папкой

Для получения дополнительной информации см. Здесь: http://nslog.de/posts/71

stigi
источник
3

Если вы устанавливаете скрипты Big Cat ( http://www.ranchero.com/bigcat/ ), вы можете добавить свои собственные элементы контекстного меню (щелчок правой кнопкой мыши). Я не думаю, что он поставляется с яблочным скриптом Open Terminal Here, но я использую этот скрипт (который я честно не помню, написал ли я сам или взял из чужого примера):


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

Подобные сценарии могут также дать вам полный путь к файлу при щелчке правой кнопкой мыши, что, на мой взгляд, еще более полезно.

iayork
источник
3

Это немного больше, чем вы просите, но я рекомендую Cocoatech Path Finder для всех, кто хочет, чтобы у Finder было немного больше сока. Он включает кнопку панели инструментов для открытия окна терминала для текущего каталога или выдвижную панель с командной строкой терминала внизу каждого окна Finder. Плюс многие другие функции, без которых я сейчас не могу жить. Очень зрелое, стабильное программное обеспечение. http://cocoatech.com/


источник
2

Хорошо, я понимаю, что это немного поздно ... может быть, эта альтернатива не была доступна на момент написания поста?

В любом случае, я считаю, что установка pos-пакета через Fink (обязательное условие в данном случае, может быть, есть что-то подобное для тех, кто использует MacPorts?) - самое простое решение. Вы получаете две команды:

  1. posd - который дает текущий каталог переднего окна Finder (для которого вы предположительно создаете псевдоним cdf = cd posd)
  2. fdc - переключает текущий каталог самого переднего окна Finder на Terminal pwd. Это немного отличается от «открытого». который всегда открывает новое окно поиска.

Да, вы должны переключиться в окно терминала перед написанием cdf, но я полагаю, это довольно дешево по сравнению с нажатием кнопки на панели инструментов Finder. И это также работает с iTerm, вам не нужно загружать отдельную кнопку панели инструментов Finder, которая открывает окно iTerm. Это тот же подход, который предлагает PCheese, но вам не нужно загромождать свой .bash_profile.

Джонатан Линден
источник
2

Если, как и я, вы отключаете панель инструментов Finder, эта служба добавляет элемент в контекстное меню каждой папки: http://blog.leenarts.net/2009/09/03/open-service-here/

Это также позволяет открывать любую папку, которую вы видите в древовидном представлении Finder.

Иоахим
источник
1

Я в основном использую эту функцию:

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

Вы также можете назначить ярлык для скрипта, как показано ниже.

Повторно используйте существующую вкладку или создайте новое окно (Терминал):

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

Повторно используйте существующую вкладку или создайте новую вкладку (Терминал):

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

Всегда создавайте новую вкладку (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

Первые два скрипта имеют два преимущества по сравнению с сервисами, добавленными в 10.7:

  • Они используют папку в строке заголовка вместо того, чтобы требовать, чтобы вы сначала выбрали папку.
  • Они повторно используют переднюю вкладку, если она не занята, например, запуска команды, отображения страницы руководства или запуска emacs.
LRI
источник
0

В AppleScript есть ошибка в OSX 10.6. (Открыты 2 оконных окна). Я исправил это, добавив команду закрытия после активации. Это закроет первое окно терминала.

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
Почему вы хотите закрыть окно терминала? Разве это не разрушит какую бы работу вы в ней не делали?
Роб Кеннеди