"সিডি -" এবং "সিডি -" এর মধ্যে পার্থক্য


56

বাশ কমান্ড

cd - 

পূর্বে ব্যবহৃত ডিরেক্টরি মুদ্রণ করে এবং এতে পরিবর্তন করে।

অন্যদিকে, বাশ কমান্ড

cd ~-

কোনও কিছু প্রতিধ্বনিত না করে সরাসরি পূর্বে ব্যবহৃত ডিরেক্টরিতে পরিবর্তিত হয়।

এটাই কি একমাত্র পার্থক্য? কমান্ডের প্রতিটি ব্যবহার ক্ষেত্রে কি?


3
আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি এই কৌশলযুক্ত কোনও জিনিস ব্যবহার করবেন না। এটি আপনার মস্তিষ্ক চালু আছে cd ~-
হতাশডানিয়েল

10
@ ডিপ্রেসডডানিয়েল, এমনকি যদি আপনি কৃপণ স্টাফ ব্যবহার না করার পরিকল্পনা করেন (তবে) পর্দার আড়ালে কী ঘটছে তা বোঝা এখনও কার্যকর - কোণার কেসগুলি বোঝার পরে কোনও আলাদা ডিবাগ করার চেষ্টা করার পরে আপনি কোনও গর্ত থেকে বেরিয়ে আসতে পারেন।
ডেভ

উত্তর:


81

এখানে দুটি জিনিস খেলছে। প্রথমত, -একা আপনার পূর্ববর্তী ডিরেক্টরিতে প্রসারিত হয়। এটি (জোর খনির) cdঅংশে ব্যাখ্যা করা হয়েছে man bash:

-ডিরেক্টরি পরিবর্তনের চেষ্টা করার আগে একটি আর্গুমেন্টকে DP OLDPWD এ রূপান্তর করা হয়। সিডিপিএটিএইচএইচএইচ থেকে কোনও খালি খালি ডিরেক্টরি নাম ব্যবহার করা হয়, বা যদি -প্রথম যুক্তি হয় এবং ডিরেক্টরি পরিবর্তন সফল হয় তবে নতুন কার্যকারী ডিরেক্টরিটির পরম পাথনামটি স্ট্যান্ডার্ড আউটপুটটিতে লেখা হয়। ডিরেক্টরিটি সফলভাবে পরিবর্তিত হলে রিটার্ন মানটি সত্য; অন্যথায় মিথ্যা।

সুতরাং, একটি সাধারণ cd -আপনাকে আপনার পূর্ববর্তী ডিরেক্টরিতে ফিরিয়ে নিয়ে যায় এবং ডিরেক্টরিটির নাম মুদ্রণ করে। অন্যান্য কমান্ডটি "টিলডে সম্প্রসারণ" বিভাগে নথিভুক্ত করা হয়েছে:

টিল্ড-উপসর্গটি যদি একটি ~+হয় তবে শেল ভেরিয়েবল পিডাব্লুডির মান টিল্ড-উপসর্গটি প্রতিস্থাপন করে। টিল্ড-উপসর্গটি যদি একটি হয় ~-, শেল ভেরিয়েবল ওলডিপিডাব্লুডি এর মান সেট করা থাকে তবে এটি প্রতিস্থাপিত হয়। টিলড-উপসর্গের টিলডের পরবর্তী অক্ষরগুলি যদি একটি N নম্বর নিয়ে গঠিত হয়, aচ্ছিকভাবে একটি +বা a দ্বারা -উপসর্গ করা থাকে, তবে টিল্ড-উপসর্গটি ডিরেক্টরি স্ট্যাক থেকে সংশ্লিষ্ট উপাদানটির সাথে প্রতিস্থাপন করা হবে, কারণ এটি ডায়ার বিল্টইন দ্বারা প্রদর্শিত হবে আর্গুমেন্ট হিসাবে টিলডে উপসর্গ। তাহলে টিল্ড-prefix মধ্যে টিল্ড নিম্নলিখিত অক্ষরগুলি একটি নেতৃস্থানীয় ছাড়া একটি সংখ্যা দ্বারা গঠিত +অথবা -, +অধিকৃত হয়।

এটি উদাহরণ সহ বোঝা সহজ হতে পারে:

$ pwd
/home/terdon
$ cd ~/foo
$ pwd
/home/terdon/foo
$ cd /etc
$ pwd
/etc
$ echo ~        ## prints $HOME
/home/terdon
$ echo ~+       ## prints $PWD
/etc
$ echo ~-       ## prints $OLDPWD
/home/terdon/foo

সুতরাং, সাধারণভাবে, এর -অর্থ "পূর্ববর্তী ডিরেক্টরি"। সে কারণেই cd -নিজেই আপনাকে যেখানেই ছিল সেখানে ফিরিয়ে আনবে।

মূল পার্থক্যটি হ'ল বিল্টিনের সাথে cd -নির্দিষ্ট cd। আপনি যদি echo -এটি চেষ্টা করেন তবে এটি একটি মুদ্রণ করবে -~-টিল্ড সম্প্রসারণ কার্যকারিতা অংশ এবং একটি পরিবর্তনশীল একইভাবে আচরণ করে। এজন্য আপনি echo ~-কিছু অর্থবহ পেতে পারেন । আপনি এটিতে এটি ব্যবহার করতে পারেন cd ~-তবে আপনি এটি অন্য কোনও কমান্ডে ব্যবহার করতে পারেন। উদাহরণস্বরূপ cp ~-/* .যা সমান হবেcp "$OLDPWD"/* .


1
set -xকার্যকর করার আগে প্রসারিত কমান্ড মুদ্রণ করতে পার্থক্যটি চিত্রিত করার জন্য কার্যকর হতে পারে (বা আপনি যখন একবারে এক পদক্ষেপ নিজেই করছেন না তখন কেবল অপঠিত গোলমাল হতে পারেন)।
পিটার কর্ডেস

1
@terdon আজ আমি শিখেছি।
sitilge

সংক্ষেপে ... cd ~-/..কাজ, cd -/..না!
রে ফস 14

13

~-টিলডে সম্প্রসারণ সাপেক্ষে (ম্যান বাশ দেখুন), তাই যা cdদেখায় তা পূর্ববর্তী ডিরেক্টরি নামটি সরাসরি। -শেল দ্বারা প্রসারিত হয় না, cdএটি সরাসরি দেখায় এবং নথি হিসাবে আচরণ করে:

এর একটি আর্গুমেন্ট $ OLDPWD এর সমতুল্য। সিডিপিএটিএইচএইচএইচটিএচ থেকে একটি খালি খালি ডিরেক্টরি ব্যবহার করা হয়, বা যদি - প্রথম যুক্তি হয়, এবং ডিরেক্টরি পরিবর্তন সফল হয় তবে নতুন কার্যকারী ডিরেক্টরিটির পরম পাথনামটি স্ট্যান্ডার্ড আউটপুটটিতে লেখা হয়।


4

টিএল; ডিআর: এতে cd -অন্তর্নির্মিত হয় cd, ~-এটি পরে ~[name]নির্দিষ্ট হয়, এটি নির্দিষ্ট নয় cd

POSIX.1-2-2008 শেল এবং ইউটিলিটিসcd - একটি বিশেষ কেস হিসাবে সংজ্ঞা দেয় যা কমান্ডের জন্য নির্দিষ্ট :cd

যখন একটি -অপারেন্ড হিসাবে ব্যবহৃত হয়, এটি আদেশের সমতুল্য হবে:

cd "$OLDPWD" && pwd

যা পূর্ববর্তী কার্যনির্বাহী ডিরেক্টরিতে পরিবর্তিত হয় এবং এরপরে তার নামটি লেখায়।

কোনও কমান্ড কার্যকর হওয়ার আগে এই ~-এক্সটেনশানটি প্রসারিত হবে $OLDPWDএবং যে কোনও কমান্ডের আর্গুমেন্ট হিসাবে পাস করা যেতে পারে, কেবল তা নয় cd। এটা পরবর্তী এক্সটেনশান এবং

পূর্বোক্ত POSIX.1-2-2008 শেল এবং ইউটিলিটিস স্ট্যান্ডার্ডে টিলডে সম্প্রসারণের বিস্তৃত ব্যাখ্যা রয়েছে~-স্ট্যান্ডার্ডের ক্ষেত্রের মধ্যে অপরিজ্ঞাত আচরণ হিসাবে অনুমতি দেওয়ার জন্য শব্দটি খুব নির্দিষ্ট , যেখানে খালি স্ট্রিং কিনা তা ~[name]বোঝায় বা ব্যবহারকারীর হোম ডিরেক্টরি যদি কোনও বৈধ ব্যবহারকারীর নাম হয়।$HOME[name]namename

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