ওএস এক্স টার্মিনাল সি এল এল-এ বর্তমান ভলিউম স্তরটি পাবেন?


17

আমি আমার ম্যাকের সিএলআই থেকে বর্তমান ভলিউম স্তরটি পরীক্ষা করতে চাই। আমি জানি আমি এটি এটি সেট করতে পারি:

osascript -e 'set volume <N>'

বর্তমান ভলিউম স্তরটি পাওয়ার চেষ্টা করার সময় এটি কাজ করছে বলে মনে হয় না।

$ osascript -e 'get volume'
4:10: execution error: The variable volume is not defined. (-2753)

উত্তর:


18

আপনার খুঁজে পাওয়া উচিত get volume settingsযা আউটপুট ভলিউম এবং সতর্কতা ভলিউম সহ অন্যান্য জিনিসের মধ্যে থাকা একটি বস্তুকে ফিরিয়ে দেবে। সুতরাং উদাহরণস্বরূপ আপনি পুরো বস্তুটি পুনরুদ্ধার করতে এটি করতে পারেন:

osascript -e 'get volume settings'

অথবা বরং এটি কেবল আউটপুট ভলিউম (যেমন সতর্কতার ভলিউমের চেয়ে বেশি) দখল করতে পারে:

osascript -e 'set ovol to output volume of (get volume settings)'

... তবে নোট করুন যে সমস্ত অডিও ডিভাইসের ভলিউম সেটিংসের উপর সরাসরি সফ্টওয়্যার নিয়ন্ত্রণ থাকবে না। উদাহরণস্বরূপ আপনার ডিসপ্লে অডিওতে নিয়ন্ত্রণ থাকা উচিত; তবে, ফায়ারওয়্যার বা ইউএসবি আই / ও বোর্ড সম্ভবত সফ্টওয়্যার নিয়ন্ত্রণে সেগুলি সেটিংসে রাখবে না (যেহেতু তারা শারীরিক নকফায় থাকতে পারে)। যদি নির্দিষ্ট সেটিংটি সফ্টওয়্যারটির নিয়ন্ত্রণে না থাকে তবে এটি get volume settings"অনুপস্থিত মান" বা এর মতো কিছু হিসাবে ফিরে আসা অবজেক্টে প্রদর্শিত হবে ।


get volume settings0, 0.1 এবং 0.01 এর মধ্যে আসলে পার্থক্য করে না। এটি দশমিক মান দেখায় না, এটি একেবারেই অকেজো করে তোলে।
একিউম্যানাস

@ এ বি বি, দুর্দান্ত পরামর্শ। অবদান রাখার জন্য ধন্যবাদ।
ঘোটি

5

আমি "চট" নামে খুব নম্র বাশ স্ক্রিপ্ট করেছি committed যেহেতু আমি সিস ভলিউমে বিরক্ত হয়েছি ইনপুট হিসাবে (0 থেকে 10 ধাপ 0.1) হিসাবে একটি ফ্লোট পয়েন্ট প্রয়োজন তবে 0 থেকে 100 এর ধাপ 14 দিয়ে একটি পূর্ণসংখ্যা আউটপুট করে।

চিত্র দেখুন ... যদি কেউ আগ্রহী: http://github.com/docgyneco69/chut

এর সম্পূর্ণ গৌরব:

#!/bin/bash
## CHUT script
## Note: regex [[:digit:]] requires a relatively recent shell
## easy to change with a sed cmd if needed
## applescript arg is not fully bullet proofed for sneaky cmds
## but as no outside arg is passed by the script I kept the usual
## arg format for code readibility (and pure laziness)

# init _x and curr_vol with defaults values (muting)
_x='- 100' ; curr_vol='0' ;

function _usage {echo -e "CHUT is a simple cmd exe to change the system audio volume.
USAGE chut [][-][--][+][++]
      no arg will mute (default)
      [-][+] [--][++] to decrease or increase the volume
      [+++] to set to the maximum
      [-h][--help] display this message
NOTE sys sets volume as float (0-10/0.1) but outputs int (0-100/14)" ; exit 1 ; } ;

# set _x by looping $1 then break as we only use 1st arg, -h or --help to print usage
while [[ "$1" ]]; do case "$1" in
    "-h"|"--help")  _usage      ;;
    "-")        _x='- 0.5'  ;;
    "--")       _x='- 1.0'  ;;
    "+")        _x='+ 0.5'  ;;
    "++")       _x='+ 1.0'  ;;
    "+++")      _x='+ 100'  ;;
    *)      _x='- 100'  ;; # unrecognized values will mute
esac ; break ; done ;

# get current volume value from system (sys volume is 0 to 100 step 14)
curr_vol=$(/usr/bin/osascript -e "get volume settings" | cut -d ',' -f1 | tr -dc [[:digit:]]) ;

# set new volume via _x - use bc for floating point, escape potential errors, 
# print value with one decimal - test & echo the new volume value via applescript
curr_vol=$( printf "%.1f" "$( echo "$curr_vol / 14 $_x" | bc -l 2>&-)" ) ;
(/usr/bin/osascript -e "set Volume "\"$curr_vol"\" ") && \
echo $(/usr/bin/osascript -e "get volume settings" | cut -d ',' -f1 | tr -dc [[:digit:]]) ;

exit 0 ;

0

একই স্কেল ১.১০০ ব্যবহার করে ভলিউম পাওয়া এবং সেট করা:

# Get current volume as a number from 0 to 100
current_vol=$(osascript -e 'output volume of (get volume settings)')

# Prank co-worker by playing loud noise/music
osascript -e "set volume output volume 100"
afplay sabotage.m4a

# (Re-)set to saved volume as a number from 0 to 100
osascript -e "set volume output volume $current_vol"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.