ইউনিক্স সরঞ্জামগুলি: যদি কোনও ফাইলের নাম বিয়োগ কিছু হয়?


9

আমি সবসময়ই ভাবছি: বেশিরভাগ জিএনইউ / ইউনিক্স সরঞ্জাম "মাইনাস কিছু" আকারে বিকল্পগুলি গ্রহণ করে, কখনও কখনও তর্ক পরে আসে by আপনি যদি মাইনাস নামে কিছু ফাইল পেয়ে থাকেন?

$ ls
-f
$ rm -f
$ ls
-f
$ mv -f abc
mv: missing destination file operand after `abc'
Try `mv --help' for more information.
$ cat -f
cat: invalid option -- 'f'
Try `cat --help' for more information.

অথবা

$ ls
-ohello.c
$ gcc -ohello -ohello.c
gcc: fatal error: no input files
compilation terminated.

এটি কৌতূহলের বাইরে; আমার এটির জন্য কোনও ব্যবহারের মামলা নেই।


আপনাকে আক্ষরিকভাবে সিস্টেম কলের "-f" স্ট্রিংটি পাস করার একটি উপায় খুঁজে বের করতে হবে। সাধারনত: সাবধানতার সাথে পালানো by
ফ্লেক্সো

2
'ক্লোজড অফ অফ-টপিক' ভোটারের কাছে: এটি শেল প্রোগ্রামিং এবং কীভাবে সমস্যা এড়ানো যায় সে সম্পর্কে একটি প্রশ্ন । এটি সম্পূর্ণরূপে এসও এর জন্য বিষয়। (ওটো, এটি সম্ভবত একটি সদৃশ; সমস্যাটি সম্পর্কিত অন্যান্য প্রশ্ন সন্ধান করছে))
জোনাথন লেফলার

উত্তর:


12

নামের একটি ফাইল সরাতে -x, rm -- -x( --বিকল্পগুলির অর্থ) বা ব্যবহার করুন rm ./-x


10

সাক্ষাত্কারের সেটিংসে এই ধরণের প্রশ্ন জিজ্ঞাসা করা মোটামুটি সাধারণ। ড্যাশ সহ ফাইলগুলি হ্যান্ডেল করার একটি সাধারণ উপায় হ'ল:

$ rm -- -f
$ rm ./-f

6

ইউনিক্সে একটি সাধারণ প্রশ্ন। প্রধান উপায় হ'ল ফাইলটিকে পুরো পথের নাম দেওয়া, সুতরাং এটির সামনে কোনও ড্যাশ নেই:

$ rm -file.txt
unknown option -l

$ rm ./-file.txt    #No problem!
$ rm $PWD/-file.txt #Same thing

কিছু কমান্ড, বিকল্পগুলি শেষ করতে আপনি নিজেই একটি ড্যাশ ব্যবহার করতে পারেন (বা ডাবল ড্যাশ)। যাইহোক, সমস্ত কমান্ড, বা এমনকি বিভিন্ন সিস্টেমে একই কমান্ডের সাথে এটি প্রয়োজনীয় নয়।

$ rm -- -file.txt   #Works on Linux but not on some Unix systems

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