যার নাম দিয়ে শুরু হয় -
এমন একটি ফাইল সরিয়ে ফেলা একটি FAQ, তবে দেখে মনে হচ্ছে আপনার অন্যরকম সমস্যা হয়েছে।
প্রশ্নটিতে আপনি যে সমাধানগুলি উল্লেখ করেছেন সেগুলির মধ্যে:
rm -- -
এটা কাজ করা উচিত।
rm "-"
এর থেকে আলাদা কিছু নয় rm -
। উদ্ধৃতিগুলি শেল দ্বারা ছিটানো হয়, এবং rm
কমান্ডটি কেবল একটি যুক্তি হিসাবে একক হাইফেনকে দেখায়। কোটেশন চিহ্নগুলি শেল মেটাচ্যাকার্স থেকে বেরিয়ে আসার জন্য দরকারী; হাইফেন rm
শেল নয়, বিশেষ ।
rm "\-"
উদ্ধৃতি চিহ্নগুলি ব্যাকস্ল্যাশ থেকে রক্ষা পায়, সুতরাং এটি এমন একটি ফাইল সরিয়ে দেওয়ার চেষ্টা করে যার নাম দুটি অক্ষর, একটি ব্যাকস্ল্যাশ এবং হাইফেন নিয়ে থাকে।
rm \-
এটি ঠিক মত rm "-"
, সমতুল্য rm -
।
এটা অন্তত এর গনুহ coreutils সংস্করণের সাথে, ঘটে rm
, rm -
আসলে সরিয়ে ফেলা হবে (অথবা অপসারণ করার প্রচেষ্টা) একটি ফাইল যার নাম শুধু একটি হাইফেন নিয়ে গঠিত। আপনার ফাইলটির সেই নামটি থাকলে এটি এখনই শেষ হয়ে যাবে। আমি উপসংহারে পৌঁছেছি যে আপনার ফাইলটির একটি নাম রয়েছে যা কেবল হাইফেনের মতো দেখায় ।
ls | cat -A
এটি আসলে কী বলা হয় তার একটি ধারণা দেওয়া উচিত।
এখানে একটি পার্ল স্ক্রিপ্ট আমি কেবল একসাথে ছুঁড়েছি যা আপনাকে বর্তমান ডিরেক্টরিতে প্রতিটি ফাইলের জন্য অনুরোধ করবে এবং এটি অপসারণ করবে কিনা তা জিজ্ঞাসা করবে। ওয়ারেন্টি ছাড়াই অফার করা হয়েছে, তবে আমি এটি সংক্ষেপে পরীক্ষা করেছি।
#!/usr/bin/perl
use strict;
use warnings;
$| = 1;
opendir my $DIR, '.' or die ".: $!\n";
my @files = sort grep { -f $_ } readdir $DIR;
closedir $DIR;
foreach my $file (@files) {
print "Remove $file? ";
my $answer = scalar <>;
if ($answer =~ /^[Yy]/) {
unlink $file or warn "$file: $!\n";
}
elsif ($answer =~ /^[Qq]/) {
exit 0;
}
}
সম্পাদনা : একটি কম বিস্তৃত সমাধান: যদি ফাইলটির নামটি কেবল একটি অক্ষর হয় তবে rm ?
অবশ্যই এটি অপসারণ করা উচিত (অন্য কোনও ফাইলের সাথে)।