منبع اصلی نوشتار زیر در این لینک قرار دارد

چک کردن پرمیشن فایل در Bash Script

سلام دوستان . می دونیم که برای چک کردن پرمیشن یک فایل خیلی ساده میشه از دستور ls استفاده کرد و یا برای بررسی دقیق تر از دستور stat استفاده کرد . اما نکته ای که وجود داره اینه که این دستورات معمولا زمانی استفاده میشن که پشت ترمینال یک لینوکس نشده باشیم و تمامی کار ها و دستورات رو خودمون وارد کنیم اما زمانی که بخوایم این کارها و دستورات رو به یک برنامه واگذار کنیم، یکم نحوه نوشتن کد و دستوراتی که باید استفاده کنیم متفاوت میشه .

در واقع میشه گفت دستوراتی مثل ls یا stat برای کاربر در نظر گرفته شده اند چرا که خروجی بسیار خوانا دارند اما طبیعتا یک برنامه برای چک کردن پرمیشن یک فایل نیازی به خروجی خوانا و با جزییات ندارد.

بحثی که امروز می خواهیم دنبال کنیم بسیار ساده هست و می دونید که برای چک کردن پرمیشن یک فایل از چه روش هایی باید استفاده کرد اما همین حکم رو در داخل bash script دنبال می کنیم چرا که طبیعتا در داخل یک برنامه نمیشه از دستوری مثل ls یا stat استفاده کرد.

برای این منظور از دستور test استفاده می کنیم که به صورت پیشفرض خروجی برای ما چاپ نمی کند ( چرا که قصد استفاده در اسکریپت رو داریم ) . به مثال زیر توجه کنید :

iman@OSLearn:~$ test -w /etc/passwd

نکته : از سویچ w- برای بررسی پرمیشن نوشتن استفاده کردیم .

همین دستور رو می توان به شکل زیر استفاده کرد :

iman@OSLearn:~$ [ -w /etc/passwd ]

قبلا به خروجی درست و غلط برنامه ها اشاره کردیم پس می توان دستور بالا رو به شکل زیر استفاده کرد :

iman@OSLearn:~$ test -w /etc/passwd && echo "Writable" || echo "Not Writable"

نکته : در دستور بالا از logical and & logical or استفاده کردیم . برای آشنایی بیشتر با این مفاهیم به این آموزش مراجعه کنید .

 

میشه حدس زد وقتی سویچ w- نقش چک کردن پرمیشن نوشتن رو بازی می کنه، پس در نتیجه سویچ x- نقش چک کردن پرمیشن اجرا رو بر دوش داره و البته همین طور سویچ r- جهت پرمیشن خواندن .

چک کردن دو پرمیشن دیگه دقیقا مثل مراحل بالاست. حالا اجازه بدید برنامه ای رو آماده کنیم که فایل مورد نظر رو از کاربر بگیره و پرمیشن اون فایل رو برامون نمایش بده .

#!/bin/bash
# http://OSLearn.ir

test -w $1 && echo 'ejaze edit darad'
test -r $1 && echo 'ejaze khandan darad'
test -x $1 && echo 'ejaze ejra darad'

حال کافیه برنامه خودمون رو به شکل زیر اجرا کنیم :

iman@OSLearn:~$ ./test.sh /etc/passwd

خروجی گرفته شده :

ejaze khandan darad

 

منبع : او اس لرن دات آی آر | http://OSLearn.ir

نویسنده : E2MA3N

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید . برای دونیت روی خرید کلیک کنید . با تشکر



برچسب ها : , , , , , , , ,