Bạn đang yêu cầu hai điều hoàn toàn khác nhau ở đây. Trước tiên, bạn yêu cầu phải làm gì để có tiếng bíp sau một phút, sau đó bạn yêu cầu nhận được tiếng bíp sau khi lệnh kết thúc. Đây là hai điều được tiếp cận hoàn toàn khác nhau.
# bof [command] [args...] - Beep on Finish
bof() {
"[email protected]"; local r=$?
printf '\a'
return $r
}
Chức năng này đang điều hành một lệnh và sau đó tiếng bíp một lần một lần của lệnh làm, trong khi đảm bảo rằng mã lối ra của lệnh là mã lối ra của hàm.
# bot [command] [args...] - Beep on Timeout
bot() {
{ sleep 60; printf '\a'; } &
"[email protected]"; local r=$?
kill $!
return $r
}
Chức năng này phát ra tiếng bíp một lần sau một thời gian nhất định trừ khi lệnh hoàn thành trước thời gian đó (ở đây, 60
giây, một phút).
# bem [command] [args...] - Beep every Minute
bem() {
{ while sleep 60; do printf '\a'; done; } &
"[email protected]"; local r=$?
kill $!
return $r
}
Đây là một thích ứng đơn giản của hàm trước đây tiếng bíp mỗi phút càng lâu càng lệnh của bạn vẫn còn sống.
# bofem [command] [args...] - Beep on Finish every Minute
bofem() {
"[email protected]"; local r=$?
until read -t 60 -n 1; do printf '\a'; done
return $r
}
Và cuối cùng, một chức năng mà tiếng bíp mỗi phút nhưng chỉ sau khi lệnh đã hoàn tất. Giữ bíp cho đến khi bạn nhấn một phím để dừng nó. Sau đó, hàm trả về với mã thoát của lệnh của bạn.
Tôi nghĩ rằng điều đó sẽ đề cập đến tất cả các căn cứ bạn có thể đã dự định với câu hỏi của bạn.
sử dụng (và kết hợp) họ như vậy:
bof rsync foo bar: # Beep when rsync finishes.
bot ssh foo 'ls bar/' # Beep if the 'ssh' process takes too long to run.
tôi hy vọng tập lệnh được cung cấp là những gì bạn cần – Drakosha