এক্সিকিউটড কমান্ড থেকে আউটপুট লাইনের আগে কীভাবে ট্যাব সন্নিবেশ করা যায়


16

শুধু একটি দ্রুত প্রশ্ন। উবুন্টু 16.04 এলটিএসে আউটপুটটি ট্যাব করা কি সম্ভব? আমি এর দ্বারা কী বোঝাতে চাইছি এবং তা বোঝাতে নীচে দুটি চিত্র তৈরি করেছি।

img1

img2


1
আপনি যদি কমান্ড আউটপুটটি অন্য কোনও কমান্ডের মাধ্যমে পাইপ করতে চান YOUR COMMAND | indentতবে আপনি যদি তার সামনে অন্য একটি কমান্ড টাইপ করতে চান (এমনকি কেবল একটি আন্ডারস্কোরও হতে পারে) _ YOUR COMMAND?
বাইট কমান্ডার

1
@ বাইটকম্যান্ডার আমি এটি বিবেচনা করেছি, তবে আমি এটি ব্যবহারের স্বাচ্ছন্দ্যের জন্য এবং কনসোল আউটপুটটিকে আরও সহজে পড়তে সহজ করার জন্য এটি করছি। সুতরাং আমি মনে করি না যে আমার সমস্ত কমান্ডের পাইপ করাই সমাধান। যদিও প্রতিক্রিয়া এবং সম্পাদনার জন্য আপনাকে ধন্যবাদ!
অ্যালেক্স এনজি

1
[দয়া করে পাঠ্য আউটপুটটির স্ক্রিনশট পোস্ট করবেন না। ] ( meta.askubuntu.com/q/8713/85695 )
টর্ডন

উত্তর:


15

ফাইল বর্ণনাকারী সহ আপনি এর মতো কিছু করতে পারেন:

  1. বর্তমান আউটপুট বর্ণনাকারী সংরক্ষণ করুন যাতে আমরা এটি পরে পুনরুদ্ধার করতে পারি

    exec 3>&1
  2. ট্যাব সন্নিবেশ করে এমন প্রক্রিয়া প্রতিস্থাপনে আউটপুট স্ট্রিমটিকে পুনঃনির্দেশ করুন - উদাহরণস্বরূপ

    exec 1> >(paste /dev/null -)

এই বিন্দু থেকে, স্ট্যান্ডার্ড আউটপুটে লেখার যে কোনও প্রক্রিয়া pasteশুরুতে ট্যাবগুলি সন্নিবেশ করার জন্য কমান্ডের মাধ্যমে আউটপুট 'ফিল্টার' করে ।

  1. আপনার হয়ে গেলে, আপনি সংরক্ষিত ফাইল বর্ণনাকারী পুনরুদ্ধার করে এবং অস্থায়ী বন্ধ করে সাধারণ আচরণটি আবার শুরু করতে পারেন

    exec 1>&3 3>&-

আমি প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ জানাতে চাই। এটি নিখুঁত আমি সমাধানে এসেছি যদিও এটি নিখুঁত নয় not
অ্যালেক্স এনজি

@ অ্যালেক্সএনজি এই উত্সাহের জন্য ধন্যবাদ - আপনি যা চান তা কোনভাবে বিশেষভাবে তা করে না? যদি আপনি আমাকে জানান তবে আমি এটির উন্নতি করার চেষ্টা করব
স্টিল্ড্রাইভার

কয়েকটি উদাহরণ দেওয়ার জন্য: আপনার কমান্ডগুলি ইনপুট দেওয়ার পরে কিছু কমান্ড 'php -v', 'হোস্ট-নেম' এবং অন্যদের মতো উদ্দেশ্যে কাজ করে। যাইহোক, 'প্রতিধ্বনি হ্যালো ওয়ার্ল্ড' এর মতো একটি কমান্ড ব্যবহার করার সময়, আউটপুটটি ইনপুটটির সাথে ইনলাইন প্রদর্শিত হয় এবং পরবর্তী কমান্ডটি ইনপুট করার সময় এটি ইনপুট ভিজ্যুয়াল উপস্থিতিকে বিরূপ প্রভাবিত করে। কিছু অন্যান্য কমান্ড ট্যাবিং প্রক্রিয়া দ্বারা প্রভাবিত হয় না, যেমন 'এসিডাসড' এর মতো কোনও অবৈধ কমান্ড ইনপুট দেওয়ার সময়।
অ্যালেক্স এনজি

শেষ পর্যন্ত, এটি আউটপুট সঠিকভাবে প্রদর্শন করে না যা পরিবর্তিত হয় (এটি সঠিকভাবে কীভাবে বর্ণনা করতে হবে তা নিশ্চিত নয়, দুঃখিত)। উদাহরণস্বরূপ, কমান্ডটি 'অ্যাপ-গেট আপডেট' ব্যবহার করা হয়, ট্যাবিং প্রক্রিয়া ব্যতীত কনসোলের সাথে তুলনা করার সময় লক্ষণীয় পার্থক্য রয়েছে।
অ্যালেক্স এনজি

সমস্যাটি হ'ল এই পদ্ধতিরটি কেবল STDOUT (স্ট্রিম 1) পরিচালনা করে তবে STDERR (স্ট্রিম 2) নয়। এটি যেমন প্রোগ্রামগুলির আউটপুট lessবা একই ধরণের সরঞ্জামগুলিকে আউটপুট স্ক্রোলিংয়ের অনুমতি দেয় যেমন ভাঙা করে না man
বাইট কমান্ডার

9

আমি বুঝতে পারি যে এই উত্তরটি আপনার পক্ষে অনুকূল নয়, তবে আপনি সরল নাম _(বা এখনও ব্যবহৃত হয়নি এমন কিছু) দিয়ে একটি বাশ ফাংশন তৈরি করতে পারেন যা কমান্ডটি চালায় যা এটি আর্গুমেন্ট হিসাবে পায় এবং এটির ট্যাব দিয়ে সমস্ত আউটপুট ইনডেন্ট করে।

একটি উদাহরণ:

$ _ lsb_release -a
        No LSB modules are available.
        Distributor ID: Ubuntu
        Description:    Ubuntu 16.04 LTS
        Release:    16.04
        Codename:   xenial

এই ফাংশনের কোডটি কেবল এটিই হবে:

_(){ sed "s/^/\t/" <($*); }

আপনি এটিকে আপনার ~/.bashrcফাইলে সংযুক্ত করতে পারেন যাতে এটি চালিয়ে আপনার ব্যবহারকারীর সমস্ত বাশ সেশনে উপলভ্য হবে:

echo '_(){ sed "s/^/\t/" <($*); }' >> ~/.bashrc

আপনি যদি এটি সমস্ত ব্যবহারকারীর কাছে উপলভ্য করতে চান তবে এটির /etc/bash.bashrcপরিবর্তে এটি সংযোজন করুন (প্রশাসকের অধিকার প্রয়োজন):

echo '_(){ sed "s/^/\t/" <($*); }' | sudo tee -a /etc/bash.bashrc

বিকল্পভাবে আপনি /usr/local/bin/_বাশ ফাংশন ছাড়াই এবং সমস্ত ব্যবহারকারীর জন্য একই অর্জন করতে নিম্নলিখিত লিখিত সামগ্রীর মতো স্ক্রিপ্ট ফাইলও তৈরি করতে পারেন :

#!/bin/bash
sed "s/^/\t/" <($*)

ফাইলটি ব্যবহার করে সংরক্ষণের পরে আপনাকে অবশ্যই স্ক্রিপ্টটি কার্যকর করতে হবে

sudo chmod +x /usr/local/bin/_

5

সঙ্গে echoবিশেষভাবে, তুমি এটা পছন্দ ব্যাকস্ল্যাশ বেরিয়ে ব্যাখ্যা থাকতে পারে \t(ক ট্যাব স্টপ সঙ্গে) -eসুইচ:

echo -e "\tHello World"

তবে প্রতিটি কমান্ডের আউটপুট সেইভাবে পরিবর্তন করা খুব কমই সম্ভব (বা সম্ভবত) সম্ভব হবে। যদি পড়া সহজলভ্যতা আপনার লক্ষ্য হয় তবে আপনি আপনার কমান্ড প্রম্পটের চেহারাটি (যেমন রঙ করা) কাস্টমাইজ করতে চান, যেমন এখানে দেখানো হয়েছে:

আপনি পরিবেশের ভেরিয়েবলের সামগ্রী পরিবর্তন করে আপনার প্রম্পটটি কাস্টমাইজ করতে পারেন PS1। উপরের স্ক্রিনশটটি ব্লগ পোস্টে এটি কীভাবে করা যায় তার একটি সামান্য উদাহরণ দেখতে পাবেন । কীভাবে তথাকথিত এএনএসআই এস্কেপ সিকোয়েন্সগুলি বিশদভাবে ব্যবহার করতে হবে, কীভাবে আরও আরামদায়ক সরঞ্জামগুলি ব্যবহার করতে হবে, কীভাবে নতুন টার্মিনালগুলিতে ডিফল্টরূপে পরিবর্তনগুলি প্রয়োগ করা যায় ইত্যাদি এই উত্তরটির পরিধি ছাড়াই। তবে আপনি যদি সেই কৌশলটি ব্যবহার করার সিদ্ধান্ত নেন তবে ওয়েবের চারপাশে প্রচুর টিউটোরিয়াল এবং আরও তথ্য রয়েছে।


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