কোনও প্রক্রিয়া শেষ হয়ে গেলে কীভাবে শব্দ তৈরি করবেন?


94

আমি একটি টার্মিনাল মাধ্যমে একটি দীর্ঘ প্রক্রিয়া শুরু করেছি। প্রক্রিয়াটি শেষ হয়ে গেলে কি উবুন্টু টার্মিনালটিকে একটি শব্দ করা সম্ভব? এইভাবে, আমার চেকিং চালিয়ে যাওয়ার দরকার নেই, তবে পরিবর্তে একটি শব্দের মাধ্যমে জানানো হবে।


প্রক্রিয়াটি সম্পূর্ণ হওয়ার সাথে সাথে কী বোঝাতে চাইলে আপনি আরও ব্যাখ্যা করতে পারেন ?
লুসিও

1
@ লুসিও নিয়ন্ত্রণটি টার্মিনালে ফিরে আসবে
Goaler444

1
আপনি কি বলতে চান, টার্মিনাল থেকে একটি অ্যাপ্লিকেশনটি খুলুন এবং এটি শেষ হয়ে গেলে, একটি শব্দ করুন? আপনার কি উবুন্টু সার্ভার আছে বা আপনি জিইআইআই সফটওয়্যারটি বোঝাতে চান?
লুসিও

2
হ্যাঁ অবশ্যই. উদাহরণস্বরূপ আমি একটি কমান্ড লাইন প্রোগ্রাম শুরু করি এবং এটি একবার বের হয়ে যায় এবং নিয়ন্ত্রণটি টার্মিনালে ফিরে আসে, একটি শব্দ তৈরি হয়। আমি বর্তমানে উবুন্টু 12.10
Goaler444

উত্তর:


78

আপনার স্ক্রিপ্টের শেষে স্যুটিং কমান্ডটি রেখে আপনার দীর্ঘ প্রক্রিয়ার জন্য অনুরোধ জানাতে কমপক্ষে তিনটি কমান্ড লাইনের উপায় রয়েছে:

  1. একটি শব্দ বাজানোর "শাস্ত্রীয়" উপায় হ'ল পিসি স্পিকারগুলির মাধ্যমে বীপ ব্যবহার করা বীপ ইনস্টল করুন। তবে এটি সব ক্ষেত্রে কার্যকর হবে না (যেমন আমার সিস্টেমে পিসি স্পিকারগুলি সম্পূর্ণ অক্ষম রয়েছে) এবং আপনাকে 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]
    
  2. আমরা অ্যাপ্লে (ডিফল্টরূপে ইনস্টল) ব্যবহার করে wav ফর্ম্যাটে যে কোনও শব্দ ফাইল খেলতে পারি:

    aplay /usr/share/sounds/alsa/Side_Right.wav
    
  3. অন্য উপায়টি হ'ল আপনার সিস্টেমে (ইন 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"


1
@ টাকাকাত আমি উবুন্টু ১২.১০ ব্যবহার করছি এবং বর্তমানে এসপ্যাক ইনস্টলড নেই।
লুসিও

@ লুসিও: হ্যাঁ, এখন আপনি এটি বলছেন ... তারা স্পিচ-প্রেরণে পাল্টে গেছে। যদি এটি কাজ করে (এটি আমার সিস্টেমে নেই) ব্যবহারের জন্য সম্পাদনা দেখুন spd-say
তক্কাত

@ তাককাত spd-sayইউটিলিটি ডিফল্টরূপে ইনস্টল করা হয়েছে এবং এটি আমার সিস্টেমে কাজ করে।
লুসিও


1
আমার সাথে ভাল সাফল্য ছিলpaplay /usr/share/sounds/freedesktop/stereo/complete.oga
নিকোলাস ডিপিয়াজা

73

আমি ব্যবহার করি

make; spd-say done

আপনি দীর্ঘমেয়াদী কমান্ড ব্যবহার করুন না কেন "মেক" প্রতিস্থাপন।


তুমি আমার দিন তৈরি করছিলে!! : ডি
n0noob

5
spd-say 'get back to work'। এবং প্রি ইনস্টলড পাশাপাশি আসে: রিলিজ.উবন্টু.com / টিস্টিএল / ,, আমি মনে করি অন্ধ লোকদের জন্য কি? আর -wঅসীম loops জন্য: while true; do spd-say -w 'get back to work you lazy bum'; done
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

আমার চেয়ে বেশি শক্তভাবে হেসেছিলাম।
নেলসনগন

15

টি এল; ডিআর

কমান্ড শেষ হওয়ার পরে একটি শব্দ বাজানোর জন্য:

long-running-command; sn3

( sn33 নম্বর শব্দটি কোথায় ) এটি এনে দিন .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 মুদ্রণ করতে কিন্তু সর্বদা একই শব্দ, ইত্যাদি প্লে করুন

হালনাগাদ

আমি এই ফাংশনগুলি গিটহাবের উপরে রেখেছি, দেখুন:

উত্স থেকে ডাউনলোড করা যেতে পারে:

আপডেট 2

আমি 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কীভাবে এটি কাজ করতে হয় তা নির্ধারণের জন্য আমি কোনও বিশেষ বিকল্প খুঁজে পাচ্ছি না । কোন ধারনা?
দয়া

@ শাদি আপনার সিআরটিএল + সি আঘাত না করা পর্যন্ত পুনরাবৃত্তি হওয়া এমন একটি শব্দ সহ একটি সমাধানের জন্য আমার আপডেট করা উত্তর দেখুন।
আরএসপি

14

মতে এই\a চরিত্র হওয়া ASCII কোড 7, যা কম্পিউটারের হুইসেল হয় পালাতে।

সুতরাং echo $'\a'এটি আমার স্থানীয় মেশিনে একটি বীপ শব্দ তৈরি করার জন্য কাজ করে, এটি কম্পিউটারে চলমান ব্যাশ শেলের উপর চালিত হলেও আমি পুটিটির মতো টার্মিনাল ইন্টারফেসের মাধ্যমে সংযুক্ত।


3
আশ্চর্যজনক! এটি সবচেয়ে সহজ এবং সর্বোত্তম সমাধান (কমপক্ষে আমার জন্য) কারণ এটির জন্য কোনও তৃতীয় পক্ষের অ্যাপ্লিকেশন ইনস্টল করার প্রয়োজন হয় না এবং কমান্ড প্রম্প্টের পরে চালানোর জন্য প্রক্রিয়াটির মাঝখানে টাইপ / আটকানোও যায় যা ফোকাস গ্রহণ করবে।
hlopetz

2
এই চরিত্রটির শব্দটি বেশিরভাগ আধুনিক টার্মিনালগুলিতে ডিফল্টরূপে অক্ষম থাকে
phil294

6

মাইকেল কারিজের উত্তরটি প্রসারিত করে আপনি বাশকে একটি BEL( \a) চরিত্রের মাধ্যমে মুদ্রণ করতে পারবেন PROMPT_COMMAND:

PROMPT_COMMAND='printf \\a'

PROMPT_COMMANDসেভাবে সেট করা printf \\aপ্রতিটি কমান্ডের শেষে বাশকে কার্যকর করতে সক্ষম করে, যা টার্মিনালটিকে একটি শব্দ বাজায় (যদিও মুরু নির্দেশ করে, প্রম্পটের পুনর্নির্মাণকে সক্রিয় করে টার্মিনালটি শব্দটি বাজায়, অর্থাৎ শব্দটি চালানো হবে) প্রতিবার একটি নতুন প্রম্পট আঁকানো হয়, উদাহরণস্বরূপ এমনকি কেবল আঘাত করার সময়ও ENTER)।

এটি একটি টার্মিনাল বৈশিষ্ট্য, সুতরাং এটি সমস্ত টার্মিনাল জুড়ে নাও কাজ করতে পারে; উদাহরণস্বরূপ এটি কনসোলে কাজ করে না (তবে আমি নিশ্চিত এটি এতে কাজ করে gnome-terminalএবং xterm)।


5
(প্রতিবার আপনি এন্টার টিপলে যে সতর্কতার সাথে আপনি একটি শব্দ পেয়ে যাবেন)
মারু


2

এটি আপনি যা চেয়েছিলেন তা নয় তবে আপনি এটির জন্য বিজ্ঞপ্তিটি ব্যবহার করতে পারেন।

অন্যান্য উত্তরে প্রদত্ত আদেশটি প্রতিস্থাপন করুন

notify-send "Process terminated" "Come back to the terminal, the task is over"

1
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

চিয়ার্স।


0

আমি একটি সরল এবং প্রায় দেশীয় স্ক্রিপ্ট তৈরি করেছি যা শব্দটি চালায় এবং উবুন্টু ( গিস্ট ) এর জন্য একটি প্রদত্ত বার্তা এবং সময় সহ একটি বিজ্ঞপ্তি প্রদর্শন করে :

#!/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

কিভাবে ব্যবহার করে?

প্রথম রান - সেট আপ:

  1. আপনার বাড়িতে একটি নতুন ডিরেক্টরি তৈরি করুন এবং এটি কল করুন noti

    mkdir ~/noti
    
  2. Noti.sh ডাউনলোড করুন এবং এটি উপরের notiদির থেকে বের করুন

  3. টার্মিনাল ও পরিবর্তন ডিরেক্টরিতে খুলুন noti

    cd ~/noti
    
  4. জারি করে noti.sh কার্যকর করতে সক্ষম করুন:

    sudo chmod +x noti.sh
    
  5. এভাবে পরীক্ষা চালান:

    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"

0

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।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.