টার্মিনালটিতে আমি উলম্ব রেখাগুলির সংখ্যা কীভাবে খুঁজে পাব?


12

আমি একটি স্ক্রিপ্ট লিখছি যা ডিরেক্টরিতে সিডি করার সময় গিট লগ প্রদর্শন করে shows এই জাতীয় লগ কয়েকশ লাইনগুলিকে সমন্বিত করতে পারে ming এখনও অবধি আমি ... | head -n 20এটিকে কঠোর কোডে থাকা 20 টি লাইন ( ) সীমাবদ্ধ করে চলেছি যা কাজের স্ক্রিনে ঠিক আছে, তবে বাড়ির ছোট ম্যাকবুক স্ক্রিনে খুব বেশি।

আমি লগটিকে উভয় টার্মিনালে প্রায় অর্ধেক (উল্লম্ব) পর্দা নিতে পছন্দ করব। এবং "টার্মিনাল" এও পরিবর্তন হয়: এটি কাজের জিনোম টার্মিনাল, তবে ঘরে বসে আইটার্ম 2। এবং আমি স্ক্রিন বা tmux ব্যবহার করি না।

কমান্ড লাইন থেকে টার্মিনালে উল্লম্ব লাইনগুলির সংখ্যা আমি কীভাবে খুঁজে পাব?

উত্তর:


21

টার্মিনাল পরামিতি হিসেবে সংরক্ষণ করা হয় $LINESএবং $COLUMNSভেরিয়েবল।

অতিরিক্ত হিসাবে আপনি বিশেষ টার্ম-অপারেশন প্রোগ্রাম ব্যবহার করতে পারেন, উদাহরণস্বরূপ tput:

tput lines  # outputs the number of lines of the present terminal window.
tput cols   # outputs the number of columns of the present terminal window.

9
LINESএবং COLUMNSকেবল কয়েকটি শাঁস দ্বারা সেট করা হয়। bashসেগুলি সেট করে তবে কেবল ইন্টারেক্টিভ শেলের জন্য (এবং এটি সেগুলি রফতানি করে না)।
মিঃ স্পুর্যাটিক

1
আমার সংস্করণে পরিবেশের ভারগুলি বিদ্যমান নেই ars এছাড়াও, আমি অবাক হয়েছি যে আপনি যদি টার্মিনাল উইন্ডোর আকার পরিবর্তন করেন তবে সিস্টেমটি সেগুলি পুনরায় সেট করবে। টিপুট এবং স্টেটি উভয়ই আমার পক্ষে কাজ করে, তাই আমি নতুন কিছু শিখলাম :-)
jamesqf

@ জামেস্কফ বাশ ডকুমেন্টেশন বলছে "স্বাক্ষর প্রাপ্তির পরে স্বয়ংক্রিয়ভাবে সেট আপ।" সুতরাং, হ্যাঁ, আপনি যদি টার্মিনাল উইন্ডোর আকার পরিবর্তন করেন তবে এটি তাদের পরিবর্তন করে।
সেলেদা

উপরোক্ত অচল করার জন্য নিম্নলিখিত বিকল্পগুলি দায়ী, shopt -s checkwinsizeযা /etc/bash.bashrcমন্তব্য সহ আমার ফাইলে যুক্ত হয়েছে :# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
কোস্টাস

9

এই কমান্ডটি আপনাকে টার্মিনালে রেখার সংখ্যা দিতে হবে:

stty size | cut '-d ' -f1

কিছু সিস্টেম সম্ভবত প্রয়োগ করতে পারে না stty sizeতাই আপনার পরিবর্তে এর মতো কিছু প্রয়োজন হতে পারে:

stty -a | tr \; \\012 | grep rows | tr -d ' rows'

1
এটি খুব ওএস-নির্দিষ্ট বলে মনে হচ্ছে। আপনি প্রতিটি সিস্টেমে কাজ করে এমন সিস্টেমগুলির তালিকা তৈরি করতে পারেন?
ওয়ারেন ইয়ং

4
আমি ভয় পেয়েছিলাম যে প্রথমটি ওএস নির্দিষ্ট হতে পারে, এজন্য আমি দ্বিতীয়টি যুক্ত করেছি added প্রকৃতপক্ষে গুগলিংয়ের পরে আমি দেখতে পাচ্ছি যে প্রথমটি সম্ভবত সোলারিসে কাজ করবে না। দ্বিতীয়টি খুব বহনযোগ্য হওয়া উচিত। সত্য, @ কাস্টাস ' tput linesএর চেয়ে ভাল উত্তর বলে মনে হচ্ছে এবং আমি এটি অগ্রাহ্য করেছি। আমি এর আগে জানতাম না।
সেলেদা

1
আমি বিকল্প দীর্ঘ নল দিতে চাই stty -aদ্বারা কিছু grep -Po 'rows \K[^;]*'বাsed -n 's/.*rows \([^;]*\).*/\1/p'
Costas

@ কাস্টাস আসলে হতাশ হয়ে আমার কমান্ড বা আপনার কেউই ম্যাকওএস-তে কাজ করেনি, তাই আমাকে আলাদা কমান্ড (সম্পাদিত) নিয়ে আসতে হয়েছিল। ফিগার যান: ম্যাকোস "সারি 24" এর পরিবর্তে "24 সারি" নির্গত করে! আমি এখনও tput linesআরও ভাল উপায় মনে করি , এবং আমি মনে করি এটি বেশ পোর্টেবল!
সেলেদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.