কে * ইন (ব্যাখ্যায়) ডিল করে
echo *
প্রতিধ্বনিটি কি তারা বা শেলটি দেখায় এবং এটি ফাইলের নামের একটি তালিকা দেখায় ..
কি সম্পর্কে
cp temp temp*
কে * ইন (ব্যাখ্যায়) ডিল করে
echo *
প্রতিধ্বনিটি কি তারা বা শেলটি দেখায় এবং এটি ফাইলের নামের একটি তালিকা দেখায় ..
কি সম্পর্কে
cp temp temp*
উত্তর:
বাশ (বা আপনি শেল হিসাবে যা ব্যবহার করুন), কোনও ইনপুট পড়ার জন্য প্রথম জিনিস এবং এটি ?
এবং এর মতো বিশেষ অক্ষরের ব্যাখ্যা শুরু করবে *
। সিডাব্লুডিতে*
যেকোন ম্যাচগুলিতে প্রসারিত হয় , যার অর্থ তারকাচিহ্নটি ম্যাচগুলির দ্বারা প্রতিস্থাপিত হয়।
বেশিরভাগ ক্ষেত্রে, এটি মোটামুটিভাবে এগিয়ে চলেছে তবে সময়ে সময়ে এটি কিছু বিভ্রান্তির কারণ হতে পারে।
নিম্নোক্ত বিবেচনা কর. একটি ডিরেক্টরিতে এই বিষয়বস্তু রয়েছে:
আপনি যদি mv *
কিছু টাইপ করেন তবে আপাতদৃষ্টিতে অদ্ভুত ঘটনাটি ঘটে: test3
সেখানে রয়েছে, তবে বাকিগুলি চলে গেছে। প্রথমে অদ্ভুত থাকা সত্ত্বেও, আপনি একবার বুঝতে পারবেন যে বাশ আসলে কী চলে mv
। নক্ষত্রের কারণে, বাশ ব্যাখ্যা mv *
করে mv test test1 test2 test3
, এবং এমভি যখন সেই তালিকাটি পেয়ে যায়, তখন ধরে নেওয়া হবে যে শেষ যুক্তিটি গন্তব্য, যেখানে এখানে সমস্ত ফাইল সরিয়ে নেওয়া হত।
আপনি তালিকাভুক্ত আদেশ হিসাবে:
echo *
গরীব মানুষ হিসাবে কাজ করতে পারে ls
। শেলটি সেই ডিরেক্টরিটিতে থাকা যাবতীয় নক্ষত্রকে প্রসারিত করবে এবং আমি নিশ্চিত যে আপনি ইতিমধ্যে জানেন, echo
আক্ষরিক অর্থে আক্ষরিকরূপে এটি পাস করা কোনও বাশকে প্রতিধ্বনিত করবে।cp temp temp*
mv
আমি উপরে বর্ণিত কমান্ডটির মতো কিছুটা আচরণ করব , যদি না কেবল টেম্প নামের একটি ডিরেক্টরি থাকে, যেখানে ক্ষেত্রে উত্স এবং গন্তব্যের নাম একই থাকে, অর্থাত্ এটি কিছুই করবে না।*
পরিবর্তে ব্যবহার সম্পর্কে "দুর্বল" কিছুই নেই ls
। উদাহরণস্বরূপ, for f in *; do
হয় আরো তুলনায় নির্ভরযোগ্য for f in $(ls)
একটি ফাইলের নাম হোয়াইটস্পেস বা উল্লিখিত glob অক্ষর আছে। (তবে, সিডব্লিউডিতে কোনও ফাইল না থাকলে এটি ব্যর্থ হবে, সুতরাং আপনাকে সেই মামলার জন্য পরীক্ষা করা দরকার))
shopt nullglob
জন্য
echo *
, কৌশলটি কিছু ক্ষেত্রে আপনাকে বাঁচাতে পারে।
ইতিমধ্যে উল্লিখিত হিসাবে, শেল প্রসারিত হয় *
সুতরাং echo
বর্তমান ডিরেক্টরিতে শেল যা খুশি তা আর্গুমেন্ট হিসাবে গ্রহণ করে। তবে নোট করুন যে প্রসারণটি যদি কিছুই না করে, উদাহরণস্বরূপ ডিরেক্টরিতে যদি কোনও গোপনীয় ফাইল না থাকে *
তবে ডায়ালটি অপরিবর্তিত রাখা হয় এবং ডাকা কমান্ডের মতো পাস করা হয় (যদি না কিছু শাঁসের মতো মানক বিকল্প না ব্যবহার করা হয় bash
)। echo *
এরপরে কোনও দরিদ্র মানুষের মতো আচরণ ls
করবে না কারণ প্রাক্তন কিছুই প্রিন্ট করবেন না, যদিও পরেরটি মুদ্রণ করবে *
।
একইভাবে, বর্তমান ডিরেক্টরিতে cp /tmp/temp temp*
নামযুক্ত একটি ফাইল তৈরি করবে temp*
যদি এখনও কমপক্ষে একটি ফাইল নেই যার নাম দিয়ে শুরু হয় temp
।
অবশেষে, আপনি যদি *
যাই চান না কেন অপরিবর্তিতভাবে পাস করতে চান তবে আপনি একক উদ্ধৃতি '*'
, ডাবল কোট "*"
বা ব্যাকস্ল্যাশ ব্যবহার করে এটিকে প্রসার থেকে রক্ষা করতে পারেন \*
।
বাশে, শেলটি এটির সাথে কাজ করে। আপনি যদি *
প্রতিধ্বনি ছাড়াও চেষ্টা করেন তবে দেখুন
দ্রষ্টব্য- কিছু মন্তব্যের উপর ভিত্তি করে, আমি * ENTER চালানোর সময়, একটি ডিরেক্টরি তৈরি করতে এবং কিছু ফাইল তৈরির জন্য টাচ কমান্ডটি ব্যবহার করার পরামর্শ দিই এবং সেগুলির কোনওটি নিশ্চিত না করে বা কমপক্ষে প্রথম বর্ণমালা অনুসারে নিশ্চিত করা উচিত যে নামটি নয় কোনও স্ক্রিপ্ট বা কমান্ডের পথে।
$ *
bash: a: command not found
$ echo *
a a.aa a.ab a.b a.htm a.tx
সুতরাং ls *
একটি পদসমষ্টি একটি বিট
উইন্ডোজে, *
কমান্ড দ্বারা পরিচালিত হয়, তাই dir *.*
ক্লিচ নয়।
দ্রষ্টব্য- কিছু মন্তব্য দেখে, আমি যুক্ত করব, চালানোর ঝুঁকি রয়েছে * তারপরে ENTER করুন। ডিরেক্টরি তালিকাতে প্রথমে যদি আপনার কাছে আরএম নামে একটি ফাইল থাকে তবে তা বিপজ্জনক কারণ এর পরে যে কোনও কিছুই মুছে ফেলা হবে। এছাড়াও, এবং এটি কম সম্ভাবনা নেই, যদি ডিরেক্টরি তালিকার প্রথম ফাইলটি যদি কোনও পথের স্ক্রিপ্টের নাম হয়, তবে এটি এটি চালিত হবে।
rm
অবশ্যই থাকতে পারে ।
-rf
? আমি চেষ্টা touch -rf
এবং touch \-rf
কিন্তু তা তৈরি করা হয় না।
-rf
? (আমি আরএম নামক একটি ফাইল এবং -আরএফ নামক একটি ফাইলের বিপদ এবং একটি গুরুত্বপূর্ণ ফোল্ডারে টাইপ করে * এবং ধাক্কা দেওয়ার সমস্যাটি বুঝতে পারি, আমি তা করার পরিকল্পনা করি না)
আর্গুমেন্ট কমান্ডের হাতে দেওয়ার আগে শেলটি বেশ কয়েকটি বিস্তৃতি সম্পাদন করে ।
Https://www.gnu.org/software/bash/manual/bashref.html# সরল- কম্যান্ড- এক্সপেনশনও দেখুন
ব্যাশ-নির্দিষ্ট নয়, দেখুন http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_01