কম্পিউটার টিউটোরিয়াল

লিনাক্স টার্মিনাল রিডাইরেকশন দক্ষতা: যেকোনো জায়গা থেকে ডেটা পড়ুন ও লিখুন

ইনপুট এবং আউটপুটের রিডাইরেকশন যেকোনো প্রোগ্রামিং বা স্ক্রিপ্টিং ভাষার একটি প্রাকৃতিক ফাংশন। প্রযুক্তিগতভাবে, এটি অন্তর্নিহিতভাবেই ঘটে যখনই আপনি একটি কম্পিউটারের সাথে ইন্টারঅ্যাক্ট করেন। ইনপুট পড়া হয় stdin (স্ট্যান্ডার্ড ইনপुट, সাধারণত আপনার কিবোর্ড বা মাউস) থেকে, আউটপুট যায় stdout (স্ট্যান্ডার্ড আউটপুট, একটি টেক্সট বা ডেটা স্ট্রিম), এবং এররগুলো পাঠানো হয় stderr-এ। এই ডেটা স্ট্রিমগুলো অস্তিত্বে আছে বুঝতে পারলে আপনি কন্ট্রোল করতে পারেন ইনফরমেশন কোথায় যাচ্ছে যখন আপনি একটি শেল ব্যবহার করছেন, যেমন Bash বা Zsh।

স্ট্যান্ডার্ড ইন, স্ট্যান্ডার্ড আউট, এবং স্ট্যান্ডার্ড এরর লিনাক্সে ফাইলসিস্টেম লোকেশন হিসেবে অস্তিত্বে আছে। আপনি সেগুলো /dev-এ দেখতে পারেন:

$ ls /dev/std*
/dev/stderr@ /dev/stdin@ /dev/stdout@

আপনি সেগুলোর সাথে সরাসরি অনেক কিছু করতে পারেন না, কিন্তু কখনো কখনো সেগুলোকে মেটা-লোকেশন হিসেবে চিন্তা করা উপযোগী যেখানে আপনি ডেটা পাঠাতে পারেন।

রিডাইরেকশনের বেসিকগুলো সহজ: আউটপুট রিডাইরেক্ট করতে কিছু সংখ্যক > ক্যারেক্টার ব্যবহার করুন, এবং ইনপুট রিডাইরেক্ট করতে কিছু সংখ্যক < ক্যারেক্টার।

আউটপুট রিডাইরেক্ট করা

ls কমান্ডের আউটপুট একটি ফাইলে লিখতে:

$ ls > list.txt

আপনি ls-এর আউটপুট দেখতে পান না যেভাবে সাধারণত দেখেন, কারণ আউটপুট লেখা হয় list.txt ফাইলে আপনার স্ক্রিনের পরিবর্তে। এটি এতটাই ভার্সেটাইল যে, আপনি এটিও ব্যবহার করতে পারেন একটি ফাইল থেকে অন্য ফাইলে কন্টেন্ট কপি করতে। এটাকে টেক্সট ফাইল হতে হবে না, আপনি বাইনারি ডেটার জন্যও রিডাইরেকশন ব্যবহার করতে পারেন:

$ cat image.png > picture.png

(আপনি যদি চিন্তা করেন কেন আপনি কখনো এটি করতে চাবেন, এটি ফাইল পারমিশনে কখনো কখনো উপযোগী একটি প্রতिफলের জন্য।)

ইনপুট রিডাইরেক্ট করা

আপনি ইনপুটও "একটি কমান্ডে" রিডাইরেক্ট করতে পারেন। এটি可以说 arguable রিডাইরেক্ট আউটপুটের চেয়ে কম উপযোগী কারণ অনেক কমান্ড ইতিমধ্যে আপনার দেওয়া আর্গুমেন্ট থেকে ইনপুট নেওয়ার জন্য হার্ডকোডেড। এটি উপযোগী হতে পারে, যাইহোক, যখন একটি কমান্ড আর্গুমেন্টের একটি তালিকা এক্সপেক্ট করে, এবং আপনার কাছে সেই আর্গুমেন্টগুলো একটি ফাইলে আছে এবং আপনি সেগুলো দ্রুত আপনার টার্মিনালে "কপি আন্ড পেস্ট" করতে চান (স VõC আপনি আসলে কপি আন্ড পেস্ট করতে চান না):

$ sudo dnf install $(<package.list)

ইনপুট রিডাইরেকশনের সাধারণ ব্যবহার হলো হের-ডকুমেন্ট (বা শুধু হের-ডক সংক্ষেপে) এবং হের-স্ট্রিং টেকনিক। এই ইনপুট মেথড টেক্সটের একটি ব্লক স্ট্যান্ডার্ড ইনপুট স্ট্রিমে রিডাইরেক্ট করে, একটি স্পেশাল এন্ড-অফ-ফাইল মার্কার পর্যন্ত (বেশির ভাগ লোক EOF ব্যবহার করে, তবে এটি যেকোনো স্ট্রিং হতে পারে যা আপনি ইউনিক এক্সপেক্ট করেন)। এটি টাইপ করার চেষ্টা করুন (দ্বিতীয় EOF পর্যন্ত) একটি টার্মিনালে:

$ echo << EOF
> foo
> bar
> baz
> EOF

প্রত্যাশিত ফলাফল:

foo
bar
baz

একটি হের-ডক ব্যাশ স্ক্রিপ্টারদের দ্বারা ব্যবহৃত একটি সাধারণ ট্রিক যাতে টেক্সটের বেশ কিছু লাইন একটি ফাইলে বা স্ক্রিনে ডাম্প করা যায়। যতক্ষণ আপনি আপনার এন্ড-অফ-ফাইল মার্কার দিয়ে ক্লজটি শেষ করা না ভুলেন, এটি echo বা printf স্টেটমেন্টের অনমনীয় তালিকা এড়াতে একটি ইফেক্টিভ উপায়।

একটি হের-স্ট্রিং একটি হের-ডক-এর মতো, কিন্তু এতে শুধু একটি স্ট্রিং থাকে (বা কয়েকটি স্ট্রিং যাকে কোটেশন মার্কস দিয়ে একটি সিঙ্গল স্ট্রিং হিসেবে ডিসগাইজ করা হয়):

$ cat <<< "foo bar baz"
foo bar baz

এরর মেসেজ রিডাইরেক্ট করা

এরর মেসেজগুলো stderr নামে একটি স্ট্রিমে যায়, যা রিডাইরেকশনের উদ্দেশ্যে 2> হিসেবে ডেজিগনেটেড। এই কমান্ডটি এরর মেসেজগুলো output.log নামে একটি ফাইলে ডাইরেক্ট করে:

$ ls /nope 2> output.log

ডেটা /dev/null-এ পাঠানো

স্ট্যান্ডার্ড ইন, স্ট্যান্ডার্ড আউট, এবং এররের জন্য লোকেশন আছে লিনাক্স ফাইলসিস্টেমে, একইভাবে নোওয়ারে-র জন্যও একটি লোকেশন আছে। এটিকে null বলা হয়, এবং এটি /dev-এ অবস্থিত, তাই এটি প্রায়শই "devnull" হিসেবে উচ্চারণ করা হয় যারা এটিকে খুব বেশি ব্যবহার করে "slash dev slash null" বলতে গিয়ে।

আপনি রিডাইরেকশন ব্যবহার করে ডেটা /dev/null-এ পাঠাতে পারেন। উদাহরণস্বরূপ, find কমান্ডটি প্রবণ বড়বোলা, এবং এটি আপনার ফাইলগুলোর মাধ্যমে সার্চ করার সময় প্রায়শই পারমিশন কনফ্লিক্ট রিপোর্ট করে:

$ find ~ -type f
/home/seth/actual.file
find: `/home/seth/foggy': Permission denied
find: `/home/seth/groggy': Permission denied
find: `/home/seth/soggy': Permission denied
/home/seth/zzz.file

find কমান্ডটি সেটি একটি এরর হিসেবে প্রসেস করে, তাই আপনি শুধু এরর মেসেজগুলো /dev/null-এ রিডাইরেক্ট করতে পারেন:

$ find ~ -type f 2> /dev/null
/home/seth/actual.file
/home/seth/zzz.file

রিডাইরেকশন ব্যবহার

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

  1. জাভাতে প্রপার্টিজ ফাইল থেকে ডেটা পড়া

  2. Linux-এ টার্মিনাল আউটপুট ফাইলে সেভ করার ৫টি পদ্ধতি

  3. লিনাক্স টার্মিনাল থেকে ইমেইল পাঠানোর পদ্ধতি

  4. লিনাক্সে টার্মিনাল থেকে অ্যাপ্লিকেশন আইকন পরিবর্তন করার পদ্ধতি