উত্তর:
read এই আছে:
user@host:~$ read -n1 -r -p "Press any key to continue..." key
[...]
user@host:~$
-n1নির্দিষ্ট করে এটি শুধুমাত্র একটি একক অক্ষর জন্য অপেক্ষা পারে। -rরাখে এটা কাঁচা মোড, যা কারণ অন্যথায় প্রয়োজনীয়, যদি আপনি ব্যাকস্ল্যাশ ভালো কিছু চাপুন মধ্যে, এটা করো না, যে পর্যন্ত আপনি পরবর্তী কীতে চাপ দিন। -pনির্দিষ্ট করে প্রম্পট, যা যদি এটি স্পেস রয়েছে উদ্ধৃত করা আবশ্যক। keyযুক্তিটি কেবল তখনই প্রয়োজনীয় যদি আপনি জানতে চান যে তারা কী কী চাপেছে, কোন ক্ষেত্রে আপনি এটির মাধ্যমে অ্যাক্সেস করতে পারবেন $key।
আপনি যদি ব্যাশ ব্যবহার করে থাকেন তবে আপনি এর সাথে একটি টাইমআউটও নির্দিষ্ট করতে পারবেন -t, যা কোনও কী টিপানো না হলে পঠন ব্যর্থতা ফিরে আসে। উদাহরণস্বরূপ:
read -t5 -n1 -r -p 'Press any key in the next five seconds...' key
if [ "$?" -eq "0" ]; then
echo 'A key was pressed.'
else
echo 'No key was pressed.'
fi
Press a key to continue...তবে নবীন ব্যবহারকারীরাও aকীটি খুঁজে পেতে এবং এটি টিপতে সক্ষম হবেন ; ও)
command | myscript.shবা এর সাথে সমস্যা হবে myscript.sh | command। সমাধানের জন্য এই উত্তরটি দেখুন ।
read: 1: read: Illegal option -nআপনার কমান্ড bash -c 'command && command'ইত্যাদি গুটিয়ে রাখার বিষয়ে নিশ্চিত হন তবে ত্রুটিটি সম্ভবত রয়েছে sh। আমি ল্যান্ডো র্যাপার কমান্ডে এটি করছি।
আমি এই উপায়গুলি অনেক সংক্ষিপ্তভাবে ব্যবহার করি এবং এগুলি @ থেমেমেডগুই এবং @ জিম সলিউশনগুলির মতো তবে সময়সীমা ও নিঃশব্দ মোড ছাড়াও।
আমি বিশেষ করে গত কেস ভালবাসেন এবং স্ক্রিপ্ট অনেকটা এটি ব্যবহার করে যা ব্যবহারকারী ছাপাখানা পর্যন্ত লুপ রান Enter।
সমাধান লিখুন
read -rsp $'Press enter to continue...\n'সমাধানের সমাধান (-d $ '\ ই' সহ)
read -rsp $'Press escape to continue...\n' -d $'\e'যে কোনও মূল সমাধান (-n 1 সহ)
read -rsp $'Press any key to continue...\n' -n 1 key
# echo $keyপূর্বনির্বাচিত পছন্দ সহ প্রশ্ন (-আইই 'ওয়াই' সহ)
read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
# echo $keyসময়সীমা সমাধান (-t 5 সহ)
read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;ঘুম বর্ধিত ওরফে
read -rst 0.5; timeout=$?
# echo $timeout-r কাঁচা মোড নির্দিষ্ট করে, যা "\" বা "^" এর মতো সম্মিলিত অক্ষরগুলিকে মঞ্জুরি দেয় না।
-s নিঃশব্দ মোড নির্দিষ্ট করে এবং কারণ আমাদের কীবোর্ড আউটপুট লাগবে না।
-p $ ' প্রম্পট ' যা স্পেস দিন এবং অক্ষর পলান থেকে $ 'এবং' মধ্যে হতে হবে তা নির্দিষ্ট প্রম্পট। সতর্কতা অবলম্বন করুন, পালানো অক্ষরগুলির উপকারের জন্য আপনাকে অবশ্যই ডলার প্রতীক সহ একক উদ্ধৃতি প্রদান করতে হবে, অন্যথায় আপনি সাধারণ উদ্ধৃতি ব্যবহার করতে পারেন।
-d $ ' \ e ' এসকেপিকে ডিলিমিটার চরিত্র হিসাবে নির্দিষ্ট করে, সুতরাং বর্তমান প্রবেশের জন্য একটি চূড়ান্ত অক্ষর হিসাবে এটি কোনও অক্ষর স্থাপন করা সম্ভব তবে ব্যবহারকারী যে অক্ষরটি টাইপ করতে পারে সেটিকে রাখার ক্ষেত্রে যত্নবান হন।
-n 1 নির্দিষ্ট করে যে এর জন্য কেবল একটি একক অক্ষর প্রয়োজন।
- আমরা পঠন মোড নির্দিষ্ট করে।
-i Y ' Y ' ওয়াইডকে পঠন মোডে প্রাথমিক পাঠ হিসাবে নির্দিষ্ট করে।
-t 5 5 সেকেন্ডের সময়সীমা নির্দিষ্ট করে
আপনার কী ইনপুট জানতে হবে, -n1 ক্ষেত্রে, কীটি টিপানো হয়েছে তা জানুন।
$? শেষ প্রোগ্রামের প্রস্থান কোড জানতে পরিবেশন করুন, পড়ার জন্য, টাইমআউট করার ক্ষেত্রে 142, 0 সঠিক ইনপুট। Put? ভেরিয়েবলের যত তাড়াতাড়ি সম্ভব আপনার যদি কিছু কমান্ডের পরে এটি পরীক্ষা করা প্রয়োজন, কারণ সমস্ত কমান্ড পুনরায় লেখবে $?
-s; man readএবং read --helpউবুন্টু 10.04.1 এলটিএসে সহায়তা করেনি। সম্পাদনা: help readকরেছেন; বাকি অবহেলিত হয়?
read: -i: invalid optionপ্রাক্তন হয়েছি । read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;#osx read -rp $'kill-server: Are you sure (Y/n) : ' -d $'Y' key;পরিবর্তে আমার জন্য কাজ করে। `
-iউবুন্টুতে পুরোপুরি কাজ করেছি , এছাড়াও আমি জানি না কীভাবে -dওএসএক্সে একইভাবে কাজ করা হয়।
এটি আমার জন্য লিনাক্সের একাধিক স্বাদে কাজ করেছে, যেখানে এই অন্যান্য সমাধানগুলির মধ্যে কিছু নেই (এখানে সর্বাধিক জনপ্রিয়গুলি সহ)। আমি মনে করি এটি আরও পাঠযোগ্য ...
echo Press enter to continue; read dummy;
নোট একটি পরিবর্তনশীল একটি আর্গুমেন্ট হিসাবে সরবরাহকৃত করা প্রয়োজন যে read।
read -n1বহনযোগ্য নয়। এটি করার একটি বহনযোগ্য উপায় হতে পারে:
( trap "stty $(stty -g;stty -icanon)" EXIT
LC_ALL=C dd bs=1 count=1 >/dev/null 2>&1
) </dev/tty
ব্যবহারের পাশাপাশি read, কেবল একটি প্রেসের ENTERজন্য প্রম্পট চালিয়ে যেতে আপনি করতে পারেন:
sed -n q </dev/tty
status=noneপোর্টেবল হয় না। পরিবর্তে stdout এবং stderr / dev / null এ পুনঃনির্দেশ করুন। read -r line < /dev/ttyজন্য যথেষ্ট হবে এন্টার টিপুন ... ।
settings=$(stty -g); stty raw; dd ...; stty "$settings"টিটিটি সেটিংস সংরক্ষণ এবং পুনরুদ্ধার করতে নোট করুন ।
trসম্পাদনা জিনিসটি খুব কার্যকর হতে পারে?
trএর আউটপুটটিকে এটি একটি পাইপ হিসাবে বাফার করবে এবং ইউএস-বহির্ভুত কীবোর্ডগুলির এমন কী রয়েছে যা \1-\177সীমার বাইরে অক্ষর প্রেরণ করে । ddএখানে মূর্তিযুক্ত উপায়।
আপনার যদি কেবল একটি লুপ বা স্ক্রিপ্ট বিরতি দেওয়া প্রয়োজন হয় এবং আপনি কোনও কীগুলির পরিবর্তে এন্টার টিপুন খুশি হন, তবে readকাজটি নিজে থেকেই এটি করবে।
do_stuff
read
do_more_stuff
এটি শেষ ব্যবহারকারী হিসাবে বন্ধুত্বপূর্ণ নয়, তবে আপনি নিজের জন্য একটি দ্রুত স্ক্রিপ্ট লিখছেন এমন ক্ষেত্রে যথেষ্ট হতে পারে এবং ব্যাকগ্রাউন্ডে ম্যানুয়ালি কিছু করার জন্য আপনাকে এটিকে বিরতি দিতে হবে।
এটা চেষ্টা কর:
function pause(){
read -p "$*"
}
এই ফাংশনটি উভয় কাজ করে bashএবং zsh, এবং টার্মিনালে নিশ্চিত ইনপুট / আউটপুট:
# Prompt for a keypress to continue. Customise prompt with $*
function pause {
>/dev/tty printf '%s' "${*:-Press any key to continue... }"
[[ $ZSH_VERSION ]] && read -krs # Use -u0 to read from STDIN
[[ $BASH_VERSION ]] && </dev/tty read -rsn1
printf '\n'
}
export_function pause
এটিকে আপনার .{ba,z}shrcমহান বিচারের জন্য রাখুন !
হ্যাঁ ব্যবহার করার জন্য read- এবং কয়েকটি টুইট রয়েছে যা এটি উভয় cronএবং টার্মিনালের মধ্যে সবচেয়ে কার্যকর করে তোলে ।
উদাহরণ:
time rsync (options)
read -n 120 -p "Press 'Enter' to continue..." ; echo " "
-N 120 2 মিনিটের পরে পঠন বিবৃতিটি সময় করে দেয় যাতে এটি ব্লক হয় না cron।
টার্মিনালে এটি rsyncকমান্ডটি কার্যকর করতে কতক্ষণ সময় নেয় তা দেখতে 2 মিনিট সময় দেয় ।
তারপরে echoপরবর্তীটি তাই পরবর্তী ব্যাশ প্রম্পট পরবর্তী লাইনে উপস্থিত হবে।
অন্যথায় এটি Enterটার্মিনালে চাপলে "চালিয়ে যান ..." পরে সরাসরি একই লাইনে প্রদর্শিত হবে ।
"Enter any non-NUL character to continue"। কিছু কী কোনও অক্ষর (যেমনCtrl...) প্রেরণ করে না এবং কিছুগুলি একের বেশি (যেমনF1,Home...) প্রেরণ করে ।bashNUL অক্ষর উপেক্ষা করে।