লক করা ফাইলগুলির সাথে সমস্যাযুক্ত একটি টার্গেট ডিরেক্টরিতে কাজ করার জন্য কমান্ডের জন্য একটি মোড়ক স্ক্রিপ্ট তৈরি করে আমি কীভাবে বিষয়টিটির সাথে একত্রীকরণ করব তার উদাহরণ নীচে দেওয়া হল ।chgrp
নামের একটি বাশ স্ক্রিপ্ট ব্যবহার করে chgrpld
, আমি এটি একই কমান্ড লাইন আর্গুমেন্ট ( বিকল্পগুলি , অপারেন্ড এবং ডিরেক্টরি ) পাস করব যদি আমি chgrp
কোনও ডিরেক্টরিতে এক্সিকিউট করি । মনে রাখবেন যে, আমার নামকরণ সম্মেলন অক্ষর যোগ করার জন্য কেবল ছিল ld
প্রতিনিধিত্বমূলক এটি লক ডিরেক্টরির মধ্যে এটি কাজ করে ডিরেক্টরি যে লক , বা না, এবং অথবা ধারণকারী ফাইল / ডিরেক্টরি যে লক খুব। সুতরাং যেখানে আমি সাধারণত ব্যবহার করি, উদাহরণস্বরূপ chgrp -R staff foo
, যেখানে foo
একটি ডিরেক্টরি আছে , আমি তার chgrpld -R staff foo
পরিবর্তে ব্যবহার করব । লিপিলক করা হয়নি এমন একটি ডিরেক্টরিতেও কাজ করার জন্য কোডিং করা হয়েছে এবং পাশাপাশি লক করা ফাইল সিস্টেমের অবজেক্টগুলিও নেই , সুতরাং ডিরেক্টরিকে লক্ষ্য করার সময় নিয়মিত প্রতিস্থাপন হিসাবে ব্যবহারের অনুমতি দিন , যদি আমি লকড ফাইল সিস্টেমের জিনিসগুলি পরীক্ষা করতে না চাই প্রথমে বা প্রথমে ব্যর্থ হয়েছে তবে যাইহোক ব্যবহার করতে হবে।chgrpld
chgrp
chgrp
chgrpld
দ্রষ্টব্য: এই স্ক্রিপ্টটিতে সীমিত পরিমাণে ত্রুটি পরীক্ষার নিয়োগ দেওয়া হয়েছে, সীমিত পরীক্ষার শর্তে কাজ করার জন্য এটি যথেষ্ট। এটা তোলে নয় একটি ফাইল সিস্টেম বস্তুর নামে একটি এমবেডেড সম্পর্কে newline, যা আইএমও প্রথমে সেখানে অন্তর্গত নয় হ্যান্ডেল করতে কোডেড! প্রয়োজন হিসাবে সংশোধন করতে নির্দ্বিধায় / আপনার প্রয়োজনের স্যুট করতে চেয়েছিলেন, / যখন চেয়েছিলেন / প্রয়োজন হলে অতিরিক্ত ত্রুটি পরীক্ষা করে adding
পরীক্ষার পরিবেশটি অস্থায়ী ডিরেক্টরিতে ওএস এক্স 10.11.5 ছিল , নীচের তালিকায় দেখানো হয়েছে যে দুটি ডিরেক্টরি রয়েছে যার মধ্যে একটিতে একটি ফাইল রয়েছে এবং একটি ফাইল লক হয়েছে। এক ডিরেক্টরিটি / ফাইল সেট হয় admin
গ্রুপ এবং অন্যান্য সেট হয় staff
গ্রুপ এবং আমি হতে সবকিছু অনুপস্থিত করছি staff
গ্রুপ । (অতিরিক্ত পরীক্ষার তথ্যের জন্য উত্তরের শেষে পরীক্ষার নোটটি দেখুন See)
টার্মিনাল আউটপুট দেখায়:
- একটি পুনরাবৃত্ত ডিরেক্টরি ডিরেক্টরি।
- ব্যবহারের চেষ্টা
chgrp
, এর ত্রুটি আউটপুট দেখাচ্ছে।
- ব্যবহার করে
chgrpld
, ত্রুটি ছাড়াই কার্যকর করা হচ্ছে।
- গ্রুপটি পরিবর্তিত হয়েছে তা দেখানোর জন্য আরেকটি পুনরাবৃত্ত ডিরেক্টরি ডিরেক্টরি ।
$ ls -lRO
total 0
drwxr-xr-x 3 user staff - 102 Aug 9 2:00 bar
drwxr-xr-x 3 user admin - 102 Aug 9 2:00 foo
./bar:
total 0
-rw-r--r-- 1 user staff - 0 Aug 9 2:00 foo
./foo:
total 0
-rw-r--r-- 1 user admin uchg 0 Aug 9 2:00 bar
$ chgrp -R staff foo
chgrp: foo/bar: Operation not permitted
$ chgrpld -R staff foo
$ ls -lRO
total 0
drwxr-xr-x 3 user staff - 102 Aug 9 2:00 bar
drwxr-xr-x 3 user staff - 102 Aug 9 2:00 foo
./bar:
total 0
-rw-r--r-- 1 user staff - 0 Aug 9 2:00 foo
./foo:
total 0
-rw-r--r-- 1 user staff uchg 0 Aug 9 2:00 bar
$
chgrpld
বাশ স্ক্রিপ্ট তৈরি করতে এবং এটি কমান্ড প্রম্পটে উপলভ্য করতে :
টার্মিনালে:
- টাইপ করুন,
touch chgrpld
এবং টিপুন enter।
- টাইপ করুন,
open chgrpld
এবং টিপুন enter।
ব্রাউজার থেকে:
- কপি এবং পেস্ট করুন, কোড খোলা নিচের
chgrpld
ফাইল এবং এটি সংরক্ষণ করুন, তারপর ফাইলটি বন্ধ করুন।
টার্মিনালে ফিরে:
- টাইপ করুন,
chmod +x chgrpld
এবং টিপুন enter।
- টাইপ করুন,
sudo mkdir -p /usr/local/bin
এবং টিপুন enter। মনে রাখবেন যে ওএস এক্স 10.11.5 এর একটি পরিষ্কার ইনস্টল-এ bin
ডিরেক্টরিটি /usr/local
ইতিমধ্যে এটিতে থাকা সত্ত্বেও এটি বিদ্যমান ছিল না PATH
।
- পাসওয়ার্ড টাইপ করুন এবং টিপুন enter।
- টাইপ
sudo cp chgrpld /usr/local/bin
এবং টিপুন enter।
- পাসওয়ার্ড টাইপ করুন এবং টিপুন enter। (যদি প্রয়োজন হয় তাহলে.)
chgrpld
chgrp
কমান্ডের মতো এখনই ব্যবহারের জন্য উপলব্ধ হওয়া উচিত ।
উত্স কোড জন্য chgrpld
:
#!/bin/bash
o="${@:1:$(($#-1))}"
d="${@: -1}"
if [ -d "$d" ]; then
f=".locked_files_list_$(date "+%s")"
find "$d" -flags uchg > "$f" 2>/dev/null
if [ -s "$f" ]; then
while read -r l; do
chflags nouchg "$l"
done<"$f"
$(chgrp $o "$d")
while read -r l; do
chflags uchg "$l"
done<"$f"
rm "$f"
else
rm "$f"
$(chgrp $o "$d")
fi
else
echo " \"$d\" is not a directory!..."
exit 1
fi
exit 0
সারমর্ম: chgrpld [−fhv][−R[−H | −L | −P]] group directory
বিকল্পগুলি এবং অপারেন্ডগুলিরman chgrp
বিবরণের জন্য টার্মিনালে দেখুন ।group
directory
হয় নাম / পথনাম লক্ষ্য ডিরেক্টরির যে লক , বা না, এবং অথবা ধারণকারী ফাইল / ডিরেক্টরি যে লক খুব। মনে রাখবেন যে এর বিপরীতে chgrp
কোন একাধিক অবজেক্টকে উদাহরণস্বরূপ group file ...
কাজ করতে অনুমতি দেওয়া হয়, chgrpld
এটি একটি টার্গেট ডিরেক্টরিতে কাজ করতে কোডড হয় এবং একসাথে -R
অপশনটির সাথে পুনরাবৃত্তি করে ।
দ্রষ্টব্য: ব্যবহারকারী chgrpld প্রার্থী নির্দিষ্ট গ্রুপের অন্তর্ভুক্ত এবং ডিরেক্টরি এবং লক করা ফাইল সিস্টেম বস্তুর মালিক হতে হবে বা অতি ব্যবহারকারী হতে হবে ।
ওএসের এসআইপি সংস্করণে যেমন প্রত্যাশা করা হয়েছে, এসআইপি সক্ষম করা থাকলে এটি এসআইপি সুরক্ষিত ফাইল-সিস্টেম বস্তুর উপর কাজ করবে না ।
নিচের ছবিটি এর সিনট্যাক্স হাইলাইট দেখায় কোড সহজ পড়ার জন্য ব্যবধানযুক্ত এবং ইন্ডেন্টযুক্ত মন্তব্য সাহায্য করার জন্য কি সম্পর্কে সামান্য ব্যাখ্যা কোড করছে।
পরীক্ষার দ্রষ্টব্য: নোট করুন যে উপরে প্রদর্শিত টেস্টিং পরিবেশটি সীমাবদ্ধ তবুও আমি আরও জটিল লন্ডিত ডিরেক্টরি কাঠামোর অধীনে এটিকে পরীক্ষা করেছিলাম আরও অনেকগুলি লকড নেস্টেড ডিরেক্টরি এবং ফাইল সহ ফাঁকা জায়গা, এবং ফাইল নামের মধ্যে বা ব্যাকস্ল্যাশগুলি, ইস্যু ছাড়াই। স্পষ্টতই বিক্ষোভের উদ্দেশ্যে, আমি কেবল ধারণার প্রমাণের জন্য একটি খালি ন্যূনতম কাঠামো দেখছি। আবার, উপরে উল্লিখিত হিসাবে, " এটি কোনও ফাইল-সিস্টেমের নামে এমবেড করা নিউলাইন হ্যান্ডেল করার কোড কোড নয় , যা আইএমও সেখানে প্রথমে অন্তর্ভুক্ত নয়! " !