আমি ফাইল পাথের মধ্যে \
এবং পার্থক্য সম্পর্কে ভাবছিলাম /
। আমি লক্ষ করেছি যে কখনও কখনও কোনও পথ থাকে /
এবং কখনও কখনও এটি থাকে \
।
এটি কখন ব্যবহার করা যায় \
এবং কী তা ব্যাখ্যা করতে পারলে দুর্দান্ত হবে /
।
আমি ফাইল পাথের মধ্যে \
এবং পার্থক্য সম্পর্কে ভাবছিলাম /
। আমি লক্ষ করেছি যে কখনও কখনও কোনও পথ থাকে /
এবং কখনও কখনও এটি থাকে \
।
এটি কখন ব্যবহার করা যায় \
এবং কী তা ব্যাখ্যা করতে পারলে দুর্দান্ত হবে /
।
উত্তর:
/
ইউনিক্স এবং ইউনিক্সের মতো সিস্টেমে পাথ বিভাজক। আধুনিক উইন্ডোজ সাধারণত ফাইলপথগুলির জন্য \
এবং /
বিনিময়যোগ্য উভয়ই ব্যবহার করতে পারে তবে \
কয়েক দশক ধরে মাইক্রোসফ্ট পাথ বিভাজক হিসাবে ব্যবহার করার পক্ষে পরামর্শ দিয়েছে ।
এটি এক দশকেরও বেশি সময় ধরে উইন্ডোজকে ভবিষ্যদ্বাণী করে historicalতিহাসিক কারণে 1970তিহাসিক কারণেই করা হয়েছিল 1970 শুরুতে, এমএস-ডস (প্রাথমিক উইন্ডোজের ভিত্তি) ডিরেক্টরিগুলি সমর্থন করে না support /
প্রথম থেকেই অক্ষরটি ব্যবহার করে ইউনিক্সের ডিরেক্টরি সমর্থন ছিল । যাইহোক, যখন এমএস-ডস ২.০-তে ডিরেক্টরি যুক্ত করা হয়েছিল, মাইক্রোসফ্ট এবং আইবিএম ইতিমধ্যে কমান্ড স্যুইচগুলির/
জন্য অক্ষরটি ব্যবহার করছিল এবং ডসের লাইটওয়েট পার্সার ( কিউডিওএস থেকে নেমে এসেছিল , নিম্ন প্রান্তের হার্ডওয়্যারটিতে চালিত করার জন্য ডিজাইন করা হয়েছিল), তারা খুঁজে পেল না a তাদের বিদ্যমান অ্যাপ্লিকেশনগুলির সাথে সামঞ্জস্যতা ভঙ্গ না করে চরিত্রটি ব্যবহার করার সম্ভাব্য উপায় ।/
সুতরাং, ফাইলপ্যাথগুলি এইরকম আদেশের আর্গুমেন্ট হিসাবে পাস করার সময় "একটি স্যুইচ অনুপস্থিত" বা "অবৈধ স্যুইচ" সম্পর্কে ত্রুটিগুলি এড়াতে:
cd/ <---- no switch specified
dir folder1/folder2 <---- /folder2 is not a switch for dir
\
পরিবর্তে এই চরিত্রটি ব্যবহার করা হবে বলে সিদ্ধান্ত নেওয়া হয়েছিল , সুতরাং আপনি এই আদেশগুলি এভাবে লিখতে পারেন
cd\
dir folder1\folder2
নির্ভুল.
পরে, মাইক্রোসফ্ট এবং আইবিএম ওএস / ২ নামক ডস-এর সাথে সম্পর্কযুক্ত একটি অপারেটিং সিস্টেমের সাথে সহযোগিতা করেছিল । ওএস / ২-এ উভয় বিভাজক ব্যবহার করার ক্ষমতা ছিল, সম্ভবত আরও ইউনিক্স বিকাশকারীকে আকর্ষণ করার জন্য। ১৯৯০ সালে মাইক্রোসফ্ট এবং আইবিএম আলাদা হয়ে গেলে , মাইক্রোসফ্ট কী কোড নিয়েছিল এবং উইন্ডোজ এনটি তৈরি করেছিল, যার ভিত্তিতে উইন্ডোজের সমস্ত আধুনিক সংস্করণ ভিত্তিক রয়েছে এবং এই বিভাজক অজ্ঞেয়বাদকে সাথে রাখে।
যেহেতু তারা যে বড় বড় ওএস ট্রানজিশনগুলি গ্রহণ করেছে (ডস থেকে উইন 16 / ডস, উইন 16 / উইন 32, উইন 32 / উইএনএনটি) থেকে মাইক্রোসফ্টের জন্য গেমটির নাম পশ্চাদগম সামঞ্জস্যতা, তাই এই অদ্ভুততা আটকে গেছে এবং সম্ভবত এটি হবে কিছুক্ষণের জন্য উপস্থিত।
এই কারণে এই বৈষম্য বিদ্যমান। আপনি যা করছেন তার সত্যিকারের কোনও প্রভাব নেই কারণ যেমন আমি বলেছিলাম, উইনাপি এগুলি সাধারণত আন্তঃবিন্যভাবে ব্যবহার করতে পারে। যাইহোক, তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি সম্ভবত ব্রেক হয়ে যাবে যদি আপনি /
যখন তারা \
নামের নামের মধ্যে একটি আশা করে তখন পাস করেন । আপনি যদি উইন্ডোজ ব্যবহার করেন তবে আটকে দিন \
। যদি আপনি ইউনিক্স বা ইউআরআই ব্যবহার করে থাকেন (যার ইউনিক্স পাথগুলিতে তাদের ভিত্তি রয়েছে তবে এটি সম্পূর্ণরূপে অন্য গল্প) তবে ব্যবহার করুন /
।
সি # এর প্রসঙ্গে: এটি লক্ষ করা উচিত, যেহেতু এটি প্রযুক্তিগতভাবে একটি সি # প্রশ্ন, আপনি যদি আরও "পোর্টেবল" সি # কোড লিখতে চান যা ইউনিক্স এবং উইন্ডোজ উভয় ক্ষেত্রেই কাজ করে (যদিও সি # মূলত উইন্ডোজ ভাষা হয়), আপনি Path.DirectorySeparatorChar
আপনার ক্ষেত্রটি সেই সিস্টেমে পছন্দের বিভাজকটি ব্যবহার Path.Combine()
করে এবং সঠিকভাবে পথ সংযোজন করার জন্য ক্ষেত্রটি ব্যবহার করতে চাইতে পারে ।
Path.Combine
।
foo.exe /bar
কমান্ড-লাইন সুইচ foo.exe \bar
হিসাবে ব্যাখ্যা করা যেতে পারে , এবং বর্তমান "ড্রাইভ" এর bar
মূল ডিরেক্টরিতে অবস্থিত এমন একটি ফাইল / ফোল্ডার হিসাবে উল্লেখ করা যেতে পারে যেমন উদাহরণস্বরূপ। \
C:\
/
কাছে \
স্তর compat Win32 মধ্যে সম্পন্ন করা হয়, যার মানে হল আপনি এটা পাশকাটিয়ে, একটি পার্থক্য থাকবে না। এর সর্বাধিক পরিচিত উদাহরণ বর্ধিত দৈর্ঘ্যের পথগুলি: \\?\C:\
এনটিএফএসে প্রত্যাশার মতো কাজ \\?\C:/
করবে তবে তা করবে না।
/
এবং ` is not entirely true. For network path you have to use
`(যেমন \\ <servername> বট // <servername> না।)
এমএস-ডস 1.0 সিপি / এম থেকে '/' এর কমান্ড লাইন বিকল্প (বা স্যুইচ) অক্ষর সংরক্ষণ করে। সেই সময় ফাইল সিস্টেমে কোনও ডিরেক্টরি কাঠামো ছিল না এবং কোনও বিরোধ নেই।
মাইক্রোসফ্ট যখন এমএস-ডস (এবং পিসি-ডস) ২.০ এর সাথে আরও ইউনিক্সের মতো পরিবেশের বিকাশ করেছিল, তখন তাদেরকে এমন কিছু ব্যবহার করে পাথ বিভাজকের প্রতিনিধিত্ব করতে হবে যা বিদ্যমান কমান্ড লাইনের বিকল্পগুলির সাথে বিরোধী নয়। অভ্যন্তরীণভাবে, সিস্টেম '/' বা '\' এর সাথে সমানভাবে কাজ করে। কমান্ড প্রসেসর (এবং অনেক অ্যাপ্লিকেশন) '/' একটি স্যুইচ অক্ষর হিসাবে ব্যবহার করতে থাকে।
ইউনিক্স সামঞ্জস্যতা উন্নত করতে ডিফল্টকে ওভাররাইড করতে একটি CONFIG.SYS
এন্ট্রি SWITCHAR=-
ব্যবহার করা যেতে পারে /
। এটি কমান্ডগুলিতে অন্তর্নির্মিত হয় এবং মানক ইউটিলিটিগুলি বিকল্প চরিত্রটি ব্যবহার করে। ইউনিক্স পাথ বিভাজকটি ফাইল এবং ডিরেক্টরি নামের জন্য নির্বিঘ্নে ব্যবহৃত হতে পারে। এই সংস্করণটি পরবর্তী সংস্করণগুলিতে সরানো হয়েছে, তবে বুট করার পরে মান নির্ধারণের জন্য একটি ডস কল নথিভুক্ত করা হয়েছিল।
এটি সামান্য ব্যবহৃত হয়েছিল এবং বেশিরভাগ তৃতীয় পক্ষের সরঞ্জামগুলি অপরিবর্তিত ছিল। বিভ্রান্তি থেকে যায়। ইউনিক্স সরঞ্জামের অনেকগুলি বন্দর '-' স্যুইচ অক্ষর ধরে রাখে আবার কিছু উভয় কনভেনশনকে সমর্থন করে।
ফলো অন পাওয়ারশেল কমান্ড প্রসেসর কঠোর অব্যাহতি এবং স্যুইচ প্যারামিটার প্রয়োগ করে এবং লিগ্যাসি সরঞ্জামগুলি ব্যবহৃত হয় ব্যতীত মূলত বিভ্রান্তি এড়িয়ে চলে।
প্রশ্ন বা উত্তর দুটিই সি # এর সাথে সম্পর্কিত নয়।
/
হিসাবে, বিভিন্ন পিডিপি -11 অপারেটিং সিস্টেম যেমন আরএসটিএস (1970) এবং আরএসএক্স (1972) এর বিকল্প সংজ্ঞা হিসাবে এর ব্যবহার সিপি / এম (1973) এর পূর্বে রয়েছে।
ইউনিক্স-ভিত্তিক সিস্টেমে \
একটি পলায়ন চরিত্র, অর্থাৎ \
পার্সারকে বলে যে এটি একটি স্থান এবং বিবৃতিটির শেষ নয়। ইউনিক্স সিস্টেমে /
ডিরেক্টরি বিভাজক রয়েছে।
উইন্ডোজে \
ডিরেক্টরি বিভাজক হয়, তবে /
ফাইল বা ডিরেক্টরিগুলির নামে ব্যবহার করা যায় না।
\
এবং /
(পাশাপাশি আরও কয়েকটি প্রতীক) ফাইলের নামগুলিতে ব্যবহার করা যাবে না কারণ ডক্সের মতো জটিল পার্সার নেই যা ইউনিক্স ব্যবহারকারীরা এতটা অভ্যস্ত। এমএস-ডস কিউডিওএস ("কুইক অ্যান্ড ডার্টি অপারেটিং সিস্টেম") থেকে নেমে আসার ফলে একটি ভাল পার্সারের অভাব ছিল। এটি দ্রুত এবং সীমিত হার্ডওয়্যারগুলিতে চলমান জিনিসগুলি বোঝানো হয়েছিল। পশ্চিমা সামঞ্জস্যের জন্য এই সমস্ত অবশ্যই বিদ্যমান।
/
"
\
উইন্ডোজ ফাইলের পথে /
সঠিক এবং ইউআরআই-তে সঠিক।এটি প্রাসঙ্গিক সংস্থান হতে পারে।
\
করে /
। আমার বইতে এটিকে "নির্বিঘ্নে কাজ করে" বলা হয়।
প্রদত্ত উত্তরগুলি ছাড়াও, এটি উল্লেখ করার মতো যে প্রোগ্রামিং ভাষা, পাঠ্য সম্পাদক এবং সাধারণ সিস্টেমে যেগুলি লেক্সিকাল বিশ্লেষণ প্রয়োগ করে \
বিশেষ বর্ণগুলির (যেমন \n
\t
) ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয় ।
আপনি যদি উদাহরণস্বরূপ প্রোগ্রামিং করেন তবে এটির অসুবিধাগুলি \\
সঠিকভাবে ব্যবহার করার জন্য অন্য কোনও ( ) এর সাথে ব্যাকস্ল্যাশ এড়াতে হবে - অথবা সি # এর মতো পালানোর স্ট্রিং ব্যবহার করা দরকার @"\test"
।
অবশ্যই, পূর্বে উল্লিখিত হিসাবে, ওয়েব ইউআরআই মানক দ্বারা ফরোয়ার্ড স্ল্যাশ ব্যবহার করে তবে উভয় স্ল্যাশ সর্বশেষ এবং সর্বাধিক সাধারণ কমান্ড লাইন সরঞ্জামগুলিতে কাজ করে।
আপডেট: কিছুটা অনুসন্ধান করার পরে, এটি ডস এবং ইউনিক্স ভিত্তিক সিস্টেমগুলির যুগে, "কম্পিউটারের ইতিহাস" এর মধ্যে পুরো গল্পটি খুঁজে বের করে /
এবং \
ফিরে যায়। হাওটোকিকের এই গল্পটি সম্পর্কে একটি আকর্ষণীয় নিবন্ধ রয়েছে ।
সংক্ষেপে, ডস 1.0 প্রথম দিকে আইবিএম দ্বারা কোনও ডিরেক্টরি সমর্থন ছাড়াই মুক্তি /
পেয়েছিল এবং এটি অন্য ("স্যুইচিং") কমান্ড কার্যকারিতার জন্য ব্যবহৃত হয়েছিল। ডিরেক্টরিগুলি যখন 2.0 সংস্করণে প্রবর্তিত /
হয়েছিল, ইতিমধ্যে ব্যবহৃত ছিল, তাই আইবিএম দৃশ্যত নিকটতম প্রতীকটি বেছে নিয়েছিল, যা ছিল \
। অন্যদিকে, ইউনিক্স স্ট্যান্ডার্ডভাবে /
ডিরেক্টরিগুলির জন্য ব্যবহৃত হয় ।
ব্যবহারকারীরা যখন অনেকগুলি পৃথক সিস্টেম ব্যবহার শুরু করেন, তখন তারা বিভ্রান্ত হতে শুরু করে, ওএস বিকাশকারীকে উভয় ক্ষেত্রেই সিস্টেমগুলি কাজ করার চেষ্টা করে - এটি এমনকি ইউআরএল-এর অংশে প্রযোজ্য, কারণ কিছু ব্রাউজার http: \\ www.test সমর্থন করে । com \ গো ফর্ম্যাট। এটি সাধারণভাবে যদিও ত্রুটিগুলি ছিল, তবে পুরো বিষয়টি আজও পিছিয়ে পড়া তুলনামূলক কারণগুলির জন্য দাঁড়িয়ে আছে, উইন্ডোজে উভয় স্ল্যাশ সমর্থন করার চেষ্টা করে, যদিও তারা আর ডসের উপর নির্ভর করে না।
` as well as many
মেকিং শেল ব্যবহার করেন তখন ইউনিক্স বেশ রাগান্বিত হন ... আপনি ঠিক বলেছেন যে সাম্প্রতিক উইন্ডোজ ALTERNATE_PATH_SEPARATOR এনভায়রনমেন্ট ভেরিয়েবলকে সংজ্ঞায়িত করেছে /
যেহেতু উইন্ডোজ সম্ভবত উভয়ই গ্রহণ করতে পারে।
/
এটি সিস্টেমের যে কোনও জায়গায় সমর্থনমূলক পাথ অন্তর্ভুক্ত করে - অবশ্যই, অ্যাপ্লিকেশনগুলি তাদের অবসর সময়ে এই পাথগুলিকে ভুল বোঝাতে পারে, তাই এটি খুব বেশি ব্যবহৃত হয়নি। নন-সিএলআই অ্যাপ্লিকেশনগুলি যেগুলি নিজের (ভাঙা) পাথের বৈধতা যাচাই করতে চেষ্টা করে নি সেগুলি যেতে যেতে সূক্ষ্মভাবে কাজ করেছিল।
আপনি সি # তেও ব্যবহার করবেন না। আপনার সর্বদা Path
ক্লাস ব্যবহার করা উচিত । এটিতে এমন একটি পদ্ধতি রয়েছে Path.Combine
যা পৃথককে নির্দিষ্ট করে না দিয়ে পাথ তৈরি করতে ব্যবহার করা যেতে পারে।
ব্যবহারের উদাহরণ:
string fullPath = System.IO.Path.Combine("C:", "Folder1", "Folder2", "file.txt");
\
উইন্ডোজ লোকাল ফাইল পাথ এবং নেটওয়ার্ক পাথগুলির জন্য ব্যবহৃত হয়:
C:\Windows\Temp\
অথবা \\NetworkSharedDisk\Documents\Archive\
/
মানক ইউআরআই দ্বারা যা প্রয়োজন তা হ'ল:
/
পাথগুলিতে স্বীকৃতি দেয় (কমপক্ষে 7 টি করে)।
/
উত্তরে বলেছি যে স্ট্যান্ডার্ডড ইউআরআই ব্যবহারের চিত্রিত করতে স্ট্যাকওভারফ্লো পৃষ্ঠা বা কোনও ওয়েবসাইট হাইপারলিংকের সাথে লিঙ্ক করার ইচ্ছা ছিল ।