আমি যখন ব্যাকস্ল্যাশ টিপবো \, তখন আমাকে একটি >
(বৃহত্তর) চিহ্ন দেওয়া হবে। এটার মানে কি?
আমি যখন ব্যাকস্ল্যাশ টিপবো \, তখন আমাকে একটি >
(বৃহত্তর) চিহ্ন দেওয়া হবে। এটার মানে কি?
উত্তর:
আপনি যখনই কমান্ড লাইনটি ব্যবহার করেন, এমন কোনও উদাহরণ থাকতে পারে যখন আপনাকে খুব দীর্ঘ একটি কমান্ড চালানো দরকার। সুতরাং, আপনি আরও ভাল পাঠযোগ্যতা এবং বোঝার জন্য কমান্ডটি একাধিক লাইনে বিভক্ত করতে চান। আপনি যদি টাইপ করা নতুন লাইনের চরিত্রটি ব্যবহার করেন Enterতবে শেলটি এটি একটি নতুন কমান্ড বলে মনে করবে। সুতরাং আপনি \
নিউলাইন চরিত্র অনুসরণ করে ব্যবহার করুন ।
মূলত, কমান্ড বা বাশ স্ক্রিপ্টগুলি "ব্যাখ্যা করা হয়", অর্থাৎ লাইন দ্বারা নির্বাহিত হয়। প্রতিটি নতুন লাইন মানে একটি নতুন কমান্ড শুরু করা। টার্মিনালে, আপনি টিপলে Enter, আপনি একটি নতুন কমান্ড চালানোর জন্য একটি প্রম্পট পাবেন। সুতরাং, একটি নতুন লাইন "পালাতে" দরকার। টাইপিং \
দ্বারা অনুসরণ Enterআপনি একাধিক লাইন মধ্যে বর্তমান কমান্ড বিভক্ত করতে তাই শেল মনে করেন না যে এটি একটি নতুন কমান্ড কিন্তু পূর্ববর্তী কমান্ডের ধারাবাহিকতা অনুমতি দেয়।
>
কমান্ডের পরবর্তী লাইনটি প্রবেশ করার জন্য একটি প্রম্পট ছাড়া কিছুই নয়।
উদাহরণস্বরূপ:
আমরা একাধিক প্যাকেজ ইনস্টল করতে চাইলে কমান্ডটি এর মতো হবে
$ sudo apt install [package1] [package2] [package3] ...
কিন্তু কখনও কখনও, এটি কমান্ড বিশৃঙ্খল করে তোলে। সুতরাং আমরা \
অনুসরণ করতে পারেন Enter(নিউলাইন চরিত্র)
$ sudo apt install [package1]\
> [package2]\
> [package3]\
> ...
$PS1
এবং $PS2
ভেরিয়েবল। ফর্ম্যাটটি শিখতে বাশ ম্যান পৃষ্ঠাটি echo "'$PS2'"
দেখুন এবং বর্তমান সেটিংসটি দেখুন।
ব্যাকস্ল্যাশ অক্ষর ( \
) শেলটিতে একটি পালানোর চরিত্র হিসাবে ব্যবহৃত হয় । আপনি যদি লাইনের শেষ অক্ষর হিসাবে এটি ব্যবহার করেন তবে এটি নতুন লাইনটি থেকে বেরিয়ে যায়, সুতরাং আপনি এটি শেষ না করে পরবর্তী লাইনে আপনার কমান্ডটি চালিয়ে যেতে পারেন। এটি >
ব্যাশের প্রম্পট দ্বারা নির্দেশিত ।
উদাহরণ:
$ echo A\
> B
AB
$
\
আপনার কমান্ডে একটি আক্ষরিক রাখতে, আপনাকে অন্য ব্যাকস্ল্যাশ ব্যবহার করে এড়াতে হবে:
$ echo \\
\
$
[অন্যান্য 2 হিসাবে একটি (খুব দীর্ঘ / জটিল) উত্তর যুক্ত করার সাথে ">" কীভাবে প্রদর্শিত হবে তা উল্লেখ করবেন না ... অর্থাৎ পিএস 2 উল্লেখ করবেন না]
আপনার দ্বারা টাইপ করা: \Enter: \শুধু শেল বলল আউটপুটEnter পরিবর্তে একটি literral চরিত্র যথারীতি এটা ব্যাখ্যা (অতএব শেল "পরবর্তী লাইন চলে যায়" এর পরিবর্তে বর্তমান কমান্ড লাইন সসীম এবং এটি ব্যাখ্যা যদি না আপনি কিছু আছে। অন্যান্য নির্মাণ যেমন হেরেডোক, লুপের জন্য ইত্যাদি)।
আপনার টার্মিনালটি তাই ব্যাখ্যা \Enterকরে: "পরবর্তী লাইনে যান" (কমান্ডটি ব্যাখ্যা না করে) এবং এভাবে টার্মিনাল আপনাকে এখন একটি বহু-লাইন কমান্ডের দ্বিতীয় লাইনে প্রবেশ করতে দিচ্ছে, এবং এটি আরও দৃশ্যমান করার জন্য $PS2
সামগ্রীটি প্রদর্শন করবে ( প্রতিটি পরবর্তী লাইনে PS2 প্রম্পট বলা হয় )।
PS2 পরিবর্তনশীল সাধারণত ডিফল্ট দ্বারা সংজ্ঞায়িত হয়: PS2="> "
উদাহরণ স্বরূপ আপনি যা করতে পারেন এবং সম্পাদনটি আপনার ~ / .bashrc এটা পুনরায় সংজ্ঞায়িত হিসাবে আপনি ইচ্ছুক (বিবেচনায় রেখে এটা নিচ, এড়ানোর যেমন বিপজ্জনক অক্ষর, ধারণকারী উচিত যে >
বা ;
, এবং আপনি সাহায্য করা উচিত হয় পরিষ্কারভাবে দেখুন এটি একটি মাল্টলাইন কমান্ড তবে এটি মাল্টলাইন কনটেন্টটি অক্ষম করুন (উদা PS2="#cont#"
:) অথবা সহজেই এর অনুলিপিগুলিতে যতটা সম্ভব প্রভাব ফেলুন সেগুলি দিয়ে সহজেই আপনি অনুলিপি / আটকান (প্রাক্তন PS2=" "
:)
যা, যাইহোক, ইমো একটি খারাপ ডিফল্ট, কারণ এটি কোনও কোনও ক্ষেত্রে কিছু গুরুত্বপূর্ণ বাইনারি কমান্ড মুছতে খুব ভালভাবে নেতৃত্ব দিতে পারে।
আপনি PS2 কে অন্য কিছু হিসাবে পুনরায় সংজ্ঞায়িত করতে পারেন (উদাহরণস্বরূপ: PS2 = "", উদাহরণস্বরূপ) যাতে মাল্টলাইন কমান্ডগুলি অনুলিপি সহজেই অনুলিপি / অনুলিপি করা যায়:
উদাহরণস্বরূপ বলা যাক আপনার একটি কমান্ড রয়েছে যা বেশ দীর্ঘ হতে শুরু করে (এবং যদি আপনার টার্মিনাল যথেষ্ট প্রশস্ত না হয় তবে আপনার স্ক্রিনে গুটিয়ে যেতে পারে):
grep -i "something" /some/file /another/file /3rd/file /etc/someimportantfile
যদি কমান্ডটি খুব দীর্ঘ দেখায় (এবং চারপাশে মোড়ানো), আপনি \Enterযথাযথ স্পেসে: সন্নিবেশ করে পরবর্তী লাইনে কোথায় (কখন) চান তা চয়ন করে আপনি এটি 2 টি লাইনে দৃশ্যত বিভক্ত করতে চাইতে পারেন :
grep -i "something" /some/file /another/file /3rd/file \
> /etc/someimportantfile #warning, "> " was inserted by the shell and this changes everything !
ডিফল্ট পিএস 2 ব্যবহার করে শেলটি ">" "" আগে / "/ সামিম্পোর্টান্টফিল" যোগ করেছে .. সুতরাং আপনি যদি সেই 2 টি লাইন অন্য টার্মিনালে কপি / পেস্ট করেন তবে তাদের ক্রিয়াটি সম্পূর্ণ আলাদা হবে: 4 টি ফাইলে গ্রেপিংয়ের পরিবর্তে গ্রেপ হয় কেবল প্রথম 3 টি ফাইলে যাচ্ছি এবং গ্রেপ আউটপুট 4 র্থ ফাইলের (/ etc / সামিম্পোর্ট্যান্টফায়াল) প্রতিস্থাপন করে!
এই সমস্যাগুলি (এবং আরও অনেক) এড়াতে: আপনি উদাহরণস্বরূপ সংজ্ঞায়িত PS2=" "
করতে পারেন : মাল্টি-লাইন কমান্ডগুলি ক্লিনার এবং অনুলিপি / পেস্ট করা সহজ:
grep -i "something" /some/file /another/file /3rd/file \
/etc/someimportantfile #now only 2 spaces were inserted, without changing the grep's actions!
নোট করুন কীভাবে এই বার / বিন / সামকোমন্ডটি কেবল 2 স্পেস ডানদিকে স্থানান্তরিত করে এবং কোনও ">" সন্নিবেশ করা হয়নি, তাই আপনি নিরাপদে এই 2-লাইন কমান্ডটি অনুলিপি / পেস্ট করতে পারেন।
PS2 "" "" এর জন্য "ইত্যাদির লুপগুলিতেও ব্যবহৃত হয় এবং এটি" "হিসাবে সংজ্ঞায়িত করাও আমার কাছে, সেগুলির মধ্যে আরও ভাল।