R৪৪ এর মতো সংখ্যাসূচক ইউনিক্স অনুমতিগুলি দেখতে প্রতীকী আউটপুট -rw-rw-r-- দেখতে কোনও ডিরেক্টরি তালিকা তৈরি করার সময় কি এটি সম্ভব?
ধন্যবাদ।
R৪৪ এর মতো সংখ্যাসূচক ইউনিক্স অনুমতিগুলি দেখতে প্রতীকী আউটপুট -rw-rw-r-- দেখতে কোনও ডিরেক্টরি তালিকা তৈরি করার সময় কি এটি সম্ভব?
ধন্যবাদ।
উত্তর:
এটা প্রায় পারে ..
ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/) \
*2^(8-i));if(k)printf("%0o ",k);print}'
chmod 777 dir
আপনার কমান্ড এর পরে অনুমতিগুলি প্রিন্ট করার পরে767
নিকটতম আমি ভাবতে পারি (এটিকে যথেষ্ট সহজ করে রাখা) stat
আপনি ধরে নিচ্ছেন যে আপনি কোন ফাইলগুলি অনুসন্ধান করছেন। যদি আপনি না *
পান তবে তাদের বেশিরভাগ সন্ধান করতে পারেন:
/usr/bin$ stat -c '%a %n' *
755 [
755 a2p
755 a2ps
755 aclocal
...
এটি বক্সের বাইরে স্টিকি, স্যুইড এবং সংস্থাকে পরিচালনা করে:
$ stat -c '%a %n' /tmp /usr/bin/sudo
1777 /tmp
4755 /usr/bin/sudo
stat -f '%A %N' *
ম্যাক (ফ্রিবিএসডি) তে একই জিনিসটি পেয়েছি
stat
নয় ls
সেইজন্য এই সঠিক উত্তর নয়। তবে আমি বিশ্বাস করি এটি পছন্দসই আউটপুট প্রসঙ্গে সঠিক উত্তর। যদি awk
পাইপে অনুমতি দেওয়া হয় তবে find
যেখানে stat
ডাকা হয়েছে সেখানে অনুমতি দেওয়া উচিত -exec
; তারপর আপনি ব্যবহার করতে পারেন stat
ছাড়া সরাসরি*
stat -c '%a %n' * **/*
।
আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন
stat -c "%a %n" *
এছাড়াও আপনি নির্দিষ্ট ফলাফল পেতে যে কোনও filename
বা directoryname
তার পরিবর্তে ব্যবহার করতে পারেন *
।
ম্যাক এ, আপনি ব্যবহার করতে পারেন
stat -f '%A %N' *
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
man stat
ম্যাকোস 10.14.4 এ উপস্থাপন করা তথ্য ব্যবহার করি তবে কমান্ডটি হওয়া উচিত stat -f "%Lp %N" *
। %Lp
হিসাবে একই জিনিস মুদ্রণ প্রদর্শিত হবে %A
।
@ মাইওয়াইএন
বাহ, সুন্দর অজানা! তবে স্যুইড, স্যাজিড এবং স্টিকি বিট সম্পর্কে কী?
আপনাকে আপনার ফিল্টারটি এস এবং টি দিয়ে প্রসারিত করতে হবে, অন্যথায় তারা গণনা করবে না এবং আপনি ভুল ফলাফল পেয়ে যাবেন। এই বিশেষ পতাকাগুলির জন্য অষ্টাল সংখ্যা গণনা করার জন্য, পদ্ধতিটি একই তবে সূচকটি 4 and এবং 10 এ রয়েছে ---s--s--t
exec---S--S--T
ls -l | awk '{
k = 0
s = 0
for( i = 0; i <= 8; i++ )
{
k += ( ( substr( $1, i+2, 1 ) ~ /[rwxst]/ ) * 2 ^( 8 - i ) )
}
j = 4
for( i = 4; i <= 10; i += 3 )
{
s += ( ( substr( $1, i, 1 ) ~ /[stST]/ ) * j )
j/=2
}
if ( k )
{
printf( "%0o%0o ", s, k )
}
print
}'
পরীক্ষার জন্য:
touch blah
chmod 7444 blah
ফলাফল হবে:
7444 -r-Sr-Sr-T 1 cheko cheko 0 2009-12-05 01:03 blah
এবং
touch blah
chmod 7555 blah
দিতে হবে:
7555 -r-sr-sr-t 1 cheko cheko 0 2009-12-05 01:03 blah
alias "lsmod=ls -al|awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"
ইউনিক্সের সংখ্যা সংক্রান্ত অনুমতি মানগুলি (অষ্টাল মান) এবং ফাইলের নাম প্রদর্শন করতে এটি ব্যবহার করুন।
stat -c '%a %n' *
ইউনিক্সের সংখ্যা সংক্রান্ত অনুমতি মানগুলি (অক্টাল মান) এবং ফোল্ডারের শ্যাজিড এবং স্টিকি বিট, মালিকের ব্যবহারকারীর নাম, গোষ্ঠীর নাম, বাইটস এবং ফাইলের নামের মধ্যে মোট আকার প্রদর্শন করতে এটি ব্যবহার করুন।
stat -c '%a %A %U %G %s %n' *
%y
আপনার মানব-পঠনযোগ্য ফর্ম্যাটে শেষ পরিবর্তনের সময় প্রয়োজন হলে যুক্ত করুন । আরও বিকল্পের জন্য স্ট্যাট দেখুন ।
একটি উপনাম ব্যবহার করে আরও ভাল সংস্করণ
আপনার যা প্রয়োজন তা পূরণ করার জন্য একটি উপনাম ব্যবহার করা আরও কার্যকর উপায় এবং এতে রঙও অন্তর্ভুক্ত রয়েছে। নিম্নলিখিতটি প্রথমে গ্রুপ ডিরেক্টরি দ্বারা সংগঠিত আপনার ফলাফলগুলি প্রদর্শন করে, রঙে প্রদর্শিত হবে, মানব পাঠযোগ্য বিন্যাসে আকারগুলি মুদ্রণ করবে (উদাহরণস্বরূপ, 1 কে 234 এম 2 জি) আপনার সম্পাদনা করুন ~/.bashrc
এবং সম্পাদনা করে আপনার অ্যাকাউন্টের জন্য বা বিশ্বব্যাপী একটি উপনাম যুক্ত করুন/etc/profile.d/custom.sh
টাইপিং cls
আপনার নতুন এলএস কমান্ড ফলাফল প্রদর্শন করে।
alias cls="ls -lha --color=always -F --group-directories-first |awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"
ফোল্ডার ট্রি
আপনি যখন আপনার বাশার্ক সম্পাদনা করছেন বা কাস্টম.শ্রে গ্রাফিকাল উপস্থাপনা দেখতে নীচের নামটি অন্তর্ভুক্ত করুন সেখানে টাইপিং lstree
আপনার বর্তমান ফোল্ডার গাছের কাঠামো প্রদর্শন করবে
alias lstree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'"
এটি প্রদর্শিত হবে:
|-scripts
|--mod_cache_disk
|--mod_cache_d
|---logs
|-run_win
|-scripts.tar.gz
আপনি কোনও ফাইলের অনুমতি সম্পর্কিত তথ্য পেতে ls ব্যবহার করবেন না। আপনি স্টেট কমান্ড ব্যবহার করুন। এটি আপনাকে চাইলে এমন সংখ্যার মান দেবে। "ইউনিক্স ওয়ে" বলছে যে ls (বা 'প্রতিধ্বনি *') এবং স্ট্যাট ব্যবহার করে আপনার নিজের স্ক্রিপ্টটি উদ্ভাবন করা উচিত এবং আপনি যে ফর্ম্যাটটি চান সে তথ্যটি আপনার পছন্দ করতে চান।
নির্বাচিত উত্তর এবং একটি উপনাম ব্যবহারের পরামর্শের ভিত্তিতে আমি এটিকে একটি ফাংশনে রূপান্তর করেছি যাতে ডিরেক্টরিতে ডিরেক্টরিতে কোনও ডিরেক্টরি পাস করা সম্ভব হয়।
# ls, with chmod-like permissions and more.
# @param $1 The directory to ls
function lls {
LLS_PATH=$1
ls -AHl $LLS_PATH | awk "{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/) \
*2^(8-i));if(k)printf(\"%0o \",k);print}"
}
alias cls="ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\"%0o \",k);print}'"