লিনাক্স এবং শেল - শেল কি একটি আবশ্যক?


8

মোট নবাগত প্রশ্ন।

আমাদের লিনাক্সে শেল কেন দরকার? উদাহরণ হিসাবে আমি যখন টাইপ করি - সন্ধান করুন। -name xy * - আমাকে জানানো হয়েছিল যে শেলটি এই ইনপুটটি নিয়েছে এবং ফাইন্ড কমান্ডকে কল করে (ওয়াইল্ড কার্ডটি সঠিকভাবে ব্যাখ্যা করা হয়েছে কিনা তা নিশ্চিত করে)। শেলের ধারণা ছাড়া এটি কী করা যায় না? ... শেলটি যদি বিভিন্ন প্রক্রিয়াটি ট্র্যাক করে রাখে তবে এটি ছাড়া কি এটি করা যায় না?

এছাড়াও, কেন আমি> ls xy * টাইপ করতে পারি এবং সঠিকভাবে আউটপুট পেতে পারি যখন আমাকে খুঁজে পেতে - খুঁজে পেতে \ দিয়ে পালাতে হবে। -নম xy \ * শেল কি একটির জন্য ওয়াইল্ড কার্ড প্রসারণ করছে এবং অন্যটি কার্যকর করার জন্য নয়?

ধন্যবাদ.

linux  bash  shell 

9
শেল ছাড়াই লিনাক্স ব্যবহার করা শহর ট্রাফিকের মাধ্যমে 50 কিমি / ঘন্টা ফেরারি চালানোর মতো। সমস্ত মজা শুধু দূরে চলে যাবে।
ভাভা

উত্তর:


23

শেলের ধারণা ছাড়া এটি করা যায় না?

ভাল, না। আপনার এমন কিছু দরকার যা আপনার উদ্দেশ্যকে ব্যাখ্যা করে এবং যথাযথ প্রোগ্রামটির জন্য প্রার্থনা করে। সেই জিনিসটিকে খোল বলা হয়।

সম্পাদনা: বিভ্রান্তি এড়ানোর জন্য, "শেল" এর অর্থ "কমান্ড লাইন ইন্টারফেস" নয়। Http://en.wikedia.org/wiki/Shell_( কমপুটিং) থেকে :

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

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


সুতরাং, আপনি কি বলে যে উইন্ডোজে স্টার্ট বোতামটি শেল বলা হয়? :-)

5
এটি কোনও সাধারণ ব্যবহার নয়, তবে জিইউআইগুলি তর্কযোগ্য শেল (কমপক্ষে যদি তারা কার্নেলের বাইরে চলে যায়)। স্টার্ট বোতামটি
জিইউআইয়ের

স্টার্ট বোতামটি অবশ্যই একটি জিনিস "যা আপনার উদ্দেশ্যকে ব্যাখ্যা করে এবং যথাযথ প্রোগ্রামের জন্য প্রার্থনা করে"। OTOH, লিনাক্স শেল টিউআই (টেক্সট ইউজার ইন্টারফেস) এর বৈশিষ্ট্য বলা যেতে পারে।

11
@ পল: এক্সপ্লোরার, প্রোগ্রাম যা স্টার্ট বোতাম সরবরাহ করে তা হ'ল উইন্ডোজ শেল। বস্তুত, এটা হল একটি উইন্ডোজ শেল; এটি প্রতিস্থাপন করা যেতে পারে।
চাঁদগ্রাহ্য

1
হ্যাঁ, স্টার্ট বোতামটি শেল হিসাবে দেখা যায়। কোনও ইন্টারেক্টিভ শেল নয় তবে শেল। সাধারণত যদিও কেউ "শেল" বললে তার অর্থ একটি ইন্টারেক্টিভ প্রম্পট (উদাহরণস্বরূপ, উইন্ডোজে কমান্ড প্রম্পটটি একটি প্রচলিত শেল)

5

আপনি অবশ্যই একটি জিইউআইয়ের মাধ্যমে সবকিছু করতে পারেন। উইন্ডোজ 'ফাইলগুলি অনুসন্ধান করুন (এক্সপি এবং পূর্বের থেকে) আপনার টাইপ করা কমান্ডের কিছুটা জিইআইআইএস সমতুল্য।

এখন, ইউনিক্স (এবং লিনাক্স) ব্যবহারকারীরা কেন শেল পছন্দ করে? আপনি আউটপুট নিতে পারেন, অন্য প্রোগ্রামে এটি খাওয়ান, এবং বিভিন্ন আউটপুট পেতে পারেন। উদাহরণ স্বরূপ:

find | grep burek

এটি দুটি আদেশ findএবং একটি grep, অন্যকে খাওয়ানো। findবর্তমান এবং সমস্ত শিশু ফোল্ডারে সমস্ত ফাইল তালিকাবদ্ধ করে, প্রতি লাইনে একটি করে এবং grepকেবল সেই লাইনগুলিকেই মুদ্রণ করে burek

এখন, আরও অনেক জটিল জিনিস রয়েছে যেমন:

ls -R | sort | uniq

ls -Rবর্তমান এবং শিশু ফোল্ডারে ফাইলগুলি তালিকাভুক্ত করে এবং sortআউটপুটটিকে বাছাই করে। uniqতারপরে আমাদের কেবল অনন্য লাইন দেয়।

এখন, আপনি এই সমস্তটিকে একটি জিইউআইতে কোড করতে পারছেন, আপনি কমান্ড লাইনের সাহায্যে দ্রুত এমন কট্টর জিনিসগুলি করতে পারেন যা আপনি নিজের লেখায় না গিয়ে GUI এর সাথে সাধারণভাবে করতে পারবেন না। কোন ক্ষেত্রে এটি কমান্ড লাইনে টাইপ করা দ্রুততর, তাই না?

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


1

হ্যাঁ আপনি শেল ছাড়াই ফাইন্ড কমান্ডটি চালাতে পারেন - যদিও এটি শুরু করার জন্য আপনার কিছু প্রোগ্রামের প্রয়োজন হবে এবং এর আউটপুট প্রদর্শন করার জন্য আপনার কিছু প্রোগ্রামের প্রয়োজন হবে। অনেক সময়, আপনি শেলের বৈশিষ্ট্যগুলি ব্যবহার করছেন এবং উদ্দেশ্যটি ব্যাখ্যা করতে সেই কমান্ডটির শেলের প্রয়োজন হবে।

যেমন পাইপিং, পুনর্নির্দেশ এবং গ্লোববিং শেলের একটি বৈশিষ্ট্য এবং এটি ব্যাখ্যা করার জন্য একটি শেলের প্রয়োজন হবে need "সন্ধান করুন। -মাইফাইলে মাইফাইল" শেলের কোনও বৈশিষ্ট্য ব্যবহার করে না এবং শেল ছাড়াই চালানো যেতে পারে। "সন্ধান করুন।

এক্সওয়াই * এর হাত থেকে বাঁচার ক্ষেত্রে, যদি এটি খুঁজে পাওয়ার জন্য ইনপুট হয় বা কোনও রেডিকশন আউটপুট হয় তবে শেলটি যে কোনও উপায়ে এটি প্রসারিত করবে little

বর্তমান ডিরেক্টরিতে যদি xyz নামে একটি ফাইল থাকে

অনুসন্ধান . -নেম xy * আসলে অনুসন্ধান হিসাবে চলবে। -নাম xyz, যা সম্ভবত আপনি চান তা নয়।

যদি আপনি খুঁজে। -নাম xy * এবং বর্তমান ডিরেক্টরিতে কোনও ফাইল xy * এর সাথে মিলছে না, এটি অনুসন্ধান হিসাবে চালানো হবে। -নাম xy *।

একইভাবে, বর্তমান ডিরেক্টরিতে xy * এর সাথে মিলে যাওয়া কোনও ফাইল না থাকলে ls> xy * xy * নামে একটি ফাইল তৈরি করবে। যদি কোনও ফাইলের মিল থাকে - xyz বলুন, এর অর্থ ls> xyz হবে। যদি xy * এর সাথে মেলে বেশ কয়েকটি ফাইল থাকে তবে ls> xy * ব্যর্থ হবে।

আরও পড়ুন http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html


কোথায় পড়ুন মোড?
থোমি

1

অ-তুচ্ছ ওএসগুলি কার্নেলে কমান্ড-লাইন ইন্টারপ্রেটার চালায় না

তারা একটি প্রোগ্রাম হিসাবে এটি চালানোর, এবং যে প্রোগ্রাম বলা হয় একটি শেল। জিইউআই-এর পরিস্থিতি মিশ্রিত বলে মনে হচ্ছে, তবে কমপক্ষে কয়েকটি ওএসও কার্নেলের বাইরেও চালাচ্ছে।

এখন, একেবারে UNIX শেল মত কাজ শেল জন্য কোন প্রয়োজন নেই, কিন্তু আপনি কি একটি ইন্টারফেস প্রয়োজন।


1

আপনার দ্বিতীয় প্রশ্নের উত্তর দেওয়ার জন্য ... শেলটি যখনই পারে তখনই এটি প্রসারিত করার চেষ্টা করবে, যদি না আপনি এটিকে আটকা করেন। * ছেড়ে যাওয়া প্রসারকে বাধা দেয়, যা সাধারণত অনুসন্ধান কমান্ডের জন্য প্রয়োজনীয়।

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

for i in $(ls /home/mydir);

বা পছন্দ

for i in /home/mydir/*;

তারা একই সেট ফলে শেষ।


0
আমি কেন> ls xy * টাইপ করতে পারি এবং একটি সঠিক ফলাফল পেতে পারি
আমার সন্ধানে - অনুসন্ধানে একটি with দিয়ে * পালাতে হবে। -নাম xy \ * হয়
শেল এক জন্য ওয়াইল্ড কার্ড প্রসারণ করছেন এবং না
অন্য নির্বাহযোগ্য?

সন্ধানের অনুরোধে '*' এড়িয়ে চলার বিষয়টি হ'ল শেলটিকে প্রসারিত করা থেকে বিরত রাখা। এটি থেকে বের হয়ে আপনি নিশ্চিত করেছেন যে আর্গুমেন্টগুলি খুঁজে পেয়েছে: "।", "-নাম", "এক্সওয়াই *"। যদি আপনি '*' এড়াতে না পারেন, তবে "।", "-নাম", "এক্সায়া", "এক্সওয়াইজ" দেখতে পাবেন (শেল ধরে "xy *" "xya xyz" পর্যন্ত প্রসারিত হবে যা একমাত্র যদি ঘটে তবেই ঘটবে xy ফাইলগুলি XY এবং xyz)) সুতরাং আপনার প্রশ্নের উত্তর হ'ল না, শেলটি আপনার অনুসন্ধানের আবেদনে '*' প্রসারিত করে না কারণ আপনি স্পষ্টভাবে এটিকে পালিয়ে না যেতে বলেছিলেন।


0

লিনাক্সের শেল হল লিনাক্সে ফাইল সিস্টেমের সাথে যোগাযোগের এবং আর্গুমেন্টের সাথে এবং পরিবেশের ভেরিয়েবলের সাথে সম্পর্কিত কমান্ড পরিচালনা করার একটি সুবিধাজনক এবং প্রচলিত উপায়। এটি প্রচুর দরকারী বৈশিষ্ট্য সরবরাহ করে, উদাহরণস্বরূপ, এক প্রক্রিয়ার আউটপুটটিকে অন্যের ইনপুটগুলিতে সংযুক্ত করা, ইনপুট / আউটপুট স্ট্রিমগুলিকে ফাইলগুলি / এফআইএফও ইত্যাদিতে পুনঃনির্দেশ করা ইত্যাদি। শেল সহজেই বেশ কয়েকটি ছোট প্রোগ্রাম একত্রিত করার একটি ভাল উপায়, যার প্রতিটি একটি দরকারী কিছু সরবরাহ করার জন্য, একটি তুলনামূলকভাবে ছোট কাজ করছেন। এর মধ্যে কয়েকটি প্রোগ্রাম (যেমন সন্ধান এবং ls) তাদের সাথে শেলের সাথে কাজ করার জন্য ডিজাইন করা হয়েছিল।

সম্প্রসারণটি বুঝতে, কেবল মনে রাখবেন যে কোনও শব্দ (স্থান-সীমিত ক্রমানুসারে অপ্লানিউমেরিক অক্ষর এবং -, এবং কিছু অন্যান্য চিহ্ন) দেওয়া হয়েছে যা এতে *বা ?প্যাটার্ন অক্ষর রয়েছে , পালিয়ে যায় না বা উদ্ধৃতি ( ") বা অ্যাডোস্ট্রোফের ভিতরে রাখা হয় না ', একটি সিরিজ দিয়ে প্রতিস্থাপিত হয় প্যাটার্নের সাথে মেলে এমন ফাইলের সাথে স্পেস-সীমাবদ্ধ শব্দের। আপনার কি একটি নক্ষত্রের সাথে একটি শব্দ ছিল, প্রসারণের পরে আপনার শূন্য, এক বা একাধিক শব্দ থাকবে যা বাশ দ্বারা বিভিন্ন যুক্তি হিসাবে বিবেচিত হবে। lsকমান্ডের নির্দিষ্ট নকশাটি এখানে আসে : ls foo*"foo" দিয়ে শুরু হওয়া সমস্ত ফাইল প্রদর্শন করার জন্য এটি এই স্কিমটি পুরোপুরি ফিট করে ! এটি এর মতো কিছুতে প্রসারিত হয়

ls foobar boobaz

এবং ls কেবল আর্গুমেন্টগুলি থেকে ফাইলগুলি মুদ্রণ করে, অস্তিত্বের জন্য যাচাই করে এবং ফোল্ডারগুলিতে স্থানান্তর ইত্যাদি from

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


0

ইন্টারেক্টিভ কমান্ডগুলির জন্য, শেলটি জিইউআই দ্বারা প্রতিস্থাপিত হতে পারে।

তবে শেলের মূল বক্তব্যটি এটি একটি স্ক্রিপ্টের ভাষা: আপনি নির্দিষ্ট পরিস্থিতিতে (বুট, সেশন খোলার, প্রতিদিন, ...) সম্পাদিত পুরো প্রোগ্রাম তৈরি করতে পারেন। এই বৈশিষ্ট্যটি অন্য সরঞ্জাম দ্বারা প্রতিস্থাপন করা যাবে না।


এবং অবশ্যই আপনি এর সাথে শেল স্ক্রিপ্টগুলি শিডিউল করতে পারবেনcron
ওফার্স

0

অবশ্যই আপনি লিনাক্স চালাতে পারতেন এবং শেলটি কখনও ব্যবহার করতে পারবেন না। বাক্সের বাইরে অনেকগুলি স্ট্যান্ডার্ড লিনাক্স ডিস্ট্রোস হোম ব্যবহারকারীকে ঠিক কীভাবে তাদের ফেসবুক চেক করতে, ছবিগুলি দেখতে এবং ইমেল প্রেরণ করতে চান তাদের প্রয়োজন হয় offer

লিনাক্সের অনেক উপকার রয়েছে তবে শেলটি সম্ভবত সেরা। শেলটি I / O পুনঃনির্দেশের অনুমতি দেয়। পাইপগুলি ("|") উল্লেখ করার সময় লোকেরা এটির কথা বলে। উদাহরণ স্বরূপ:

আমি মেশিনগুলির তালিকার সাথে সংযোগ স্থাপন করতে এবং একটি ব্যবহারকারী অ্যাকাউন্ট যেখানে রয়েছে তার একটি সমীক্ষা করতে চাই:

for host in `cat hostnames.txt1`; do
echo "Connecting to $host"
ssh $host "cat /etc/passwd | grep -i username"
done

হোস্টনেমস.টিএসটিএসটিতে 0 টি হোস্ট থাকতে পারে বা হাজার হাজার থাকতে পারে। এই স্ক্রিপ্টটি জিপ করবে এবং জরিপটি তৈরি করবে, তথ্যকে stdout এ ছুঁড়ে দেবে।

স্ক্রিপ্টিং খুব সৃজনশীল পেতে পারে। ইনপুট / আউটপুট থেকে এবং ফাইলগুলিতে পুনঃনির্দেশ করতে আমি "/ >>" অক্ষর ব্যবহার করতে পারি। আমি উপরের স্ক্রিপ্টের সেই সমস্ত মেশিন জরিপ করতে পারি, ব্যবহারকারীকে যে কোনও ফাইল থেকে সার্ভারের নাম আউটপুট করতে পারি, তারপরে অন্য স্ক্রিপ্টের সাথে ফলোআপ করুন যা ব্যবহারকারীর অ্যাকাউন্টে সংযুক্ত হয়ে কিছু কাজ করে (লক / আনলক / রিসেট পিডব্লু / গ্রুপ / ইত্যাদি সরান / যুক্ত করুন)।

উপায় সম্পর্কে জানুন। প্রতি. লিপি. =)

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