BASH এ কি ./


3

আমি চারদিকে শেল খেলছিলাম এবং টাইপ করছিলাম। /। আমি নিম্নলিখিত আউটপুট যেতে:

bash: ./: Is a directory

দেখে মনে হচ্ছে "./" প্রদত্ত নামের একটি ডিরেক্টরি উপস্থিত থাকলে তা পরীক্ষা করে। আমার বোঝাপড়াটি ঠিক আছে কিনা তা দেখার জন্য আমি এটিতে ডকুমেন্টেশন সন্ধান করার চেষ্টা করছিলাম, তবে অনলাইনে কিছুই খুঁজে পাচ্ছি না। কেউ কি আমাকে এই ব্যাখ্যা করতে পারেন?


নাঃ। বর্তমান ডিরেক্টরী ./হিসাবে একই ., এবং শুধুমাত্র লিনাক্স বা কেবল বাশ শেলের মধ্যে নয়।
হেনেস

ভাল, আমি একটি বোকা মত মনে হয়। যদিও উত্তরগুলির জন্য ধন্যবাদ।
অ্যান্ডি জে

উত্তর:


8

এর জন্য একটি সাধারণ সংজ্ঞা সম্ভবত ব্যাশ ম্যানুয়ালটিতে পাওয়া যাবে না তবে পসেক্স স্পেসিফিকেশন (বিভাগের নামের নাম রেজোলিউশন):

বিশেষ ফাইলনাম ডটটি তার পূর্বসূরীর দ্বারা নির্দিষ্ট ডিরেক্টরিকে উল্লেখ করবে।

আচ্ছা, আমাদের যদি কেবল পূর্বসূরি থাকে তবে .কী? আমি গুরুত্বপূর্ণ অংশটি জোর দিয়েছি:

যদি পাথের নামটি স্ল্যাশ দিয়ে শুরু না হয় তবে পাথনামের প্রথম ফাইলনামটির পূর্বসূরীর প্রক্রিয়াটির বর্তমান কার্যনির্বাহী ডিরেক্টরি হিসাবে নেওয়া হবে

এছাড়াও,

কমপক্ষে একটি নন-স্ল্যাশ অক্ষর থাকা এবং এক বা একাধিক ট্রেলিং স্ল্যাশ সহ শেষ হওয়া কোনও পাথের নামটি এমনভাবে সমাধান করা হবে যেন কোনও একক বিন্দু অক্ষর ('।') পথের সাথে সংযুক্ত করা হয়েছে were

সুতরাং, আপনি টাইপ করার সময় ./এটি সমাধান করা হয় ./., যা মূলত আপনার বর্তমান ওয়ার্কিং ডিরেক্টরিকে নির্দেশ করে। আপনি যখন নিজের শেলটিতে কিছু টাইপ করেন এবং আঘাত করেন Enterতখন শেলটি প্রথম অংশটি কমান্ড হিসাবে চালানোর চেষ্টা করবে। (মূলত প্রথম সাদা অংশ পর্যন্ত অক্ষরের প্রথম গুচ্ছটি))

কোনও কমান্ড বা এক্সিকিউটেবল ফাইল বলা হয় নি ./., সুতরাং এটি ব্যর্থ হবে এবং আপনাকে বলবে যে ./"ডিরেক্টরি"। মজার ব্যাপার হচ্ছে, . হয় কমান্ড (এটি একটি builtin নামেও পাওয়া যায় source), সুতরাং যখন আপনি শুধু টাইপ .আপনি পাবেন: bash: .: filename argument required


যাইহোক, যদি একটি ডিরেক্টরি উপস্থিত রয়েছে চেক করতে সঠিক উপায়test -d /path/to/dir
slhck

3

অন্যরা ./যেমন লিখেছেন, বর্তমান ডিরেক্টরিটির নাম। আপনি যখন ./বাশ প্রম্পটে টাইপ করে এন্টার চাপলেন তখন আপনি কমান্ড হিসাবে বর্তমান ডিরেক্টরিটি চালানোর চেষ্টা করেছিলেন যা অবশ্যই ব্যর্থ হয়েছিল, এবং বাশ আপনাকে বার্তা দিয়েছে (প্যারাফ্রেসড), "আমি এটি করতে পারি না। ./একটি ডিরেক্টরি এবং আমি কমান্ড হিসাবে ডিরেক্টরি চালানো যায় না। "


2

.বর্তমান ডিরেক্টরী বোঝা। আপনি ./বর্তমান ডিরেক্টরিতে কোনও ফাইলের উপসর্গ হিসাবে ব্যবহার করেন।

একইভাবে, ..পূর্ববর্তী (উচ্চতর) ডিরেক্টরিটি বোঝায়। উচ্চতর স্তরের ডিরেক্টরিতে যাওয়ার সময় এটি প্রায়শই ব্যবহৃত হয়, যেমনcd ../../../

বিষয়বস্তু সহ একটি ফাইল সিস্টেম দেওয়া:

# Comments start with a hash and aren't parsed
/                    # root directory
/foo/                # first level directory
/foo/bar/            # second level directory
/foo/bar/baz         # third level directory
/foo/bar/baz/qux     # a file in the third level directory

আপনি যদি তৃতীয় স্তরের পরিচালক (বাজ) এ থাকেন এবং আপনি চালনা করেন তবে lsআপনি দেখতে পাবেন qux। আপনি যদি চালান ls ., আপনি একই আউটপুট পাবেন, সেই সাথে আপনি যদি চালান ls ./

আপনি যদি তৃতীয় স্তরের পরিচালক (বাজ) এ থাকেন এবং আপনি চালনা করেন ls ..এবং ls ../উভয়ই আপনাকে দেন baz। এটি হ'ল ডিরেক্টরিগুলির বিষয়বস্তু এক স্তর উচ্চতর।


1
ভুল - বর্তমান ডিরেক্টরি কখনও PATH এ নেই। অন্যথায় এটি একটি বিশাল সুরক্ষা সমস্যা হয়ে উঠবে।
slhck

আমার খারাপ, আপনি ঠিক বলেছেন। তাহলে এতদিন পর ডিরেক্টরির ভূমিকা করতে হবে না cd সঙ্গে ./?
জিমহান

1
PATH কেবল এক্সিকিউটেবলের জন্য প্রযোজ্য। আপনি যখন টাইপ করবেন foo, শেলটি fooআপনার PATH তে ডাকা একটি এক্সিকিউটেবল সন্ধান করার চেষ্টা করবে এবং এটি fooএটি খুঁজে পাওয়া প্রথমটি চালাবে । যদি আপনি প্রবেশ করেন cd bar, barকেবলমাত্র একটি বিকল্পটি পাস হয়েছে cd, যা সম্ভাব্য ডিরেক্টরিগুলির ডিরেক্টরিতে ডিফল্টরূপে বর্তমান ডিরেক্টরিতে প্রদর্শিত cdহবে।
slhck

1

লিনাক্সে। / এর অর্থ বর্তমান ডিরেক্টরি (এবং ../ পিতামাতাকে নির্দেশ করে)।

আপনি যদি একটি ls -a করেন তবে আপনি দেখতে পাবেন। এবং .. ডিরেক্টরি হিসাবে তালিকাভুক্ত (আপনার -a প্রয়োজন কারণ একটি লুকানো ডিরেক্টরি উপস্থাপন করে)

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