ইতিমধ্যে জরিমানা জবাব দেওয়া হয়েছে তার উপরে কেবল একটি অতিরিক্ত নোট। নোট করুন যে [ -t 0 ]
ফাইল বর্ণনাকারী 0 টি পরীক্ষা করে এমন একটি ফাইল খোলে যে টিটি লাইনের শৃঙ্খলাযুক্ত একটি ডিভাইস ফাইল (সাধারণত, এটি নিরপেক্ষ টার্মিও (গুলি) ioctl () সফল হয় তা পরীক্ষা করেই সম্পন্ন হয়েছে)।
এছাড়াও, এর অর্থ এই নয় যে অন্য প্রান্তে একটি টার্মিনাল বা টার্মিনাল এমুলেটর রয়েছে (একটি কীবোর্ডে প্রকৃত ব্যবহারকারী টাইপ সহ) (যদিও প্রচুর সংখ্যাগরিষ্ঠ ক্ষেত্রে এবং সম্ভবত আপনি বেশিরভাগ ক্ষেত্রেই যত্নবান হন, এটি যথেষ্ট ভাল পড়তা)।
tty এবং pty ডিভাইসগুলি ডেটা স্থানান্তর করার জন্য বা একটি আন্তঃক্রিয়া যোগাযোগ ব্যবস্থা হিসাবে ব্যবহার করা যেতে পারে।
উদাহরণস্বরূপ, কেউ এটি করতে পারে:
(stty raw -echo; myscript) < /dev/ttyS0
আরএস 232 এর থেকে কী প্রাপ্ত হয়েছে তা খাওয়ানোর জন্য myscript
।
echo test | ssh -tt host myscript
হবে myscript
এর stdin একটি Pty ডিভাইস হচ্ছে না (এর সাথে sshd
অন্য প্রান্তে, এবং শেষ পর্যন্ত (SSH সংযোগ জুড়ে) না টার্মিনাল, কিন্তু একটি নল দ্বারা প্রতিপালিতecho
)
সেই আরএস 232 লাইন বা পিটিটির অন্য প্রান্তে টার্মিনাল রয়েছে কিনা তা পরীক্ষা করতে আপনি কোনও $TERM
ভেরিয়েবল সেট এবং খালি নয় ( [ -n "$TERM" ]
) খতিয়ে দেখতে পারেন এবং ডিভাইস স্ট্যাটাস রিপোর্টটি এফডি-র উপরের এস্কেপ ক্রম প্রেরণ করতে পারেন এবং আপনি যে চেক পেয়েছেন তা পরীক্ষা করতে পারেন একটি প্রতিক্রিয়া (ছাড়াও [ -t 0 ]
এবং [ -n "$TERM" ]
)।
printf >&0 '\e[5n'
\e[0n
বেশিরভাগ টার্মিনাল দ্বারা একটি দ্বারা জবাব দেওয়া হয় ।
এখন এটি নিয়ে বেশ কয়েকটি সমস্যা রয়েছে, তাই আপনি যা যাচাই করতে চান সেই ক্ষেত্রে ব্যতীত আমি তা করার পরামর্শ দেব না কারণ আপনি একটি ভিজ্যুয়াল টিউআই অ্যাপ্লিকেশন চালাতে চান (এই ক্ষেত্রে, আপনি লাইব্রেরি ব্যবহার করে আরও ভাল থাকবেন ncurses
, এবং ডিএসআরের পরিবর্তে, আপনি টার্মিনালের ধরণটি আরও বিশদভাবে অনুসন্ধানের জন্য ডিভাইস সনাক্তকরণের পালানোর ক্রমটি প্রেরণ করতে চান $TERM
):
- ধন্যবাদ, বেশিরভাগ ক্ষেত্রে যেখানে স্টিডিন কোনও টার্মিনাল নয়, এটি কেবল পঠনযোগ্য মোডে খোলা থাকবে যার ফলে এটি
printf
ব্যর্থ হতে পারে, তবে স্টিডিন যদি রিড + রাইট মোডে একটি টিটি ডিভাইস খোলা থাকে তবে এর পার্শ্ব প্রতিক্রিয়া হবে অন্য প্রান্তে যে ক্রম প্রেরণ। উদাহরণস্বরূপ উপরে আমাদের ssh উদাহরণে উদাহরণস্বরূপ, এটি প্রকৃতপক্ষে একটি টার্মিনালে ক্রম প্রেরণ করবে (তবে উত্তরটি স্টিডিনে আসবে না)
- উত্তরটি নির্ভরযোগ্যভাবে এবং বহনযোগ্যভাবে পড়া খুব কঠিন। আপনার অস্থায়ীভাবে টিটি লাইনের শৃঙ্খলা পরিবর্তন করতে হবে এবং একবারে একটি বাইট পড়তে হবে। আপনাকে একটি সময়সীমাও স্থির করতে হবে যার মাধ্যমে উত্তরটি যদি না দেখা যায়, আপনি হাল ছেড়ে দিয়ে সিদ্ধান্ত নেবেন যে কোনও টার্মিনাল নেই। আপনি যদি উপগ্রহ সংযোগগুলির মাধ্যমে লোকেরা ডায়াল করতে বিবেচনা করতে চান তবে এর অর্থ একটি দীর্ঘ সময়সীমা।
- পটভূমিতে যখন কোনও টার্মিনাল থেকে পড়া আপনার স্ক্রিপ্টকে একটি সাইনটিন সংকেত দিয়ে স্থগিত করে।