Tôi có thể thực thi lệnh Terminal trong một tab mới không?


2

Tôi nhận ra rằng nó sẽ cực kỳ hữu ích nếu tôi có thể gõ một lệnh trong một tab Terminal, và sau đó thực thi nó trong một nền mới hoặc tab nền trước. Ví dụ, điều này sẽ tuyệt vời khi chỉnh sửa các tệp với nano. Tôi có thể cd đến một địa điểm và sau đó nhanh chóng nano sys_201406271933.log, nano 415ab40ae9b7cc4e66d6769cb2c08106e8293b48.key hai tab nền mới. Cách khác là mở thủ công hai tab và lật giữa chúng, sử dụng chuột để sao chép-dán các tên tệp dài, không đáng nhớ.

Tôi đã dành khoảng 30 phút để nghiên cứu liệu điều này là có thể và không tìm thấy câu trả lời thỏa mãn.


Bạn có bị ràng buộc với nano? Trình soạn thảo văn bản như Bạn cùng văn dễ dàng hơn nhiều để làm việc và thực hiện trực tiếp từ trình bao của bạn khi bạn xác định $EDITOR biến trong của bạn ~/.bash_profile hoặc tương tự. Điều đó nói rằng, nó có thể với nano.
njboot

Tôi sử dụng trình soạn thảo Atom của GitHub cho hầu hết mọi thứ, nhưng đôi khi thật tiện lợi khi chỉ cần gắn vào thiết bị đầu cuối. Tôi cũng muốn có thể chạy các loại lệnh khác như man. Có thể gửi một trang web đến một tab mới sẽ là một ơn trời.
Metaphile

Điều này có thể có thể sử dụng AppleScript. Xem: stackoverflow.com/questions/7171725/
Ross Churchley

Câu trả lời:


4

iTerm 2 là một sự thay thế mạnh mẽ cho Terminal.app và nó có hỗ trợ cho AppleScript. Bạn có thể sử dụng AppleScript để yêu cầu nó chạy các lệnh trong tab hoặc cửa sổ mới.

Ví dụ: hãy thực hiện một hành động AppleScript nhỏ có thể gọi được. Nhập thông tin sau vào Trình chỉnh sửa AppleScript:

on run argv
    set AppleScript's text item delimiters to {" "}
    tell application "iTerm"
        make new terminal
        tell the current terminal
            activate current session
            launch session "Default Session"
            tell the last session
                write text argv as string
            end tell
        end tell
    end tell
end run

và sau đó lưu nó dưới dạng Script trong ~/Documents/Scripts/run-in-new-iterm-tab.scpt. Bây giờ chúng ta có thể gọi nó từ dòng lệnh như vậy:

/Users/ian
> osascript ~/Documents/Scripts/run-in-new-iterm-tab.scpt ls ~/Documents/Scripts

/Users/ian
>

và tôi nhận được một tab mới trong phiên iTerm của mình với:

Last login: Thu Aug 28 22:17:17 on ttys003
ls /Users/ian/Documents/Scripts

/Users/ian
> ls /Users/ian/Documents/Scripts
edit                         keep_drives_alive.sh         run-in-new-iterm-tab.scpt    touch-in-order.pl
find-missing-itunes-files.pl keep_drives_alive.sh~        start-utorrent.scpt          touch-in-order.pl~

/Users/ian
>

Điều đó không quá tệ. Có một số tinh chỉnh bạn có thể thực hiện đối với AppleScript như duy trì thư mục làm việc hiện tại khi bạn gọi lệnh. Nhưng đó là bạn trong sân bóng.

Nếu bạn sử dụng gợi ý này trong câu hỏi này bạn có thể biến toàn bộ thành một tập lệnh bash thậm chí còn dễ thực thi hơn:

#!/usr/bin/env osascript

on run argv
    set AppleScript's text item delimiters to {" "}
    tell application "iTerm"
        make new terminal
        tell the current terminal
            activate current session
            launch session "Default Session"
            tell the last session
                write text argv as string
            end tell
        end tell
    end tell
end run

Lưu nó vào một vị trí trên của bạn PATH và làm cho nó có thể thực thi được và sau đó bạn chỉ cần chạy:

run-in-new-iterm-tab ls ~/Documents/Scripts

để làm cho nó hoạt động.


Đến @Metaphile : làm theo những chỉ dẫn này. Đây là câu trả lời tốt nhất có tính đến 1) iTerm 2 là miễn phí, 2) cung cấp hướng dẫn bằng chứng không thành công, 3) đạt được kết quả mong muốn của bạn. @Ian C. loại giải pháp này có khả thi hay không bằng cách tùy chỉnh Kịch bản của Textmate theo cách tương tự?
njboot
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.