যথাযথ অনুমতি ব্যতীত তারকাচিহ্নটি প্রসারিত করতে পারে না


16

কেউ আমাকে নীচের ব্যাখ্যা করতে পারেন?

$ ls -ld /temp/sit/build/
dr-xr-s--- 3 asdf qwer 4096 Jan 31  2012 /temp/sit/build/

$ ls -ld /temp/sit/build/*
ls: /temp/sit/build/*: Permission denied

তাই শিক্ষানবিস, আমি এখানে নক্ষত্রটি ব্যবহার করতে পারি না। আমি এটি একটি sudo কমান্ড দিয়ে চেষ্টা করেছি এবং আমি "অনুমতি অস্বীকার করা" না হয়ে একটি "এই জাতীয় কোনও ফাইল" ত্রুটি পেয়েছি ...

sudo ls -l /temp/sit/build/*
ls: /temp/sit/build/batch*: No such file or directory

তবে অবশেষে এটি কার্যকর হয় যদি আমি * ব্যবহার না করি

sudo ls -l /temp/sit/build/
total 4
dr-xr-s--- 11 asdf qwer 4096 Oct  3 23:31 file

উত্তর:


20

*ওয়াইল্ডকার্ডের প্রসারণ যে শেলটি আপনি এটি টাইপ করেন এমন শেল। শেল ডিরেক্টরির মধ্যে ফাইলের তালিকা পড়তে অনুমতি রয়েছে ফেলেন, তাহলে এটি বিস্তৃতি /temp/sit/build/*করার /temp/sit/build/file, এবং রান sudoআর্গুমেন্ট সহ ls, -lএবং /temp/sit/build/file। শেল জন্য কোন ম্যাচ খুঁজে পেতে অসমর্থ হয়, তাহলে /temp/sit/build/*, তারপর এটি প্যাটার্ন একা ছেড়ে, এবং (কারণ সেখানে কোন মিল নেই, অথবা কারণ শেল ম্যাচ দেখতে কোন অনুমতি আছে কিনা এটা) sudoআর্গুমেন্ট সহ বলা হয় ls, -lএবং /temp/sit/build/*

যেহেতু কোনও ফাইল বলা হয় নি /temp/sit/build/*, lsআপনি সেই নামটি পাস করলে কমান্ডটি অভিযোগ করে। স্মরণ করুন যে lsওয়াইল্ডকার্ডগুলি প্রসারিত করে না, এটি শেলের কাজ।

আপনি যদি চান যে কোনও ডিরেক্টরিতে ওয়াইল্ডকার্ড সম্প্রসারণ ঘটতে পারে যেখানে আপনি পড়ার অনুমতি নেই, তবে অবশ্যই প্রসারিত sudoশেলটি কল হওয়া কলটির পরিবর্তে শুরু হওয়া শেলের মধ্যেই ঘটবে sudosudoস্বয়ংক্রিয়ভাবে শেলটি শুরু করে না, আপনাকে এটি স্পষ্টভাবে করা দরকার।

sudo sh -c 'ls -l /temp/sit/build/*'

এখানে অবশ্যই, আপনি sudo ls -l /temp/sit/build/পরিবর্তে এটি করতে পারেন , তবে এটি অন্যান্য নিদর্শনগুলিতে সাধারণীকরণ করে না।


1

কিছু বিরল ক্ষেত্রে আপনার দ্বিগুণ পরীক্ষা করে দেখতে হবে যে আপনি নিজের শেলটির জন্য গ্লোব্বিং অক্ষম করেননি যা No such file or directoryওয়াইল্ডকার্ড ( *) এর সাথে ফাইল তালিকা করার চেষ্টা করার সময় আপনাকে দিতে পারে ।

উদাহরণ স্বরূপ:

$ ls /tmp/sit/build/*
/tmp/sit/build/file
$ set -f
$ ls /tmp/sit/build/*
ls: cannot access /tmp/sit/build/*: No such file or directory
$ set +f
$ ls /tmp/sit/build/*
/tmp/sit/build/file

help setআরও তথ্যের জন্য পরীক্ষা করুন ।

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