আমি কেবল লক্ষ্য করেছি যে আমার কোনও মেশিনে (দেবিয়ান সিড চালানো) যখনই ls
স্পেস সহ যে কোনও ফাইলের নাম টাইপ করি তার চারপাশে একক উদ্ধৃতি থাকে।
আমি তাত্ক্ষণিকভাবে আমার উপনামগুলি পরীক্ষা করেছিলাম, কেবল সেগুলি অক্ষত রাখতে।
wyatt@debian630:~/testdir$ ls
'test 1.txt' test1.txt
wyatt@debian630:~/testdir$ alias
alias ls='ls --color=auto'
alias wget='wget --content-disposition'
wyatt@debian630:~/testdir$
তাদের নামে একক উদ্ধৃতিযুক্ত ফাইল সহ আরও একটি পরীক্ষা (জিম্মিজের অনুরোধের জবাবও দেয়):
wyatt@debian630:~/testdir$ ls
'test 1.txt' test1.txt 'thishasasinglequotehere'\''.txt'
wyatt@debian630:~/testdir$ touch "'test 1.txt'"
wyatt@debian630:~/testdir$ ls
''\''test 1.txt'\''' test1.txt
'test 1.txt' 'thishasasinglequotehere'\''.txt'
নতুন কোর্টিলস -8.26 আউটপুট (যা স্বীকৃতভাবে অনেক কম বিভ্রান্তিকর তবে তবুও ডিফল্টরূপে জ্বালাময়ী) সহ আপডেট করুন। এই মুদ্রণের জন্য পেদ্রাগ ব্র্যাডিকে ধন্যবাদ:
$ ls
"'test 1.txt'" test1.txt
'test 1.txt' "thishasasinglequotehere'.txt"
$ ls -N
'test 1.txt' test1.txt
test 1.txt thishasasinglequotehere'.txt
ইহা কি জন্য ঘটিতেছে? আমি কীভাবে এটি বন্ধ করব?
স্পষ্ট করতে, আমি নিজেই আউটপুট রঙের স্বয়ংক্রিয়ভাবে ls সেট করি। এটি আগে কখনও জিনিসগুলির চারপাশে কোট রাখেনি।
আমি চালাচ্ছি bash
এবং কোর্টিল 8.25।
সম্পাদনা: কোরিউটিলস বিকাশকারীদের মনে হয়েছে (লিঙ্ক) এটি হওয়া ভাল ধারণা হবে যে সর্বনিম্ন বিস্ময়ের নীতির পাশাপাশি ইউনিক্স traditionতিহ্যের 46+ বছরের নীতি ভঙ্গ করেও বিশ্বব্যাপী খেলাপি ।
কোনও পুনরায় সংশোধন না করে এটি ঠিক করার কোনও উপায়?
আপডেট - অক্টোবর 2017 - ডিবিয়ান সিড ডিফল্টরূপে শেল পলায়নের উদ্ধৃতি পুনরায় সক্ষম করেছে। এটি কেবল হাস্যকর হয়ে উঠছে। https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=877582
এবং পূর্ববর্তী বাগ প্রতিবেদনের জবাব চেইনের নীচে, "পরিবর্তনটি উদ্দেশ্যমূলক ছিল এবং থাকবেই।" https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813164#226
আমি ভেবেছিলাম এটি নিষ্পত্তি হয়েছে। দৃশ্যত না.
আপডেট: এপ্রিল 2019: সবেমাত্র পিএইচপি-তে একটি দৃষ্টিনন্দন বাগ রিপোর্ট পাওয়া গেছে যা এই পরিবর্তনের ফলে ঘটেছিল ls
। আপনি যখন বিকাশকারীদের বিভ্রান্ত করছেন এবং ভুয়া বাগ রিপোর্ট উত্পন্ন করছেন, তখন আপনার পরিবর্তনগুলি পুনরায় চিন্তা করার সময় এসেছে।
আপডেট: অ্যান্ড্রয়েড টয়বক্স ls
এখন কোটের পরিবর্তে ব্যাকস্ল্যাশ সহ এর সাথে কিছু করছে। -Q বিকল্পটি ব্যবহার করে স্পেসগুলিকে 'প্রশ্ন চিহ্নের অক্ষর' হিসাবে রেন্ডার করে তোলে (তারা কী তা আমি খতিয়ে দেখিনি, যেহেতু তারা স্পষ্টত স্পেস নয়), সুতরাং ডিভাইসটিকে প্রশ্নবিদ্ধ রুটি না করেই আমি এখনও খুঁজে পেলাম একমাত্র ফিক্স যুক্ত করা add এটি কোনও স্ক্রিপ্টে তৈরি করুন এবং শেল চালু করার সময় এটি উত্স করুন। এই ফাংশনটি ls
টার্মিনালে থাকলে কলামগুলি ব্যবহার করে এবং অন্যথায় প্রতি-লাইন এক-এক প্রিন্ট করে, ls
প্রিন্টিং স্পেসগুলিতে ট্রিক করার সময় ভারব্যাটিম কারণ এটি একটি পাইপের মধ্য দিয়ে চলছে।
ls() {
# only way I can stop ls from escaping with backslashes
if [ -t 1 ]; then
/system/bin/ls -C "$@" |cat
else
/system/bin/ls "$@" |cat
fi
}
ls | cat
এবং দেখুন এটি চলে যায় কিনা। আমার যদি টাইম মেশিন থাকে তবে আমি বেল ল্যাবস ~ ১৯ .০ এ ফিরে গিয়ে কেন থম্পসনকে বোঝানোর চেষ্টা করতাম যে ফাইল এবং ডিরেক্টরিগুলির নাম স্থান দেওয়ার অনুমতি দেওয়া একটি খারাপ ধারণা। :
'*'
। আমি মনে করি আমি ls
এগুলি থেকে মুক্তি পেতে আমার সমস্ত মেশিনে উপকরণ যুক্ত করার চেষ্টা করব ...
ls
কমান্ডটি বিশ্লেষণ না করার আরেকটি কারণ ।