Mở terminal ở đây trong công cụ tìm Mac OS [đã đóng]


682

Có cái gì đó tương tự như "Cửa sổ lệnh mở ở đây" Windows Powertoy cho Mac OS không? Tôi đã tìm thấy một vài plugin thông qua một tìm kiếm google nhưng muốn xem những gì hoạt động tốt nhất cho các nhà phát triển ngoài kia.


Câu trả lời:


900

Kể từ Mac OS X Lion 10.7, Terminal bao gồm chính xác chức năng này như một Dịch vụ. Giống như hầu hết các Dịch vụ, các dịch vụ này bị tắt theo mặc định, vì vậy bạn sẽ cần bật tính năng này để xuất hiện trong menu Dịch vụ.

Tùy chọn hệ thống> Bàn phím> Phím tắt> Dịch vụ

Kích hoạt Terminal mới tại Thư mục . Ngoài ra còn có Tab Terminal mới tại Thư mục , sẽ tạo một tab trong cửa sổ Terminal ngoài cùng (nếu có, nó sẽ tạo một cửa sổ mới). Các Dịch vụ này hoạt động trong tất cả các ứng dụng, không chỉ Finder và chúng hoạt động trên các thư mục cũng như tên đường dẫn tuyệt đối được chọn trong văn bản.

Bạn thậm chí có thể gán các phím lệnh cho chúng.

Các dịch vụ xuất hiện trong menu con Dịch vụ của mỗi menu ứng dụng và trong menu ngữ cảnh (Nhấp chuột phải hoặc Nhấp chuột phải vào thư mục hoặc tên đường dẫn).

Các New Terminal tại thư mục dịch vụ sẽ được kích hoạt khi bạn chọn một thư mục trong Finder. Bạn không thể chỉ cần mở thư mục và chạy dịch vụ "tại chỗ". Quay trở lại thư mục mẹ, chọn thư mục liên quan, sau đó kích hoạt dịch vụ thông qua menu Dịch vụ hoặc menu ngữ cảnh.

Ngoài ra, Lion Terminal sẽ mở một cửa sổ terminal mới nếu bạn kéo một thư mục (hoặc tên đường dẫn) vào biểu tượng ứng dụng Terminal và bạn cũng có thể kéo vào thanh tab của một cửa sổ hiện có để tạo một tab mới.

Cuối cùng, nếu bạn kéo một thư mục hoặc tên đường dẫn vào một tab (trong thanh tab) và quá trình tiền cảnh là shell, nó sẽ tự động thực hiện lệnh "cd". (Kéo vào chế độ xem thiết bị đầu cuối trong tab chỉ tự chèn tên đường dẫn, như trong các phiên bản cũ hơn của Terminal.)

Bạn cũng có thể làm điều này từ dòng lệnh hoặc tập lệnh shell:

open -a Terminal /path/to/folder

Đây là dòng lệnh tương đương với việc kéo thư mục / tên đường dẫn vào biểu tượng ứng dụng Terminal.

Trên một lưu ý liên quan, Lion Terminal cũng có Dịch vụ mới để tra cứu trang man: Trang man mở trong Terminal hiển thị chủ đề trang man được chọn trong cửa sổ terminal mới và Search man Pages trong Terminal thực hiện "apropos" trên văn bản đã chọn. Cái trước cũng hiểu các tham chiếu trang man ("open (2)"), đối số dòng lệnh man page ("2 open") và URL trang man ("x-man-page: // 2 / open").


8
Không hoạt động trên Yosemite.
Olcay Ertaş

2
@ OlcayErtaş Cái gì không hoạt động? Mọi thứ trong câu trả lời của tôi đều hoạt động trên Yosemite 10.10.x.
Chris Trang

2
Tôi có phải khởi động lại Finer không? Tôi không biết tại sao nhưng tôi đã bật New Terminal tại dịch vụ Thư mục nhưng nó không hoạt động.
Olcay Ertaş

13
@ OlcayErtaş bạn phải nhấp chuột phải vào biểu tượng thư mục để lấy mục menu; không điều hướng đến thư mục chính nó, nhưng đến cha mẹ của nó.
Jonathan Landrum

2
Tôi có thể sử dụng nó thông qua nhấp chuột phải / dịch vụ nhưng tôi không thể sử dụng nó thông qua các phím tắt.
Can Poyrazoğlu 11/07/2015


56

Một ứng dụng mà tôi đã tìm thấy không thể thiếu thay thế là DTerm , ứng dụng này thực sự mở một thiết bị đầu cuối mini ngay trong ứng dụng của bạn. Thêm vào đó, nó hoạt động với mọi thứ ngoài kia - Finder, XCode, PhotoShop, v.v.


38

Làm rõ (cảm ơn @ vgm64): nếu bạn đã ở trong Terminal, điều này cho phép bạn nhanh chóng thay đổi sang cửa sổ Finder trên cùng mà không cần rời Terminal. Bằng cách này, bạn có thể tránh sử dụng chuột.

Tôi đã thêm các mục sau vào đây để tôi .bash_profilecó thể nhập cdffTerminal bất cứ lúc nào.

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

Đây là từ gợi ý Terminal macosxhints.com này .


"open." mở một cửa sổ Finder mới trong thư mục hiện tại
jolvi 7/1/2015

2
@jolvi đó là điều ngược lại với những gì câu trả lời này cung cấp. Điểm không phải là để mở một cửa sổ tìm kiếm tại pwd, nhưng đến cdthư mục mà công cụ tìm đang mở.
Jonathan Landrum

ah, xin lỗi, tất nhiên bạn đúng
jolvi

14

Kiểm tra Open Terminal tại đây . Nó có thể giống với "Cửa sổ lệnh mở ở đây". Tôi đã sử dụng >cdtovà điều này rất giống nhau nhưng điều này có vẻ tốt hơn một chút khi đối phó với Spaces ... nhưng không hoàn hảo.

Điều rất hay là khả năng " phát hiện các sự kiện khóa xuống khi bắt đầu ứng dụng và sử dụng chúng để sửa đổi hành vi của tập lệnh " cho phép tập lệnh mở một tab mới trong cửa sổ đầu cuối nhất khi được gọi bằng cách giữ phím. Trò hay.

Cũng lưu ý câu trả lời của PCheese; nó có lẽ hữu ích hơn cho người dùng thiết bị đầu cuối nặng!


12

Có một phiên bản cập nhật của Open Terminal rất đẹp và mỏng được đăng bởi vgm64d0k . Sự thay đổi được thực hiện bởi james david thấp . Ông đã xuất bản phiên bản mới trên trang web của mình . Chỉ cần tải xuống OpenTerminalHere.zip, giải nén nó, di chuyển gói vào thư mục Thư viện / Tập lệnh của bạn và kéo nó từ đó vào thanh công cụ Finder của bạn.

Điều đặc biệt ở đây là nó luôn mở một tab mới nếu cửa sổ Terminal.app đã mở. Rất hữu ích! Tôi cũng lưu ý rằng kiểu nút của ứng dụng phù hợp hơn với kiểu Snow Leopard Finder.app so với cdto được đăng bởi redacted đã làm.


Điều này thật tuyệt! Lưu ý rằng bạn phải Command + Drag (không chỉ kéo như đã nêu trong bài viết trên) vào Thanh công cụ Finder. Và sau đó bạn có một phím tắt biểu tượng mà khi nhấp vào sẽ kết nối từ bất kỳ thư mục nào.
B. Nadolson

10

Ngoài ra, bạn có thể sao chép một mục từ công cụ tìm bằng lệnh-C, nhảy vào Terminal (ví dụ: sử dụng Spotlight hoặc QuickSilver) gõ 'cd' và chỉ cần dán bằng lệnh-v


4

Tôi đã tạo một gói với 3 ứng dụng cho thanh công cụ tìm. Hai ứng dụng khác làm:

  • mở Textmate với lựa chọn hiện tại
  • mở GitX với thư mục hiện tại

Để biết thêm thông tin xem tại đây: http://nslog.de/posts/71


3

Nếu bạn cài đặt Big Cat ScScript ( http://www.ranchero.com/bigcat/ ), bạn có thể thêm các mục theo ngữ cảnh (nhấp chuột phải) của riêng bạn. Tôi không nghĩ rằng nó đi kèm với một thiết bị đầu cuối mở ở đây nhưng tôi sử dụng tập lệnh này (mà tôi không nhớ trung thực nếu tôi tự viết hoặc nâng lên từ ví dụ của người khác):


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

Các kịch bản tương tự cũng có thể giúp bạn có đường dẫn đầy đủ đến một tệp khi nhấp chuột phải, điều này thậm chí còn hữu ích hơn, tôi thấy.


3

Đó là nhiều hơn một chút so với bạn đang yêu cầu, nhưng tôi khuyên bạn nên tìm Path Path của Cocoatech cho bất kỳ ai muốn Finder có thêm một chút nước trái cây. Nó bao gồm một nút thanh công cụ để mở cửa sổ Terminal cho thư mục hiện tại hoặc khung có thể thu vào với dòng lệnh Terminal ở cuối mỗi cửa sổ Finder. Cộng với nhiều tính năng khác mà bây giờ tôi không thể sống thiếu. Phần mềm rất trưởng thành, ổn định. http://cocoatech.com/


2

Ok, tôi nhận ra rằng điều này hơi muộn ... có lẽ sự thay thế này không có sẵn tại thời điểm viết bài?

Dù sao, tôi đã thấy cài đặt gói pos qua Fink (một điều kiện tiên quyết trong trường hợp này, có lẽ có một cái gì đó tương tự cho những người sử dụng MacPorts?) Là giải pháp dễ nhất. Bạn nhận được hai lệnh:

  1. posd - cung cấp thư mục hiện tại của cửa sổ Finder phía trước (mà bạn có thể tạo một bí danh cdf = cd posd)
  2. fdc - chuyển thư mục hiện tại của cửa sổ Finder phía trước sang Terminal pwd. Điều này hơi khác với 'mở.' luôn luôn mở một cửa sổ tìm mới.

Có, bạn phải chuyển sang cửa sổ Terminal trước khi viết cdf, nhưng tôi cho rằng nó khá rẻ so với việc nhấp vào nút trên thanh công cụ Finder. Và nó cũng hoạt động với iTerm, bạn không phải tải xuống nút thanh công cụ Finder riêng biệt để mở cửa sổ iTerm. Đây là cách tiếp cận tương tự như đề xuất của PCheese, nhưng bạn không phải làm lộn xộn .bash_profile của mình.



1

Tôi chủ yếu sử dụng chức năng này:

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

Bạn cũng có thể gán một phím tắt cho một tập lệnh như các tập lệnh bên dưới.

Sử dụng lại một tab hiện có hoặc tạo một cửa sổ mới (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

Sử dụng lại một tab hiện có hoặc tạo một tab mới (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

Luôn tạo một tab mới (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

Hai tập lệnh đầu tiên có hai lợi thế so với các dịch vụ được thêm vào trong 10.7:

  • Họ sử dụng thư mục trên thanh tiêu đề thay vì yêu cầu bạn chọn thư mục trước.
  • Họ sử dụng lại tab trên cùng nếu nó không bận, ví dụ: chạy lệnh, hiển thị trang man hoặc chạy emacs.

0

Có một lỗi trong AppleScript trên OSX 10.6. (2 cửa sổ đầu cuối mở). Tôi đã sửa lỗi này bằng cách thêm lệnh đóng sau khi kích hoạt. Điều này đóng cửa sổ Terminal đầu tiên.

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
Tại sao bạn muốn đóng một cửa sổ Terminal? Điều đó có phá hủy bất cứ công việc gì bạn đang làm trong đó không?
Rob Kennedy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.