টার্মিনাল প্রস্থে আউটপুট ছাঁটাই করার জন্য ব্যবহার?


12

যখন আমি করি

ps aux

আউটপুটটি আমার টার্মিনালের প্রস্থে খুব সুন্দরভাবে ছাঁটা হয়ে যায়, যাতে দীর্ঘ প্রক্রিয়া বিবরণী এক লাইনের বেশি না নেয়। যাইহোক, আমি যদি এটি অন্য কোনও কিছুর মধ্যে পাইপ করি তবে দীর্ঘ লাইনগুলি ফিরে আসে।

আমি বুঝতে পারি এটি একটি যথাযথ আচরণ, যেহেতু পিএস আর টিটিআই-তে আউটপুট না দেয় এবং পুরো আউটপুট প্রসেসিংয়ের জন্য গুরুত্বপূর্ণ cruc আমি যা চাই তা হ'ল অন্য ব্যবহার যা আমার কাজ শেষ হয়ে গেলে আউটপুট ক্রপ করবে।

আমি এরকম কিছু করতে সক্ষম হতে চাই:

ps aux | grep -v 'www-data' | nowrap  

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

এরকম কিছু আছে কি?

উত্তর:


15

cutআউটপুট স্লাইস করতে আপনি কমান্ডটি ব্যবহার করতে পারেন । উদাহরণ স্বরূপ:

ps aux | grep -v 'www-data' | cut -c-80

এটি প্রতিটি লাইনের প্রথম 80 টি অক্ষর রাখবে। আপনি অবশ্যই যে কোনও প্রস্থে সেট করতে পারেন।

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

ps aux | grep -v 'www-data' | cut -c-$COLUMNS

যদি আউটপুটটিতে ট্যাব থাকে তবে প্রস্থটি সঠিকভাবে গণনা করা যাবে না। expandট্যাবগুলিকে স্পেসে পরিণত করতে পারে:

ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS

1
... এবং যদি আপনি আপনার আউটপুট গ্রেপ দ্বারা বর্ণিত করতে চান (যেমন আমি করি) তবে আপনি cutপ্রথমে এবং grepতারপরে।
ডারমাইক

এবং আমি আমার ~ / .Bash_aliases ফাইলে একটি উপনাম যুক্ত করেছি: ওরফে কাট = 'কাট-সি - OL COLUMNS'। এখন আমি কেবল কাটতে পাইপ করতে পারি ...
স্যামুয়েল লাম্পা

1
যদি আউটপুটটিতে ট্যাব থাকে তবে এটি দুর্ব্যবহার করে। কোন পরামর্শ? একটি বিকল্প হ'ল প্রথমে ট্যাবগুলিকে স্পেসে রূপান্তর করা, তবে এটি এড়ানো ভাল লাগবে, যদি আমরা পাইপলাইনে পরবর্তীকালে ট্যাব সংরক্ষণ করতে চাই।
অ্যারন ম্যাকডেইড

2
আমি এটি expandঅন্তর্ভুক্ত করার জন্য উত্তর খুঁজে পেয়েছি এবং সম্পাদনা করেছি। এটি ট্যাবটির সংশোধন করে
অ্যারন ম্যাকডেইড

3

আপনি আউটপুট ব্যবহার করে ক্রপ করতে পারেন cut। যেমন

পিএস অক্স | grep -v 'www-data' | কাটা -c1 - OL OL কলম্বস}

যেখানে ${COLUMNS}টার্মিনালের বর্তমান প্রস্থ প্রদান করে। resizeকমান্ড বর্তমান প্রস্থ পুনরায় জেনারেট করতে ব্যবহার করা যেতে পারে:

$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;

আপনি যদি এটি স্বয়ংক্রিয় করতে চান তবে এটিকে স্ক্রিপ্টে গুটিয়ে রাখতে পারেন nowrap:

#!/bin/bash

eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -

2

এবং নাগুল যা বলেছিল তা ছাড়াও আপনি ব্যাশে ব্যবহার করতে পারেন:

tput কলস

প্রস্থ পেতে:

COLUMNS = $ (টিপুট কলস)

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