`-` কেবল সিডি দিয়ে ব্যবহৃত হয়?


45

cd - বর্তমান dir এবং পূর্ববর্তী dir মধ্যে স্যুইচ করতে পারেন।

দেখে মনে হচ্ছে যে আমি -অন্যান্য কমান্ডের আগে যুক্তি হিসাবে ব্যবহার করে দেখেছি , যদিও এর -সাথে একই অর্থ আছে কিনা তা আমার মনে নেই cd

আমি খুঁজে পেয়েছি যে -কাজ করে না ls

হয় - শুধুমাত্র সিডি সঙ্গে ব্যবহার?


8
মনে রাখার মতো কিছু হ'ল এটি cdএকটি অন্তর্নির্মিত, বাহ্যিক আদেশ নয় (এটির মতো কাজ করার কোনও উপায়ও থাকবে না)। cd -এইভাবে একটি শেল-স্তরের বৈশিষ্ট্য।
ফ্লফি

6
আমি সব সময় ব্যবহার git checkout -পূর্ববর্তী শাখা স্যুইচ করতে
Wim

@ ফ্লুফি: -অন্য বিল্টিনগুলির সাথে একইভাবে ব্যবহৃত হয়?
টিম

কিছু ডিরেক্টরি হ্যান্ডলিং বিল্টইনগুলির জন্য যেমন pushdহ্যাঁ। অন্যথায়, "পূর্ববর্তী ডিরেক্টরি" এর অর্থ কোনও ভয়ঙ্করভাবে কার্যকর ডিফল্ট নয়।
ফুঁয়োফুঁয়ো

1
সম্ভবত আপনি বাশের '~ -' বৈশিষ্ট্যটির কথা ভাবছেন (যা $ OLDPWD হিসাবে ব্যাখ্যা করা হয়)। এটি আপনার বর্ণনার পদ্ধতিতে 'এলএস' দিয়ে ব্যবহার করা যেতে পারে।
অ্যাবনেট

উত্তর:


22

POSIX ইউটিলিটি সিনট্যাক্স নির্দেশিকা (বিশেষভাবে # 13) ইউটিলিটি যে আশা একটি ফাইলের নাম থেকে পড়ার জন্য নির্দিষ্ট করে -উপায়ে মান ইনপুট, এবং ইউটিলিটি যে লিখতে একটি ফাইলের নাম প্রত্যাশায় আছি -মানে মান আউটপুট। উদাহরণস্বরূপ, cat somefile -এর সামগ্রীটিকে somefileএর স্ট্যান্ডার্ড আউটপুটে অনুলিপি করে তার স্ট্যান্ডার্ড ইনপুটটিতে যা পড়ে তা অনুসরণ করে।

এই নির্দেশিকাটি cdকমান্ডের জন্য প্রযোজ্য নয় কারণ এটি কোনও ফাইল পড়তে বা লিখেনি। cdকিছু আলাদা করে: যুক্তির -অর্থ "পূর্ববর্তী ডিরেক্টরি"। কমান্ড cd -সমান cd "$OLDPWD" && pwd। এই আচরণটি cdকমান্ডের সাথে সুনির্দিষ্ট এবং যেমন সরাসরি অনুপ্রাণিত কমান্ডগুলির ক্ষেত্রে pushd

নোট এটি -অপারেন্ড, কোনও বিকল্প নয়। কেবলমাত্র যুক্তিগুলি যা শুরু হয় -এবং কেবল -বা --বিকল্প নয়। অপারেন্ড হওয়ার মূল ইঙ্গিতটি এটি --এর বিশেষ অর্থকে প্রভাবিত করে না। উদাহরণস্বরূপ, cd -- -Pএকটি উপ-ডিরেক্টরিকে পরিবর্তিত বলা হয় -P, কিন্তু cd -- -এটি একই cd -, এটি ডাকা ডিরেক্টরিতে পরিবর্তিত হয় না -। একইভাবে, কল করা cat -- -কোনও ফাইল থেকে পড়া হয় না -তবে স্ট্যান্ডার্ড ইনপুট থেকে।


46

-POSIX ইউটিলিটি সিনট্যাক্স নির্দেশিকাগুলিকে স্ট্যান্ডার্ড ইনপুট হিসাবে সংজ্ঞায়িত করা হয়েছে :

Guideline 13:
For utilities that use operands to represent files to be opened for either 
reading or writing, the '-' operand should be used to mean only standard input 
(or standard output when it is clear from context that an output file is being 
specified) or a file named -.

আপনি এই সংজ্ঞাটি ইউটিলিটির জন্য দেখতে পাচ্ছেন যা পড়তে বা লেখার জন্য ফাইলগুলি পরিচালনা করে। cdএই ইউটিলিটিগুলির সাথে সম্পর্কিত নয়, তাই -সিডিতে এই নির্দেশিকাটি অনুসরণ করে না।

এছাড়াও পসিক্সের সিডি- সহ নিজস্ব অর্থ রয়েছে :

-
    When a <hyphen> is used as the operand, this shall be equivalent to the 
    command:

    cd "$OLDPWD" && pwd

    which changes to the previous working directory and then writes its name.

36

cd -আসলে শর্টহ্যান্ডের জন্য cd "$OLDPWD" && pwd, যেখানে $OLDPWDপ্রতিবার আপনি ঠিক যে ডিরেক্টরিতে ছিলেন সেই ডিরেক্টরিতে ডিরেক্টরিগুলি পরিবর্তন করা হয়।

হ্যান্ডলিং -অ্যাপ্লিকেশন উপর নির্ভর করে। কিছু অ্যাপ্লিকেশনগুলি -বোঝাতে ব্যবহার করে STDIN, যেমন grep,awk

অন্যান্য অ্যাপ্লিকেশনের ব্যবহার করতে পারেন -, কিছু জন্য একটি সাঁটে লেখার তারা চয়ন করে, মাইকেলের উত্তর নির্দিষ্ট করে যত সঙ্গে su, -জন্য সাধারণভাবে সংক্ষেপে হয়--login


হ্যাঁ, এর জন্য কোনও নিয়ম নেই।
কিউই

2
@ কিউই: পসিক্সের সাথে তার নিয়ম রয়েছে, আমার উত্তর দেখুন see
cuonglm

সুনির্দিষ্টভাবে বলতে গেলে, এখানে একটি সাধারণ নিয়ম রয়েছে তবে এর অনেক ব্যতিক্রম রয়েছে। এছাড়াও প্রচুর কমান্ড রয়েছে যা বিধি পূর্বাভাস দেয় বা পুরানো বাস্তবায়ন যা নিয়ম মেনে চলার জন্য আপডেট করা হয়নি।
বার্মার

19

যদিও মাইকেল উল্লেখ করেছে suএবং অন্যান্য অ্যাপ্লিকেশনগুলি -তারা যা চায় তা বোঝাতে ব্যবহার করতে পারে (স্ট্ডিনের কাছ থেকে পড়া সাধারণ) তবে গিত-cd শাখাগুলি পরিবর্তনের জন্য কীভাবে তার মতো ফ্যাশনে ব্যবহার করে

$ git status
On branch master

$ git checkout foobar
$ git status
On branch foobar

$ git checkout -
$ git status
On branch master

18

কোনও প্রোগ্রাম -আর্গুমেন্ট হিসাবে ব্যবহার করতে পারে , যার অর্থ তারা চাইবে। একটি সাধারণ উদাহরণ su, যা -শর্টহ্যান্ড হিসাবে ব্যবহার করে --login। কেবলমাত্র আমি যে কনভেনশনটি ভাবতে পারি তা হ'ল যে প্রোগ্রামগুলি ফাইলগুলি থেকে প্রায়শই পড়েন তার- অর্থ "স্টাডিনের কাছ থেকে পঠন" অর্থ ব্যবহৃত হয় তবে এটি সম্পূর্ণরূপে প্রোগ্রামের উপর নির্ভর করে


যুক্তি হিসাবে বিশেষ চিহ্ন ব্যবহার করার জন্য কি মানসম্পন্ন বা মানহীন কনভেনশন রয়েছে?
টিম

2

এখানে আমার দুটি সেন্ট যুক্ত করা হচ্ছে। বেশিরভাগ লোক আগে যেমন পরামর্শ দিয়েছিল আমি স্ট্যান্ডার্ড ইনপুট থেকে পড়তে PS2pdf সরঞ্জামটি বলতে '-' ব্যবহার করি:

man -t ls | ps2pdf - ls.pdf

উপরের ওয়ান-লাইনার বর্তমান ডিরেক্টরিতে ls এর জন্য ম্যান পৃষ্ঠাটির একটি পিডিএফ সংস্করণ তৈরি করে ।
আশা করি কেউ এটি দরকারী বলে মনে করেন :)।


2

Gnouc দ্বারা উত্তর হিসাবে , -এর নিজস্ব অর্থ রয়েছে cd

তবে আপনি -অন্যান্য প্রোগ্রাম ব্যবহার করে এর ব্যবহারের প্রতিরূপ তৈরি করতে পারেন ~-। উদাহরণ স্বরূপ:

cd /etc
cd /
ls ~-             #lists the contents of the /etc directory
vim ~-/fstab      #opens the file /etc/fstab in vim
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.