আমি একটি টার্মিনাল মাধ্যমে একটি দীর্ঘ প্রক্রিয়া শুরু করেছি। প্রক্রিয়াটি শেষ হয়ে গেলে কি উবুন্টু টার্মিনালটিকে একটি শব্দ করা সম্ভব? এইভাবে, আমার চেকিং চালিয়ে যাওয়ার দরকার নেই, তবে পরিবর্তে একটি শব্দের মাধ্যমে জানানো হবে।
আমি একটি টার্মিনাল মাধ্যমে একটি দীর্ঘ প্রক্রিয়া শুরু করেছি। প্রক্রিয়াটি শেষ হয়ে গেলে কি উবুন্টু টার্মিনালটিকে একটি শব্দ করা সম্ভব? এইভাবে, আমার চেকিং চালিয়ে যাওয়ার দরকার নেই, তবে পরিবর্তে একটি শব্দের মাধ্যমে জানানো হবে।
উত্তর:
আপনার স্ক্রিপ্টের শেষে স্যুটিং কমান্ডটি রেখে আপনার দীর্ঘ প্রক্রিয়ার জন্য অনুরোধ জানাতে কমপক্ষে তিনটি কমান্ড লাইনের উপায় রয়েছে:
একটি শব্দ বাজানোর "শাস্ত্রীয়" উপায় হ'ল পিসি স্পিকারগুলির মাধ্যমে বীপ ব্যবহার করা । তবে এটি সব ক্ষেত্রে কার্যকর হবে না (যেমন আমার সিস্টেমে পিসি স্পিকারগুলি সম্পূর্ণ অক্ষম রয়েছে) এবং আপনাকে pscpkr সরিয়ে কার্নেল মডিউলটি /etc/modprobe/blacklist.conf
লোড করতে হবে pcspkr
।
sudo sed -i 's/blacklist pcspkr/#blacklist pcspkr/g' /etc/modprobe.d/blacklist.conf
sudo modprobe pcspkr
beep [optional parameters]
আমরা অ্যাপ্লে (ডিফল্টরূপে ইনস্টল) ব্যবহার করে wav ফর্ম্যাটে যে কোনও শব্দ ফাইল খেলতে পারি:
aplay /usr/share/sounds/alsa/Side_Right.wav
অন্য উপায়টি হ'ল আপনার সিস্টেমে (ইন libsndfile
) ডিফল্ট অডিও আউটপুটটিতে স্বীকৃত কোনও সাউন্ড ফাইলের প্লেব্যাক সক্ষম করার জন্য পালসওডিও কমান্ড লাইন ইন্টারফেসটি ব্যবহার করা :
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
আমরা ডিফল্ট সাউন্ড ফাইলগুলি থেকে /usr/share/sounds/
, বা অন্য কোনও সাউন্ড ফাইল ব্যবহার করতে পারি a
কেবল এটি উল্লেখ করার জন্য, এস্পিকের অপব্যবহারের মাধ্যমে এটি অর্জনের আরও একটি দুর্দান্ত উপায় আছে , যা উবুন্টু <= 12.04 এ ডিফল্টরূপে ইনস্টল করা আছে। নীচের উদাহরণটি দেখুন বা শুনুন:
#! /bin/bash
c=10; while [ $c -ge 0 ]; do espeak $c; let c--; done; sleep 1 ## here lengthy code
espeak "We are done with counting"
উবুন্টুতে> = 12.10 অরকা স্পোক-প্রেরক ব্যবহার করে। তারপরে আমরা এস্পিক ইনস্টল করতে পারি , বা বিকল্পভাবে ব্যবহার করতে পারি spd-say "Text"
।
spd-say
।
spd-say
ইউটিলিটি ডিফল্টরূপে ইনস্টল করা হয়েছে এবং এটি আমার সিস্টেমে কাজ করে।
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
আমি ব্যবহার করি
make; spd-say done
আপনি দীর্ঘমেয়াদী কমান্ড ব্যবহার করুন না কেন "মেক" প্রতিস্থাপন।
spd-say 'get back to work
'। এবং প্রি ইনস্টলড পাশাপাশি আসে: রিলিজ.উবন্টু.com / টিস্টিএল / ,, আমি মনে করি অন্ধ লোকদের জন্য কি? আর -w
অসীম loops জন্য: while true; do spd-say -w 'get back to work you lazy bum'; done
।
কমান্ড শেষ হওয়ার পরে একটি শব্দ বাজানোর জন্য:
long-running-command; sn3
( sn3
3 নম্বর শব্দটি কোথায় ) এটি এনে দিন .bashrc
:
sound() {
# plays sounds in sequence and waits for them to finish
for s in $@; do
paplay $s
done
}
sn1() {
sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
বা আরও বিকল্পের জন্য নীচে পড়ুন:
এখানে আপনি যা যা বলছেন ঠিক তেমনটির জন্য আমি যা ব্যবহার করি - এটি একটি পার্থক্য সহ: কমান্ডটি শেষ হওয়ার পরে এটি কেবল একটি শব্দ বাজায় না তবে এটি সাফল্য এবং ত্রুটির ক্ষেত্রে পৃথক শব্দ বাজায় । (তবে আপনি এটি পছন্দ না করলে এটি পরিবর্তন করতে পারেন))
আমার একটি বাশ ফাংশন রয়েছে oks
যা আমি দীর্ঘ চলমান কমান্ডের শেষে ব্যবহার করি:
make && make test && make install; oks
এটি একটি শব্দ বাজায় এবং পূর্ববর্তী কমান্ডটি শেষ হয়ে গেলে ঠিক আছে বা ERROR (ত্রুটি কোড সহ) প্রদর্শন করে।
এখানে দুটি সহায়ক সহ ফাংশনটি রয়েছে:
sound() {
# plays sounds in sequence and waits for them to finish
for s in $@; do
paplay $s
done
}
soundbg() {
# plays all sounds at the same time in the background
for s in $@; do
# you may need to change 0 to 1 or something else:
pacmd play-file $s 0 >/dev/null
done
}
oks() {
# like ok but with sounds
s=$?
sound_ok=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
sound_error=/usr/share/sounds/ubuntu/stereo/dialog-warning.ogg
if [[ $s = 0 ]]; then
echo OK
soundbg $sound_ok
else
echo ERROR: $s
soundbg $sound_error
fi
}
আপনি এটিকে সরাসরি আপনার ~ / .Bashrc এ রাখতে পারেন বা এটি অন্য কোনও ফাইলে রাখতে পারেন এবং তারপরে এই লাইনটি আপনার। / .Bashrc- এ রাখতে পারেন:
. ~/path/to/file/with/function
পরিবর্তন sound_ok
এবং sound_error
কিছু অন্যান্য শব্দ।
আপনি sound
বনাম soundbg
এবং পরিবর্তন sound_ok
নিয়ে পরীক্ষা sound_error
করতে পারেন এবং আপনি যে ফলাফলটি পেতে চান তা পেতে অনেকগুলি শব্দের ক্রম ব্যবহার করতে পারেন।
আপনার সিস্টেমে কিছু ভাল শব্দ খুঁজে পেতে আপনি চেষ্টা করতে পারেন:
for i in /usr/share/sounds/*/stereo/*; do echo $i; paplay $i; sleep 1; done
এখানে আমি এমন কিছু শব্দ শুনি যা আমি প্রায়শই উবুন্টুতে ডিফল্টরূপে উপলব্ধ যেগুলি বিজ্ঞপ্তিগুলির জন্য ভাল - স্ন 1 উচ্চতর এবং দুর্দান্ত, স্ন 2 খুব জোরে এবং এখনও বেশ সুন্দর, স্ন 3 অত্যন্ত উচ্চতর এবং এত সুন্দর নয়:
sn1() {
sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
আবার, আপনি শব্দটি শেষ না হয়ে অপেক্ষা করে ব্যাকগ্রাউন্ডে এটি খেলতে চান কিনা তাতে পরিবর্তন sound
করতে soundbg
পারেন (উদাহরণস্বরূপ যখন আপনি প্রচুর শব্দ বাজান তখন আপনার স্ক্রিপ্টগুলি ধীর না করে)।
এবং কেবল ক্ষেত্রে - এখানে oks
শব্দগুলি ছাড়াও একই ফাংশনটি রয়েছে :
ok() {
# prints OK or ERROR and exit status of previous command
s=$?
if [[ $s = 0 ]]; then
echo OK
else
echo ERROR: $s
fi
}
আপনি এটি কীভাবে ব্যবহার করবেন তা এখানে:
সাফল্যের উদাহরণ:
ls / && ls /bin && ls /usr; oks
ত্রুটির সাথে উদাহরণ:
ls / && ls /bim && ls /usr; oks
অবশ্যই অনুশীলনে কমান্ডগুলি আরও পছন্দ:
make && make test && make install; oks
তবে আমি ব্যবহার করেছি ls
যাতে আপনি কীভাবে এটি কাজ করে তা দ্রুত দেখতে পারেন।
আপনি নীরব সংস্করণের ok
পরিবর্তে ব্যবহার করতে পারেন oks
।
অথবা আপনি যেমন ব্যবহার করতে পারেন:
ls / && ls /bim && ls /usr; ok; sn1
ঠিক আছে / ERROR মুদ্রণ করতে কিন্তু সর্বদা একই শব্দ, ইত্যাদি প্লে করুন
আমি এই ফাংশনগুলি গিটহাবের উপরে রেখেছি, দেখুন:
উত্স থেকে ডাউনলোড করা যেতে পারে:
আমি soundloop
উপরের রেপোতে একটি ফাংশন যুক্ত করেছি । এটি একটি শব্দ বাজায় এবং সিটিআরএল + সি দ্বারা বাধাগ্রস্ত হতে পারে (এমন একটি সাধারণের তুলনায় while true; do paplay file.ogg; done
যা কাজ করার আশা করে তবে তা করেনা) মন্তব্যে শাদি জিজ্ঞাসা করেছিল । এটি হিসাবে প্রয়োগ করা হয়:
soundloop() {
set +m
a=`date +%s`
{ paplay $1 & } 2>/dev/null
wait
b=`date +%s`
d=$(($b-$a))
[ $d -eq 0 ] && d=1
while :; do
pacmd play-file $1 0 >/dev/null
sleep $d
done
}
আপনি যদি এটি জটিল মনে করেন তবে অনুগ্রহ করে আপনার অভিযোগগুলি পালস অডিও বিকাশকারীদের কাছে পরিচালনা করুন।
while true; do paplay ...; done
এমনভাবে রাখার চেষ্টা করেছি যাতে আঘাত করা পর্যন্ত শব্দটি পুনরাবৃত্তি করতে পারে Ctrl+C
, কিন্তু আমি যখন করি তখন তা ভেঙে যায় না। man paplay
কীভাবে এটি কাজ করতে হয় তা নির্ধারণের জন্য আমি কোনও বিশেষ বিকল্প খুঁজে পাচ্ছি না । কোন ধারনা?
মতে এই\a
চরিত্র হওয়া ASCII কোড 7, যা কম্পিউটারের হুইসেল হয় পালাতে।
সুতরাং echo $'\a'
এটি আমার স্থানীয় মেশিনে একটি বীপ শব্দ তৈরি করার জন্য কাজ করে, এটি কম্পিউটারে চলমান ব্যাশ শেলের উপর চালিত হলেও আমি পুটিটির মতো টার্মিনাল ইন্টারফেসের মাধ্যমে সংযুক্ত।
মাইকেল কারিজের উত্তরটি প্রসারিত করে আপনি বাশকে একটি BEL
( \a
) চরিত্রের মাধ্যমে মুদ্রণ করতে পারবেন PROMPT_COMMAND
:
PROMPT_COMMAND='printf \\a'
PROMPT_COMMAND
সেভাবে সেট করা printf \\a
প্রতিটি কমান্ডের শেষে বাশকে কার্যকর করতে সক্ষম করে, যা টার্মিনালটিকে একটি শব্দ বাজায় (যদিও মুরু নির্দেশ করে, প্রম্পটের পুনর্নির্মাণকে সক্রিয় করে টার্মিনালটি শব্দটি বাজায়, অর্থাৎ শব্দটি চালানো হবে) প্রতিবার একটি নতুন প্রম্পট আঁকানো হয়, উদাহরণস্বরূপ এমনকি কেবল আঘাত করার সময়ও ENTER)।
এটি একটি টার্মিনাল বৈশিষ্ট্য, সুতরাং এটি সমস্ত টার্মিনাল জুড়ে নাও কাজ করতে পারে; উদাহরণস্বরূপ এটি কনসোলে কাজ করে না (তবে আমি নিশ্চিত এটি এতে কাজ করে gnome-terminal
এবং xterm
)।
আদেশ
speaker-test
একটি শব্দ শব্দ তোলে। সহজ তবে বিরক্তিকর সমাধান। :-)
শব্দটি সংকেতটি কনফিগার করতে বিকল্পগুলির ম্যানুয়ালটিspeaker-test(1)
দেখুন ।
এটি আপনি যা চেয়েছিলেন তা নয় তবে আপনি এটির জন্য বিজ্ঞপ্তিটি ব্যবহার করতে পারেন।
অন্যান্য উত্তরে প্রদত্ত আদেশটি প্রতিস্থাপন করুন
notify-send "Process terminated" "Come back to the terminal, the task is over"
command && (say done ; echo done) || (echo error ; say error)
উদাহরণ 1: echo alik && (say done ; echo done) || (echo error ; say error)
একটি সম্পন্ন শব্দের ফলাফল করবে।
উদাহরণ 2: এর non_existing_command_error && (say done ; echo done) || (echo error ; say error)
ফলে একটি ত্রুটির শব্দ হবে।
* প্রয়োজন gnustep-gui-runtime
-
sudo apt-get install gnustep-gui-runtime
চিয়ার্স।
আমি একটি সরল এবং প্রায় দেশীয় স্ক্রিপ্ট তৈরি করেছি যা শব্দটি চালায় এবং উবুন্টু ( গিস্ট ) এর জন্য একটি প্রদত্ত বার্তা এবং সময় সহ একটি বিজ্ঞপ্তি প্রদর্শন করে :
#!/bin/sh
# https://gist.github.com/John-Almardeny/04fb95eeb969aa46f031457c7815b07d
# Create a Notification With Sound with a Given Message and Time
# The Downloaded Sound is from Notification Sounds https://notificationsounds.com/
MSSG="$1"
TIME="$2"
# install wget if not found
if ! [ -x "$(command -v wget)" ]; then
echo -e "INSTALLING WGET...\n\n"
sudo apt-get install wget
echo -e "\n\n"
fi
# install at package if not found
if ! [ -x "$(command -v at)" ]; then
echo -e "INSTALLING AT...\n\n"
sudo apt-get install at
echo -e "\n\n"
fi
# install sox if not found
if ! [ -x "$(command -v sox)" ]; then
echo -e "INSTALLING SOX...\n\n"
sudo apt-get install sox
sudo apt-get install sox libsox-fmt-all
echo -e "\n\n"
fi
# download the noti sound if this is first time
# add alias to the bashrc file
if ! [ -f ~/noti/sound.mp3 ]; then
echo -e "DOWNLOADING SOUND...\n\n"
touch ~/noti/sound.mp3 | wget -O ~/noti/sound.mp3 "https://notificationsounds.com/wake-up-tones/rise-and-shine-342/download/mp3"
sudo echo "alias noti=\"sh ~/noti/noti.sh\"" >> ~/.bashrc
source ~/.bashrc
echo -e "\n\n"
fi
# notify with the sound playing and particular given message and time
echo "notify-send \""$MSSG\"" && play ~/noti/sound.mp3" | at $TIME
আপনার বাড়িতে একটি নতুন ডিরেক্টরি তৈরি করুন এবং এটি কল করুন noti
mkdir ~/noti
টার্মিনাল ও পরিবর্তন ডিরেক্টরিতে খুলুন noti
cd ~/noti
জারি করে noti.sh কার্যকর করতে সক্ষম করুন:
sudo chmod +x noti.sh
এভাবে পরীক্ষা চালান:
sh ~/noti/noti.sh "Test" "now"
noti "Hello From Noti" "now +1 minute"
noti "Hello From Noti" "now +5 minutes"
noti "Hello From Noti" "now + 1 hour"
noti "Hello From Noti" "now + 2 days"
noti "Hello From Noti" "4 PM + 2 days"
noti "Hello From Noti" "now + 3 weeks"
noti "Hello From Noti" "now + 4 months"
noti "Hello From Noti" "4:00 PM"
noti "Hello From Noti" "2:30 AM tomorrow"
noti "Hello From Noti" "2:30 PM Fri"
noti "Hello From Noti" "2:30 PM 25.07.18"
sudo apt-get update; noti "Done" "now"
ffmpeg সাইন ওয়েভ
বাইরে থাকা সংখ্যালঘুদের জন্য, আপনি 5 সেকেন্ডের জন্য 1000 হার্জ সাইন খেলতে পারেন:
sudo apt-get install ffmpeg
ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp
বা চিরকাল আপনি সিটিআরএল-সি না করা পর্যন্ত:
ffplay -f lavfi -i "sine=frequency=1000" -nodisp
আরও তথ্যে: https://stackoverflow.com/questions/5109038/linux-sine-wave-audio-generator/57610684#57610684
উবুন্টুতে পরীক্ষিত 18.04, ffmpeg 3.4.6।