"-" নামক একটি ফাইল কীভাবে "কম" করবেন?


17

আমি দুর্ঘটনাক্রমে নামের সাথে একটি ফাইল তৈরি করেছি -(যেমন, seq 10 > -)। তারপরে আমি lessএটি দেখার জন্য ব্যবহার করার চেষ্টা করেছি, তবে এটি কেবল স্তব্ধ।

আমি বুঝতে পারি যে এটি ঘটছে কারণ less -ইনপুটটি আশা করে stdin, সুতরাং এটি কোনও -ফাইলের নাম হিসাবে ব্যাখ্যা করে না । আমি চেষ্টা করেছি less \-কিন্তু এটিও কাজ করে না।

সুতরাং, কোনও উপায় নেই lessযে -এটি একটি ফাইল এবং স্টিডিন নয়?

আমি যে সেরাটি পেতে পারি তা হ'ল:

find -name '-' -exec less {} +

2
@ মুরু মন্তব্যের জন্য ধন্যবাদ, তবে সম্ভাব্য নকলটি এতটাই সুনির্দিষ্ট যে আমি এটি "নির্ভুল নকল" হওয়ার যোগ্য বলে মনে করি না। যদি এটি আরও সাধারণ কিছু "যেমন" - "দিয়ে শুরু করে কোনও ফাইল অ্যাক্সেস করতে পারে তবে তার থেকেও সংজ্ঞায়িত হয়ে থাকে।
ফেডোরকি

4
এটি কোনও সদৃশ প্রশ্ন নয়। -একা ক্ষেত্রে কেস আলাদা। -একটি বিকল্প নয়।
স্টাফেন চেজেলাস

1
@ ইটারডন আমি মনে করি না যে একই উত্তর থাকার অর্থ তারা নকল। মেটা এসও-র কোথাও একটি উদাহরণ ছিল: যদি কোনও প্রশ্নের উত্তর "না" দিয়ে পাওয়া যায়, তবে যার সঠিক উত্তর "না" হ'ল কোনও নকল হবে? আমি আগেই বলেছি, নকলের প্রার্থীকে উচ্চারণ করা আকর্ষণীয় হবে যাতে এটি আরও জেনেরিক হয়; অন্যথায়, এটি এর মতো অন্য প্রশ্নগুলি পাঠাতে খুব বেশি অর্থ হয় না।
ফেডোরকুই

4
@terdon, না। সেখানে গৃহীত সমাধানটি এখানে কাজ করবে না। এবং না, -এটি একটি বিকল্প হিসাবে বিবেচনা করা হয় না, এটি বিকল্পগুলির মতো আকার তৈরি হওয়ার সাথে যুক্তিগুলির ক্ষেত্রে সম্পূর্ণ ভিন্ন সমস্যা different
স্টাফেন চেজেলাস

2
এটির -মতো একক উদ্ধৃতিগুলির মধ্যে আবদ্ধ হওয়া '-'বা এটি থেকে বেরিয়ে আসার দরকার নেই \-কারণ -সাধারণ শাঁসগুলির জন্য এটি কোনও বিশেষ চরিত্র নয় (কমপক্ষে পসিক্স অনুগত)। ফলাফল একই.
পাবউক

উত্তর:


53

কেবল এটির সাথে উপসর্গ করুন ./:

less ./-

বা পুনঃনির্দেশ ব্যবহার করুন:

less < -

নোট করুন যেহেতু -(হিসাবে বিরোধী)-x--foo-- উদাহরণস্বরূপ বা উদাহরণ ) কোনও বিকল্পের পরিবর্তে একটি বিশেষ ফাইলের নাম হিসাবে বিবেচনা করা হয়, তাই নিম্নলিখিতগুলি কাজ করে না:

less -- -   # THIS DOES NOT WORK

3
বিটিডাব্লু, এটাই find -name '-' -exec less {} +চলছে।
স্টাফেন চেজেলাস

6
@ ফেডরকিই, না এটি কেবল এটিই নয় -এবং ./-(বা /path/to/-বা ../to/-) দুটি (4) এই -ফাইলটির বৈধ পাথ , তবে একটি -যুক্তি বিশেষ নয় less(মানে স্টাডিনের কাছ থেকে পড়া) তবে ./-বিশেষ নয়।
স্টাফেন চেজেলাস

2
@ ফেডরকিই এর find -name '-' -exec less {} +জন্য অ-মানক ফর্ম find . -name '-' -exec less {} +। এটি গাছটি নীচে নেমে আসে .এবং ফাইলগুলি সন্ধান করে এবং তত্ক্ষণাত যুক্তি হিসাবে সেই ফাইলগুলির পাথ পাস করে less। প্রতিস্থাপন -exec lessসঙ্গে -exec echo lessকি চালানো হচ্ছে দেখতে।
স্টাফেন চেজেলাস

4
@ হাইলেম, --বিকল্পগুলির শেষ চিহ্নিত করা। এটি এখানে সাহায্য করবে না। এটি -কোনও বিকল্প নয়, এটি একটি বিশেষ অ-বিকল্প যুক্তি। এছাড়াও unix.stackexchange.com/a/56370 , unix.stackexchange.com/a/110756
স্টাফেন

3
@ হাইলেম, নিজের জন্য চেষ্টা করুন --বিকল্পগুলির শেষ চিহ্নিত করতে getopt () দ্বারা পরিচালিত হয়, getopt () -দ্বারা বিকল্প হিসাবে স্বীকৃত হয় না, যাতে এটি সরবরাহ করা হয় -কিনা তা একটি সাধারণ যুক্তি হিসাবে স্বীকৃত হবে --। এবং একটি সাধারণ যুক্তি হিসাবে, lessবেশিরভাগ পাঠ্য ইউটিলিটিগুলি এটি স্টিডিনকে অর্থ হিসাবে বিবেচনা করবে, যা আমরা এখানে চাই না।
স্টাফেন চেজেলাস

3

আমি ঠিক করব mv - f && less f। সমস্যা সমাধান.


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

যদি সাধারণ সমাধান উপস্থিত থাকে তবে +1 কেন জিনিসগুলিকে জটিল করুন।
এমএমএইচএম

3

দ্রষ্টব্য: আমার উত্তরটি ওপি-র ক্ষেত্রে বৈধ নয় , এবং কেবল নীচে উল্লিখিত কনভেনশন অনুসরণকারী সরঞ্জামগুলিতে প্রয়োগ হয় এবং ঠিক ঠিক -(ড্যাশ) নামের কোনও ফাইলের ক্ষেত্রে নয় , যা প্রায়শই স্ট্যান্ডার্ড থেকে পড়াটি নির্দিষ্ট করার জন্য একটি বিশেষ ক্ষেত্রেও রয়েছে ইনপুট প্রত্যাশিত গৃহীত উত্তর দেখুন।

এটিকে এখানে রেখে অন্য ক্ষেত্রে দরকারী তথ্য রয়েছে যা উত্তরগুলির সন্ধানের সময় হোঁচট খেতে পারে।


ডাবল ড্যাশ!

--শেষ যুক্তি নির্দেশ করতে স্ট্যান্ডার্ড ডাবল-ড্যাশ ( ) কনভেনশনটি ব্যবহার করুন :

less -- -FILENAME

উদাহরণ

$ echo "meh" > -badname
$ less -badname
Number is required after -b
$ less -- -badname # GREAT SUCCESS!

Whhhaattt?

এই --যুক্তিটি শেল ইউটিলিটিস এবং কমান্ড-লাইন সরঞ্জামগুলির বেশিরভাগ বাস্তবায়ন দ্বারা সমর্থিত একটি সম্মেলন থেকে উদ্ভূত হয়েছিল এবং বেশিরভাগ শেলগুলি দৃশ্যমানভাবে সমর্থন করবে যে সিএলআই সরঞ্জাম প্রয়োগ করার সময় আপনার এটি অনুসরণ করা উচিত।

ওপেন গ্রুপের মাধ্যমে পুনঃনির্দেশিত

ওপেনগ্রুপটি এর বেস নির্দিষ্টকরণের ইউটিলিটি বর্ণনা ডিফল্ট (v6) বিভাগে এটি উল্লেখ করেছে:

ডিফল্ট আচরণ: [...] স্ট্যান্ডার্ড ইউটিলিটিস যা বিকল্পগুলি গ্রহণ করে না, তবে যেগুলি অপারেশনগুলি গ্রহণ করে, "-" ত্যাগ করার প্রথম যুক্তি হিসাবে স্বীকৃতি দেবে।

"-" স্বীকৃতির প্রয়োজনীয়তা হ'ল মেনে চলার অ্যাপ্লিকেশনগুলির কোনও ক্রিয়াকলাপের বিকল্পগুলি যা তাদের প্রয়োগগুলি কোনও এক্সটেনশন হিসাবে সরবরাহ করতে পারে সেগুলি থেকে তাদের অপারেশনগুলিকে রক্ষা করার জন্য একটি উপায় প্রয়োজন। উদাহরণস্বরূপ, যদি স্ট্যান্ডার্ড ইউটিলিটি foo কোনও বিকল্প না নেওয়ার জন্য তালিকাভুক্ত করা হয় এবং অ্যাপ্লিকেশনটিকে নেতৃস্থানীয় হাইফেনের সাথে একটি নামকরণের প্রয়োজন হয় তবে এটি নিরাপদে এটি করতে পারে:

foo -- -myfile

এবং এক্সটেনশন হিসাবে ব্যবহৃত -m এর সাথে কোনও সমস্যা এড়াতে পারেন।

এবং ইউটিলিটি সিনট্যাক্স নির্দেশিকাতে (v7):

গাইডলাইন 10: প্রথম - যুক্তি যা কোনও বিকল্প-যুক্তি নয়, অপশনগুলির সমাপ্তি নির্দেশ করে একটি সীমানা হিসাবে গ্রহণ করা উচিত। নিম্নলিখিত কোনও যুক্তি অপারেশন হিসাবে বিবেচনা করা উচিত, এমনকি যদি তারা '-' অক্ষর দিয়ে শুরু হয়।

বাশ দ্বারা প্রস্তাবিত

এখানে, বাশ ম্যানুয়াল থেকে উদ্ধৃত, এর বিল্টিনগুলি এটি সমর্থন করে:

অন্যথায় উল্লিখিত না হওয়া পর্যন্ত প্রতিটি বিল্টিন কমান্ড এই বিভাগে নথিভুক্ত করেছে বিকল্পগুলির শেষটি বোঝাতে - গ্রহণ - দ্বারা পূর্ববর্তী বিকল্পগুলি গ্রহণ করে as

:, সত্য, মিথ্যা এবং পরীক্ষার বিল্টিনগুলি বিকল্পগুলি গ্রহণ করে না এবং চিকিত্সা করে না - বিশেষভাবে। প্রস্থান, লগআউট, বিরতি, চালিয়ে যাওয়া, চলুন, এবং শিফ্ট বিল্টইনগুলি গ্রহণ করে এবং প্রযোজনা ছাড়াই - প্রয়োজনীয়তা ছাড়াই প্রক্রিয়া শুরু করে। অন্যান্য বিল্টিনগুলি যা আর্গুমেন্ট গ্রহণ করে তবে গ্রহণযোগ্য বিকল্প হিসাবে আর্গুমেন্টের ব্যাখ্যা হিসাবে ব্যাখ্যা করা হয় না - অবৈধ বিকল্প হিসাবে এবং প্রয়োজনীয় হিসাবে - এই ব্যাখ্যাটি রোধ করতে।

নোট করুন যে প্রতিধ্বনি ব্যাখ্যা করে না - মানে বিকল্পগুলির সমাপ্তি।

অতিরিক্ত পড়া


2
+1: সর্বাধিক পোর্টেবল এবং কমান্ড-ইন্ডিপেন্ডেন্ট সমাধান, মনে রাখা সহজ এবং "সেরা অনুশীলন" হিসাবে বিবেচনা করা হয়েছে
গতকাল

2
@ কোয়াইও "সেরা অনুশীলন" সম্পর্কে কোনও রেফারেন্স? এটি সম্পর্কে কৌতুহল অনুভব করুন।
ফেডোরকুই

24
এই উত্তরটি যুক্তিগুলির ক্ষেত্রে প্রযোজ্য যা বিকল্পগুলির মতো দেখায়। এটি ক্ষেত্রে নয় -যার জন্য কোনও বিকল্প নয়। ব্যবহার ./-বা অন্য কোন ওয়েবপেজ যখন সম্ভব সাধারণত একটি ভাল পন্থা যেমন মত অন্য ধরনের সমস্যার এড়াতে foo=barএর awkবা যে -। এছাড়াও unix.stackexchange.com/a/56370 , unix.stackexchange.com/a/110756
স্টাফেন

7
স্টাফেন যেমন বলেছেন, এটি প্রশ্নের উত্তর দেয় না । less -- -এখনও স্টিডিন থেকে পড়তে চেষ্টা করবে।
মিশা পলিটোভস্কি

5
আপনি উত্তরটি মুছে ফেলতে চাইতে পারেন (বা এখানে দরকারী তথ্যসূত্র রয়েছে বলে এটি অন্য প্রশ্নে সরিয়ে নিতে পারেন ) বা এটি পরিষ্কার করে দিন যে এটি এই বিশেষ ক্ষেত্রে প্রযোজ্য নয় (এবং সম্ভবত এটি আরও বেশি কার্যকর হবে কেন তা ব্যাখ্যা করুন)।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.