Làm cách nào để phát âm thanh khi thực thi tập lệnh đã sẵn sàng?


44

Tôi đang thực thi mọi lúc và sau đó một số kịch bản python mất khá nhiều thời gian để thực thi.

Tôi thực hiện chúng như thế này: $ time python MyScript.py

Làm cách nào tôi có thể phát âm thanh ngay khi thực hiện tập lệnh?

Tôi sử dụng Ubuntu 10.10 (máy tính để bàn Gnome).


Bạn đang sử dụng bashhay zsh? Thực tế, có một số cách để thực hiện điều này một cách tự động, nhưng chúng khá liên quan và phụ thuộc vào loại vỏ bạn đang sử dụng.
Mikel

$ echo $ SHELL trả lại "/ bin / bash"
Martin Thoma

Câu trả lời:


39

Nối bất kỳ lệnh nào phát âm thanh; điều này có thể đơn giản như

$ time mycommand; printf '\7'

hoặc phức tạp như

$ time mycommand && paplay itworked.ogg || paplay bombed.ogg

(Các lệnh giả định pulseaudio đã được cài đặt; thay thế trình phát âm thanh của bạn, điều này sẽ phụ thuộc vào môi trường máy tính để bàn của bạn.)


6
+1 paplaycó lẽ là lệnh tốt nhất để sử dụng để phát âm thanh trên hệ thống Linux "hiện đại".
Mikel

4
printf '\ 7' không hoạt động với tôi, nhưng lệnh này hoạt động như tôi muốntime python MyScript.py -n 40 && paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg || paplay /usr/share/sounds/ubuntu/stereo/phone-outgoing-busy.ogg
Martin Thoma

printf '\7'hoạt động với tôi (paplay không; (git shell)) nhưng nó chỉ là một bip rất nhỏ . Có nhiều mã tạo ra âm thanh khác? Tôi đã thử \6, \8nhưng họ là một số nhân vật.
laggingreflex

2
@laggingreflex Không, \7(BEL) thường là nhân vật duy nhất mà có thể gây ra một âm thanh (xem bài viết Wikipedia Kí tự Control ); lưu ý rằng nó cũng không phải lúc nào cũng tạo ra âm thanh.
musiphil

3
@laggingreflex Có lẽ bạn không cần điều này nữa mà chỉ để cười;)for i in {1..30}; do for j in {1..3}; do printf '\7'; sleep 0.12; done; sleep 0.4; done
cprn

16

spd-say

sleep 2; spd-say 'get back to work'

Vòng lặp vô hạn với -wnếu bạn cần thêm động lực:

sleep 2; while true; do spd-say -w 'get back to work'; done

Được cài đặt sẵn vào ngày 14.04 thông qua gói speech-dispatcher: http://release.ubfox.com/trusty/ubfox-14.04.4-desktop-amd64.manifest dành cho người mù tôi cho rằng?

Đồng thời thêm một cửa sổ bật lên

Combo này là một trình cứu sinh ( bviết tắt của beep):

b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )

và sau đó:

super-slow-command;b

Nếu tôi ở đâu đó trong phòng, tôi sẽ nghe thấy và biết rằng công việc lâu dài đã hoàn thành.

Nếu không, tôi sẽ thấy cửa sổ bật lên khi tôi quay lại máy tính của mình.

Liên quan: https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux


Để có được spd-saycông cụ liên quan đến speech-dispatcher, bạn có thể cần phải cài đặt một gói con như speech-dispatcher-utils(Fedora 24).
dfarrell07

9

Chỉ cần chọn một âm thanh trên ổ cứng của bạn và đặt một lệnh để phát nó ngay sau lệnh bạn đang chờ; chúng sẽ xảy ra tuần tự:

$ time python MyScript.py; mplayer ~/ScriptDone.wav

(Bạn có thể sử dụng bất kỳ người chơi, một cách tự nhiên). Tôi có một đoạn script được gọi là alertdonephát âm và hiển thị cảnh báo libnotify khi chạy; Tôi sử dụng nó cho chính xác dịp này:

$ time python MyScript.py; alertdone "Done timing"

Nó thực sự đơn giản, vì vậy nếu bạn muốn làm cho riêng bạn, bạn có thể căn cứ trên này (tôi đòi hỏi notify-more, mplayer~/tones/alert_1.wavmặc dù):

#!/bin/bash
message=${1:-"Finished working"}
notify-more -t 10000 -i /usr/share/icons/gnome/32x32/actions/insert-object.png "Process Finished" "$message"
mplayer ~/tones/alert_1.wav

2
notify-morehoặc notify-sendthực sự có thể là lựa chọn thay thế hữu ích để phát âm thanh.
Mikel

@Mikel Tôi hoàn toàn nghiện libnotify; tất cả mọi thứ trên hệ thống của tôi bật lên thông báo
Michael Mrozek

8
time python MyScript.py; play /path/so/sound.ogg

playlà một trình phát âm thanh rất cơ bản (không có UI) từ gói sox Cài đặt sox http://bit.ly/software-small . Bạn có thể thay thế nó bằng bất kỳ trình phát âm thanh điều khiển dòng lệnh nào khác.


Yep, play, aplay, hoặc paplay. (Hệ thống Ubuntu của tôi có aplaypaplaytheo mặc định.)
Mikel

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.oggđã làm việc, cảm ơn.
Martin Thoma

5

Cá nhân, tôi sử dụng my-script && notify-send "done". Điều này sẽ gửi một thông báo trên máy tính để bàn, trên Linux Mint (Cinnamon) trông như thế này:

nhập mô tả hình ảnh ở đây


3

Bạn cũng có thể làm điều này xảy ra tự động.

Tôi sẽ chỉ cho bạn cách vào zsh, sau đó thêm thông tin về bash.

Bản chất trông như thế này:

preexec()
{
    starttime=$SECONDS
}

precmd()
{
    if ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

Bạn cũng có thể làm cho nó chỉ làm điều đó nếu chương trình là Python, vd

preexec()
{
    starttime=$SECONDS
    case $3 in python*)
        command_is_python=true;;
    *)
        command_is_python=false;;
    esac
}

precmd()
{
    if $command_is_python && ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

Trong bash, cách tốt nhất là tải xuống preexec.bash.txt và lấy nguồn (ví dụ . ~/preexec.bash.txtở đầu của bạn ~/.bashrc, sau đó ở trên (hoặc một cái gì đó gần với nó) sẽ hoạt động. (Không chắc chắn về $3bit để kiểm tra xem lệnh có phải là Python không .)

Nếu bạn đang sử dụng Thiết bị đầu cuối Gnome, tôi cũng sẽ chỉ cho bạn Thiết bị đầu cuối Gnome . Đó là một bản vá mà tôi đã viết làm cho thiết bị đầu cuối nhấp nháy khi lệnh được thực hiện, vì vậy bạn có thể Alt-Tab sang một thứ khác, sau đó nó cho bạn biết khi nào nó hoàn thành.


1

Bạn không cần phải thêm lệnh vào mọi thứ, bạn thực sự có thể sử dụng một tập lệnh, điều này tự động thực hiện cho bạn. Nó được gọi là undistract-me và nó có sẵn trên Github.

thí dụ

sudo apt install undistract-me    #installs the script (on Debian)
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc #adds auto-enable to your console
echo 'export LONG_RUNNING_COMMAND_TIMEOUT=XXX' >> ~/.bashrc #where XXX is number of seconds when the command is long enough to alert you
echo 'export UDM_PLAY_SOUND=1' >> ~/.bashrc #to enable sound alert

Bây giờ bắt đầu bash mới và bạn đã thiết lập. Âm thanh và cảnh báo có thể được thay đổi bằng cách sửa đổi tập lệnh.


-1

Bất kỳ người chơi có thể được sử dụng. Tôi đang thêm cvlccho đầy đủ.

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.