it-swarm-vi.com

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

Tôi đang thực thi mọi lúc và sau đó một số tập lệnh 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).

47
Martin Thoma

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ả sử 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.)

42
geekosaur

spd-say

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

Vòng lặp vô hạn với -w nế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 cho người mù tôi cho rằng?

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

Combo này là một trình bảo vệ cuộc sống (b là viế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

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 tập lệnh được gọi là alertdone phát âm báo 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"

Điều đó thực sự đơn giản, vì vậy nếu bạn muốn làm cho riêng mình, bạn có thể dựa trên điều này (yêu cầu của tôi là notify-more, mplayer~/tones/alert_1.wav Tuy nhiên):

#!/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
9
Michael Mrozek
time python MyScript.py; play /path/so/sound.ogg

play là trình phát âm thanh rất cơ bản (không có UI) từ gói soxCài đặt gói 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.

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:

enter image description here

5
eeze

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 trong 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, ví dụ:.

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 ~/.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ề bit $3 để kiểm tra xem lệnh có phải là Python không.)

Nếu bạn đang sử dụng Terminal Gnome, tôi cũng sẽ chỉ cho bạn Nhấp nháy Terminal Gnome . Đó là một bản vá 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.

3
Mikel

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à ndistract-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
Jakub Lucký