কীভাবে বর্তমান ডিরেক্টরিতে সমস্ত ফাইল ছাউন্ড / chmod করবেন?


56

আমি বর্তমান ডিরেক্টরিতে কিছু ফাইল (এবং ডিরেক্টরি) এর মালিকানা এবং অনুমতিগুলি পরিবর্তন করার চেষ্টা করছি। আমি এটি চেষ্টা করেছি:

chown username:groupname .

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

আমি কীভাবে বর্তমান ডিরেক্টরিতে সমস্ত ফাইল ছাউন্ড এবং chmod করতে পারি?


man chownএবং man chmodসহজেই আপনার প্রশ্নের উত্তর দিন।

2
@ শি আমি মনে করি এটি একটি ন্যায্য প্রশ্ন। ম্যান পৃষ্ঠাটি পড়লে কোনও লাভ হবে না। গ্লোববিং এর অংশ নয় chmod। এটি খোল থেকে অন্তর্নির্মিত এছাড়াও গ্লোববিংয়ের ডকুমেন্টেশনগুলি পড়া আপনার জীবনকে আচ্ছন্ন করে তোলে (আমি zsh এর সমস্ত বৈশিষ্ট্যগুলি সন্ধান করতে অনেক সময় ব্যয় করেছি)।
djf

1
@ ডিজেএফ:chown -R user:group .
শি

উত্তর:


96

আপনি ব্যবহার করতে চান chown username:groupname *এবং শেলটি *বর্তমান ডিরেক্টরিতে থাকা সামগ্রীতে প্রসারিত করতে দিন । এটি বর্তমান ডিরেক্টরিতে সমস্ত ফাইল / ফোল্ডারগুলির অনুমতিগুলি পরিবর্তন করবে তবে ফোল্ডারগুলির বিষয়বস্তু নয়।

আপনি এটি করতেও পারেন chown -R username:groupname ., যা বর্তমান ডিরেক্টরিতে অনুমতিগুলি পরিবর্তন করবে এবং তারপরে অনুমতিগুলি পরিবর্তন করার জন্য এটির এবং সমস্ত সাবফোল্ডারগুলির ভিতরে পুনরাবৃত্তি করবে।

chown -R username:groupname *বর্তমান ডিরেক্টরিটিকে একা রেখে কেবল পুনরায় সমস্ত ফাইল এবং ফোল্ডারে অনুমতি পরিবর্তন করবে change এই স্টাইলটি এবং প্রথম শৈলীটি আমি নিজেকে প্রায়শই ব্যবহার করে দেখতে পাই।


2
@ অ্যান্ড্রু আপনার পাহারায় থাকুন, তিনি ক্লান্ত বা অপ্রত্যাশিত উভয়ের বন্ধু এবং শত্রু হতে পারেন।
ডারথ অ্যান্ড্রয়েড

5
এছাড়াও, পিরিয়ডের বিপদগুলি থেকে সাবধান থাকুন। যেহেতু এটি কীবোর্ডের "/" আলমাইটের ঠিক পাশেই রাখা হয়েছে। একটি সরল টাইপো সহজে চালু করতে পারেন chown -R username:groupname .মধ্যে chown -R username:groupname /। 2 সেকেন্ড টাস্ককে 2 দিনের দুঃস্বপ্ন করা।
teynon

@ টম সেজন্য আমার সম্ভবত -vআমার সমস্ত পুনরাবৃত্ত আদেশগুলি ব্যবহার করা শুরু করা উচিত তবে খুব অলসভাবে
কলব ক্যানিয়ন

কেবলমাত্র কীবোর্ডের একটি স্লিপ এড়াতে আমি নির্দিষ্ট হতে চাই এবং ডিরেক্টরিটির নাম রাখি, যদিও সবেমাত্র সেরা এবং সংক্ষিপ্ত আনসার হিসাবে উত্সাহিত:chown -R username:groupname directoryname
ডেভ এভারিট

9

আমি মনে করি আপনি এটি চান:

chown username:groupname *

আপনি যদি পুনরুক্তরূপে উপ-ডিরেক্টরিগুলি পরিবর্তন করতে চান তবে আপনার -R( -rঅবমূল্যায়ন করা) সুইচটি দরকার:

chown -R username:groupname *


0

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

  • নিম্নলিখিত স্ক্রিপ্টটি বর্তমান ব্যবহারকারীর মালিকানাধীন ফাইল এবং ডিরেক্টরিগুলির মালিকানা পরিবর্তিত করে, বর্তমান ব্যবহারকারীর মালিকানাধীন প্রতিটি ডিরেক্টরি বা ফাইলের একটি নতুন অনুলিপি মুছে ফেলা (বা মুছে ফেলার চেষ্টা করে) এর অনুমতি সম্পর্কিত বিষয়গুলির চারপাশে কাজ করার চেষ্টা করছে মূল ফাইল, এবং যথাযথ নামকরণ।
  • উদ্দেশ্যটি হ'ল "আমাকে মালিক করুন" এর সংক্ষেপণ হবে। আমি আন্ডারস্কোরগুলি ব্যবহার করি না কারণ এগুলি টাইপ করতে ব্যথা।

উদাহরণ:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • এটির জন্য নিম্নলিখিত স্ক্রিপ্টটি mkmeowneroneআপনার পথে থাকা দরকার।

mkmeowner:

#!/bin/bash
[ "x$1" == "x-h" ] || [ "x$1" == "x--help" ] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done

mkmeownerone:

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1

1
(1) আমরা এমন উত্তরগুলিকে পছন্দ করি যার মধ্যে কিছু ব্যাখ্যা থাকে। আমি যখন আপনার স্ক্রিপ্টগুলি পড়লাম এবং সেগুলি দেখেছিলাম তখন আমি অবাক হয়ে গিয়েছিলাম কারণ আপনার সূচনা অনুচ্ছেদে আমাকে কোনও ধারণা দেয়নি। (২) আপনি উল্লেখ করতে ভুলে গেছেন যে ব্যবহারকারীকে অবশ্যই mkmeowneronePATH অনুসন্ধানে প্রবেশ করতে হবে ।  mkmeownerযদি এটি না করা হয় তবে উড়ে যাবে। (3) দয়া করে শিখুন কীভাবে (যেমন, কখন এবং কোথায়) শেল কমান্ড এবং স্ক্রিপ্টগুলিতে উদ্ধৃতি ব্যবহার করতে হবে। বলা ${f}কোন কার্যকর বিকল্প নয়; দেখতে এই । … (চালিয়ে যাওয়া)
স্কট

(চালিয়ে যাওয়া) ... (4) আপনি যদি আপনার স্ক্রিপ্ট কোনও ডিরেক্টরিতে চালনা করেন তবে এটি সম্ভাব্যভাবে সেই ডিরেক্টরিতে থাকা প্রতিটি ফাইল দুবার অনুলিপি করবে। (5)  exprপুরানো। শেলের সাথে সাধারণ স্ট্রিং ম্যাচিং করা এটি আরও দক্ষ; বাশ নিয়মিত প্রকাশের মিলকেও সমর্থন করে। এই বিষয়টির জন্য, আপনি ফাইল নাম পরীক্ষা করতে পারেন find. (6) আপনার expr matchকমান্ড পরীক্ষা করে ${f}শেষ হয় mkmeownerকিনা তা দিয়ে শেষ হয় কিনা তা পরীক্ষা করে .mkmeowner। সুতরাং, স্ক্রিপ্টটি নিজেই কাজ করবে না। … (চালিয়ে যাওয়া)
স্কট

(চালিয়ে যাওয়া) ... এখন, যুক্তিযুক্তভাবে, এটি একটি ভাল জিনিস - আপনি কোনও স্ক্রিপ্টটি চলাকালীন চলতে এবং সম্ভাব্যরূপে মুছতে চান না। (এটি অগত্যা কোনও সমস্যা সৃষ্টি করার দরকার নেই, তবে এটি অগোছালো হতে পারে)) তবে আপনার মতো (এবং নথির) বিশেষ বিষয়গুলি বোঝা উচিত। ()) আপনি মাল্টি-ওয়ার্ড স্ট্রিংগুলিতে আন্ডারস্কোর ব্যবহার করতে চাইতে পারেন।  dirorfileপড়তে ও বুঝতে (তুলনা কঠিন dir_or_file), এবং যখন দেখলাম mkmeowner, আমার প্রথম চিন্তা একটি বিড়াল (ছিল mk + +  meow + +  ner)।
স্কট

স্কট নোটের জন্য ধন্যবাদ। 1. আমি ভেবেছিলাম আমার একটি ব্যাখ্যা আছে তবে আমাকে আরও সুস্পষ্ট হতে দিন। 2. ভাল পয়েন্ট। আমি এটি আমার মূল স্ক্রিপ্টে ক্যাপচার করেছি, তবে রেফারেন্সটি বের করে দিয়েছি। ৩. আমি ৩০ বছর ধরে শেল স্ক্রিপ্ট লিখছি, তবে নিশ্চিত, আমি আরও জানার চেষ্টা করব। 4. হ্যাঁ এটা করে। উদ্দেশ্য হিসাবে কারণ আমি যদি ডিরেক্টরিটির মালিকানা না পাই তবে আমি এটি মুছতে পারি না। আমি এটি উল্লেখ করতে পারেন। 5. ইয়াহ আমি পুরানো ফ্যাশন, তবে এক্সপ্রেস এখনও বেশ ভালভাবে কাজ করে 6.. হ্যা পয়েন্ট পয়েন্ট। I. আমি সম্ভবত, আমার মনে হয় II যদিও কিছু শৈল্পিক লাইসেন্স পাবে, কারণ আন্ডারস্কোরগুলি কোনও নিয়ম নয়। আমার এমন স্ক্রিপ্ট দরকার যা বীজগুলি তৈরি করে!
sbcondor

আমার মনে হয় না $ {f} এর সাথে কিছু ভুল আছে, তাই না? এটি প্রয়োজনের তুলনায় কিছুটা দীর্ঘ। এটি প্রায়শই আমি ব্যবহার করি এটি একটি ফর্ম্যাট কারণ আমি $ {f} .mkmeowner এর মতো দীর্ঘতর স্ট্রিং তৈরি করতে ভেরিয়েবলটি ব্যবহার করতে চাইতে পারি এবং $ f.heck এর অর্থ $ {f} + হেক বা $ { f.heck}
sbcondor
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.