Làm cách nào tôi có thể rung chuông âm thanh trong tập lệnh bash chạy dưới màn hình gnu?


19

Trong cửa sổ đầu cuối konsole bên ngoài màn hình đang chạy bash shell với TERM được đặt thành konsole-256color nếu tôi gõ:

echo -n $ '\ a' hoặc
echo -n $ '\ eg' hoặc
./ringbell trong đó nội dung của ./ringbell là

#! / bin / bash
echo -n $ '\ eg'; echo -n $ '\ a'

Tất cả đều dẫn đến chuông âm thanh được cấu hình tắt. Nếu tôi nhập phiên màn hình (.screenrc của tôi cũng đặt thuật ngữ thành konsole-256color) thì chỉ có lệnh thứ hai trong số 3 lệnh trên (echo -n $ '\ eg') dẫn đến tiếng chuông âm thanh được nghe. Tôi có phải sửa đổi tập lệnh hay đây là sự cố với màn hình?

Phiên bản ubfox của gói màn hình tôi có là 4.1.0 ~ 20120320gitdb59704-9.


1
Cũng tham khảo câu hỏi này , mặc dù tôi thực sự thích câu trả lời của Keith.
Franklin Yu

Câu trả lời:


25

Từ bộ nhớ, Ctrl-G là ký tự chuông, vì vậy tôi nghĩ đó là lý do tại sao cái thứ hai hoạt động. Nhưng màn hình có thể kén chọn những ký tự mà nó chấp nhận vì nó lấy Ctrl-A làm mã lệnh.

Thử đi

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

Tôi tìm thấy điều này trên rosettacode , hy vọng nó sẽ cung cấp cho bạn một số tùy chọn


Điều này không hoạt động cả bên trong hoặc bên ngoài màn hình. Nếu tôi sử dụng infocmp, nó cho tôi thấy rằng khả năng bel không được xác định cho TERM konsole-256color nên điều này có ý nghĩa. Mặc dù mục nhập terminfo màn hình xác định bel a tput -T screen bel cũng không hoạt động.
Bob

1
Sau khi thử nghiệm nhiều hơn, nó xuất hiện tput -T màn hình bel hoạt động sau khi tất cả. Thử nghiệm ban đầu của tôi đã thất bại vì tôi đang chạy một màn hình trong một màn hình và màn hình bên ngoài không tắt chuông. Cảm ơn các mẹo.
Bob

0

Giải pháp tốt nhất: printf '\a'

Đó là bởi vì printfhầu hết các shell được tích hợp đều hoạt động tốt và cũng có một phiên bản thực thi tương đương printfđược cài đặt với các hệ thống Linux / Mac.

Các tùy chọn khác: Nếu bạn đã cài đặt các lời nguyền, thì bạn cũng có thể sử dụng: tput bel Nếu bạn sử dụng phiên bản bash gần đây, thì có thể sử dụng:echo -n '\a'

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.