Thay đổi Tiêu đề thiết bị đầu cuối trong Mac OS X


39

Làm cách nào tôi có thể tùy ý thay đổi tiêu đề của cửa sổ Terminal trong Mac OS X? Tôi đã thấy câu hỏi nàyđiều kỳ diệu này , nhưng nghĩ rằng đó chỉ là một lệnh Mac OS X đơn giản.


Cần lưu ý rằng không có gì cụ thể về OS X về điều này - câu trả lời sẽ hoạt động trên hầu hết mọi thiết bị đầu cuối.
Andrew Aylett

Có phải Bash-cụ thể không?
Dan Rosenstark

@Andrew Aylett, vậy kịch bản tôi đưa vào câu trả lời của tôi (bên dưới) cũng sẽ hoạt động trên các bản phân phối linux?
Dan Rosenstark

Có, nó sẽ hoạt động ở bất cứ đâu (với vỏ có nguồn gốc sh) sử dụng các thiết bị đầu cuối unix-y.
Andrew Aylett

Câu trả lời:


48

Bài viết này cho bạn biết làm thế nào.

Về cơ bản, bạn sử dụng các chuỗi ký tự được lặp lại trên màn hình để thông báo cho thiết bị đầu cuối về tiêu đề nào sẽ hiển thị.

title='My first title'
echo -n -e "\033]0;$title\007"

Trong ví dụ trên, bất cứ tiêu đề biến nào được đặt thành trong khi trở thành tiêu đề của thiết bị đầu cuối. Tất nhiên, bạn chỉ có thể có tiêu đề trong chuỗi để lặp lại, chẳng hạn như:

echo -n -e "\033]0;My first title\007"

Nhưng cách đầu tiên làm cho nó dễ sử dụng hơn một chút và / hoặc mở rộng sau này.


Xuất sắc. Bạn có thể bao gồm một tập lệnh mẫu (như thế này không? echo -n -e "\033]0;$1\007") Trong câu trả lời của bạn để tôi có thể đánh dấu nó là câu trả lời hay nhất?
Dan Rosenstark

2
printf có thể đáng tin cậy hơn: printf "\033]0;%s\007" "$title_variable"(các tùy chọn và hành vi khác nhau của echo không giống nhau trên tất cả các hệ thống, shell hoặc thậm chí tùy chọn shell) Ngoài ra, các phép gán biến trong bash không nên có khoảng trắng xung quanh dấu bằng.
Chris Johnsen

1
Tôi đã sử dụng $ * và trong một hàm, vì vậy tôi sẽ không phải trích dẫn chuỗi tiêu đề của mình.
BeepDog

Có cách nào để thay đổi tiêu đề từ trong chương trình C không? Chương trình tôi đang nghĩ về việc chạy hoạt hình dựa trên ncurses.h vì vậy tôi không chắc chắn làm thế nào để lặp lại thiết bị đầu cuối :-(
phs

OK: Chỉ cần fprintf (stdout, ..) hoạt động. Tôi nên đã thử trước khi hỏi.
phs

34

Thêm các mục sau vào của bạn ~/.profilesẽ đạt được hiệu quả tương tự:

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
}

Và sau đó nhanh chóng title 'et voila'sẽ sắp xếp tất cả các tab của bạn ra.


Tại sao nó có vấn đề nếu bạn có nhiều chức năng trong .profile? Có giới hạn không?
tgkprog

1
IDK tại sao, nhưng phải chỉnh sửa .bash_profile thay vì .profile
Nakilon

2
Hoặc : alias title="printf '\033]0;%s\007'".
kenorb

export alias title="printf '\033]0;%s\007'"
Mwayi

Bạn cũng có thể thêm nó bằng cách sử dụng sudo nano /etc/bashrc. Điều này sẽ chạy cho tất cả người dùng. Khởi động lại phiên cuối hoặc làm gì source /etc/bashrcđể áp dụng các thay đổi của bạn.
Eugene Kulabuhov

8

Bản phối lại câu trả lời của Dan MgG:

echo -n -e "\033]0;$1\007"

Lưu trữ nó trong một tệp có tên / usr / bin / title (sử dụng sudo!) Và chmod nó thành + x. Sau đó, từ bất cứ nơi nào bạn có thể chỉ cần gõ

title 'Trying to Figure This GIT Thing Out'

và bạn có được một tiêu đề nhỏ đẹp.

(Cú pháp có thể thay đổi nếu bạn không dùng OSX, nếu tôi hiểu đúng)


Nếu bạn đang sử dụng một trong những phiên bản OS X mới hơn, bạn có thể phải /usr/local/bin/titlethay thế.
Samy Bencherif

2

Thay thế cho các giải pháp dòng lệnh dựa trên sh, ứng dụng OS X Terminal có sở thích thay đổi tiêu đề như sau: Trong menu Terminal-> shell có lựa chọn "chỉnh sửa tiêu đề", chọn và bạn có thể thay đổi tiêu đề dễ dàng


1

Trên OS X, các tùy chọn đầu cuối được lưu trữ trong ~/Library/Preferences/com.apple.Terminal.plist.

Tiêu đề của thiết bị đầu cuối được lưu trữ trong các WindowTitleưu tiên.


0

Cảm ơn vì điều đó. Tôi vừa thêm một hàm vào .bashrc:

    function stit() {
    echo -n -e "\033]0;$1\007"
}

Trong tâm trí tôi "stit" = một phím tắt thuận tiện cho "set_title". Và bây giờ khi tôi muốn đặt tiêu đề cho các cửa sổ của mình một cách nhanh chóng, tôi gõ:

stit "[new window title]"

0

Câu trả lời được đánh dấu là Câu trả lời hay nhất hoạt động tốt ... đây là những gì tôi đã làm ...

tell application "Terminal"
    activate
    do script "echo -n -e \"\\033]0;WorkerTab1\\007\"; cd $HOME/folder1"
end tell

điều này sẽ đặt tên của tab mới thành WorkerTab1 và sau đó thực hiện các lệnh khác như "cd", v.v.

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.