নিম্নলিখিত সম্পর্কে কি:
#!/bin/bash
HOME_DIRS="/home/abcd/dammi /home/wxyz/harrami /home/abcd/harrami /home/wxyz/harrami"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for FOLDER in $HOME_DIRS; do
mkdir -p "${FOLDER}/${DATE_DIR}/${DAY_DIR}"
done
ঠিক আছে, অবশ্যই আপনি এটি DATE_DIR
এবং DAY_DIR
ভেরিয়েবলগুলি ছাড়াও এটি করতে পারতেন তবে এই অ্যালগরিদমটি নিশ্চিত করে যে তারিখটি বহুগুণ উত্পন্ন হয় না এবং এটি সমস্ত ব্যবহারকারীদের জন্য তারিখটি একই হওয়ার আশ্বাস দেয় (এমনকি আপনি মধ্যরাতের আগে এবং শেষের আগে এটি শুরু করলেও ডিরেক্টরি মধ্যরাতের পরে তৈরি করা হয়)।
ব্যবহারকারীদের সদ্য নির্মিত ডিরেক্টরিতে লেখার অনুমতি দেওয়ার জন্য আপনাকে মুচলেকা ব্যবহার করে স্ক্রিপ্টটি বাড়ানোর বিষয়ে ভাবতেও পারে।
সম্পাদনা: আপনি যদি দুটি /home
সাব-ফোল্ডারের মধ্যে একই ফোল্ডার কাঠামো তৈরি করতে চান তবে আপনি রোলকউয়ের স্ক্রিপ্টটি আমার এক সাথে সংযুক্ত করতে পারেন:
#!/bin/bash
USER_LIST="dammi harrami"
HOME_SUBDIRS="abcd wxyz"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for HOME_SUBDIR in $HOME_SUBDIRS; do
for U in $USER_LIST; do
mkdir -p "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}/${DAY_DIR}"
done
done
সম্পাদনা 2: আমি ধরে নিই ব্যবহারকারীর তালিকায় ব্যবহারকারীর নাম রয়েছে। সুতরাং আসুন আমরা স্ক্রিপ্টটি প্রসারিত করি যাতে ডিরেক্টরি মালিককে যথাযথভাবে পরিবর্তন করা যায়:
#!/bin/bash
USER_LIST="dammi harrami"
HOME_SUBDIRS="abcd wxyz"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for HOME_SUBDIR in $HOME_SUBDIRS; do
for U in $USER_LIST; do
mkdir -p "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}/${DAY_DIR}"
chown -R "${U}" "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}"
done
done
সম্পাদনা 3: মালিকানা পরিবর্তন করার জন্য আমি মনে করি সবচেয়ে সহজ উপায় হ'ল ডিরেক্টরি থেকে মালিকানাটি পড়া /home/<subdir>/<user>
#!/bin/bash
USER_LIST="dammi harrami"
HOME_SUBDIRS="abcd wxyz"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for HOME_SUBDIR in $HOME_SUBDIRS; do
for U in $USER_LIST; do
mkdir -p "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}/${DAY_DIR}"
GROUP_MEMBER=$(stat -c %G "/home/${HOME_SUBDIR}/${U}")
chown -R "${U}":"${GROUP_MEMBER}" "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}"
done
done
নিশ্চিত যে আপনি স্ট্যাট ব্যবহার করতে পারেন মালিককে পড়তে; তবে এটি ভেরিয়েবল থেকে পড়ার চেয়ে কিছুটা ধীর - যেমন আপনি এটি চেয়েছিলেন:
#!/bin/bash
USER_LIST="dammi harrami"
HOME_SUBDIRS="abcd wxyz"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for HOME_SUBDIR in $HOME_SUBDIRS; do
for U in $USER_LIST; do
mkdir -p "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}/${DAY_DIR}"
OWNER=$(stat -c %U "/home/${HOME_SUBDIR}/${U}")
GROUP_MEMBER=$(stat -c %G "/home/${HOME_SUBDIR}/${U}")
chown -R "${OWNER}":"${GROUP_MEMBER}" "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}"
done
done
সম্পাদনা 4: হার্ড-কোডেড গ্রুপ সদস্যতা ব্যবহার করে বিকল্প সমাধান solution
#!/bin/bash
USER_LIST="dammi:group1 harrami:group2"
HOME_SUBDIRS="abcd wxyz"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for HOME_SUBDIR in $HOME_SUBDIRS; do
for UG in $USER_LIST; do
G=${UG##*:}
U=${UG%%:*}
mkdir -p "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}/${DAY_DIR}"
GROUP_MEMBER=$(stat -c %G "/home/${HOME_SUBDIR}/${U}")
chown -R "${U}":"${G}" "/home/${HOME_SUBDIR}/${U}/${DATE_DIR}"
done
done
সম্পাদনা 5: আপনার প্রাথমিক পোস্টটি দেখে কাঙ্ক্ষিত কাঠামোটি কিছুটা আলাদা হতে পারে। আমার ধারণা আপনি /home
প্রতিটি গ্রুপের জন্য একটি উপ-ডিরেক্টরি রাখতে চান এবং প্রতিটি গ্রুপ সদস্যের জন্য কেবল ব্যবহারকারী-ডিরেক্টরি যুক্ত করতে চান। সুতরাং আপনি এখানে যান:
#!/bin/bash
USER_LIST="dammi:abcd dammi:wxyz harrami:wxyz"
DATE_DIR=$(date +%Y-%m)
DAY_DIR=$(date +%d)
for UG in $USER_LIST; do
G=${UG##*:}
U=${UG%%:*}
mkdir -p "/home/${G}/${U}/${DATE_DIR}/${DAY_DIR}"
chown -R "${U}":"${G}" "/home/${G}/${U}/${DATE_DIR}"
done
যদি কোনও ব্যবহারকারী একাধিক গোষ্ঠীতে সদস্য হন তবে কেবলমাত্র USER_LIST এ এটি একাধিকবার নির্দিষ্ট করে।