وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

اگر –e و –s و سایر اپراتورهای آزمایش فایل را Bash کنید

0 2
زمان لازم برای مطالعه: 5 دقیقه


در فایل‌های لینوکس، اپراتورهای آزمایشی برای بررسی ویژگی‌های مرتبط با یک فایل مانند: نویسنده فایل، حقوق مدیریت و مالکیت فایل استفاده می‌شوند و بررسی می‌کنند که آیا آنها Symlink هستند یا خیر. وقتی با فایل‌ها سروکار داریم، بررسی وجود آن‌ها و اینکه آیا محتوایی دارند یا نه برای این منظور ضروری است. یا اگر یک دستور همراه با عملگرهای تست استفاده شود.

عملگرهای تست فایل در bash نیز همانطور که از نام توضیح می‌دهد برای آزمایش فایل‌ها استفاده می‌شوند. با کمک این عملگرها، می‌توانیم جنبه‌های مختلف یک فایل را آزمایش کنیم، مانند اینکه آیا آن فایل فقط قابل نوشتن یا خواندن است. عملگرهای تست فایل زیادی وجود دارد و هر کدام نقش و کاربرد متفاوتی دارند. عملگرهای تست فایل به ما کمک می کنند تا از بروز خطا در حین اسکریپت نویسی در Bash جلوگیری کنیم. برای انجام این کار، از دستور if-else استفاده می کنیم. دستور if-else به عنوان یک ابزار بسیار مفید برای مدیریت خطا در برنامه نویسی Bash عمل می کند.

هدف عملگر “-e” این است که به ما بگوید آیا فایلی در دایرکتوری مشخص شده وجود دارد یا خیر. عملگر “-s” به ما می گوید که اندازه فایل صفر نیست، به این معنی که این عملگر به ما می گوید که آیا فایل موجود در فهرست مشخص شده حاوی داده ای است یا خیر. سایر اپراتورها به کار با فایل ها عادت دارند اما “-e” و “-s” مهم ترین آنها هستند و اغلب استفاده می شوند.

روش استفاده از اپراتورهای تست:

در این تصویر سعی خواهیم کرد از تمام عملگرهای تست برای انجام کارهای مختلف استفاده کنیم روی فایل ها

مثال شماره 1: با استفاده از اپراتور if –e Text

در این مثال، ما سعی خواهیم کرد از عملگر if –e test استفاده کنیم که عمدتاً برای بررسی وجود یا عدم وجود فایل در دایرکتوری استفاده می شود. حالا ابتدا یک فایل جدید ایجاد می کنیم.

linux@linux-Virtualbox:~$ نانو testoperator.sh

هنگامی که دستور بالا را اجرا می کنیم، فایل خالی را باز می کند و اکنون کدی را می نویسیم که در آن شرطی ایجاد می کنیم که فایل “employee.txt” وجود داشته باشد و دستور echo را که حاوی پیام “File exists” است نمایش دهد. در غیر این صورت، پیام “فایل وجود ندارد” را اجرا می کند. عامل آزمایش فایل حاوی محتوای ذکر شده در زیر خواهد بود.

#!/bin/sh
فایل=“employee.txt”
اگر [ -e $file ]
سپس

پیشنهاد می‌کنیم بخوانید:  چگونه یک فرمان را در Bash بدون تاخیر غیر ضروری زمان بندی کنیم

اکو “فایل وجود دارد”
دیگر

اکو “فایل وجود ندارد”
فی

پس از ذخیره فایل با استفاده از دستور bash، دستور زیر را اجرا می کنیم که فایل testoperator.sh را اجرا می کند.

linux@linux-Virtualbox:~$ ضربه شدید testoperator.sh

هنگامی که دستور بالا را اجرا می کنیم، کد فایل testoperator که اجرا می شود را می خواند و فایل موجود در فهرست اصلی را بررسی می کند. در این حالت ما هیچ فایلی در دایرکتوری نداریم، بنابراین خروجی زیر را اجرا کرد.

خروجی:

این فایل وجود ندارد

اکنون ابتدا یک فایل جدید با نام employee.txt ایجاد می کنیم. سپس دوباره دستور را اجرا کنید تا بررسی کنید که آیا فایل را شناسایی می کند یا خیر. همانطور که در زیر نشان داده شده است، این بار فایل در فهرست اصلی وجود دارد.

اگر –e و –s و سایر اپراتورهای آزمایش فایل را Bash کنید

حالا اجازه دهید دستور بالا را دوباره اجرا کنیم. این بار خروجی زیر را نمایش می دهد که در آن پیغام وجود دارد.

خروجی:

فایل وجود دارد

مثال شماره 2: با استفاده از عملگر متن if –d

در این مثال، ما اپراتور آزمایشی دیگری را امتحان خواهیم کرد که عملگر “-d” است که برای بررسی اینکه آیا فایلی که بررسی می کنیم یک دایرکتوری است یا نه استفاده می شود. این بار، یک دایرکتوری جدید ایجاد می کنیم که نام آن را “employee” گذاشته ایم، همانطور که در قطعه زیر مشاهده می شود.

اگر –e و –s و سایر اپراتورهای آزمایش فایل را Bash کنیداگر –e و –s و سایر اپراتورهای آزمایش فایل را Bash کنید

اکنون فایل “testoperator.sh” را تغییر می دهیم که در آن نام فایل “employee.txt” را به “employee” تغییر می دهیم. سپس عملگر “-d” را در دستور if به همراه “$file” که واکشی می‌شود، ارسال کنید. و با تغییر پیامی که به عنوان خروجی نمایش داده می شود، فایل را ذخیره می کنیم. اکنون فایل “testoperator.sh” حاوی محتوای زیر است.

#!/bin/sh
فایل=“کارمند”
اگر [ -d $file ]

سپس
پژواک”کارمند یک دایرکتوری است
دیگر
پژواک”
کارمند یک دایرکتوری نیست
فی

پس از تغییر “testoperator.sh”، دستور bash را به همراه نام فایل اجرا خواهیم کرد:

linux@linux-Virtualbox:~$ ضربه شدید testoperator.sh

هنگامی که دستور بالا اجرا می شود، خروجی نشان داده شده در زیر را نمایش می دهد که در آن پیامی را چاپ می کند:

خروجی:

کارمند یک دایرکتوری است

مثال شماره 3: استفاده از عملگر متن if –s

در این مثال، ما سعی خواهیم کرد از عملگر “-s” استفاده کنیم که برای بررسی اینکه آیا فایل حاوی محتوایی است یا خیر. برای آن، ما از فایلی که قبلا ایجاد شده است استفاده خواهیم کرد که در مثال 1 با نام “employee.txt” استفاده کردیم. اجازه دهید ابتدا فایل testoperator.sh را تغییر دهیم که در آن گزینه “-s” را به همراه نام فایل به دستور if خود منتقل می کنیم و فایل “employee.txt” را اختصاص می دهیم. همچنین پیامی که به عنوان خروجی نمایش داده می شود را تغییر می دهد.

#!/bin/sh
فایل=“employee.txt”
اگر [ -d $file ]

پیشنهاد می‌کنیم بخوانید:  چگونه می توانم مجوز شل اسکریپت رد شده در لینوکس را برطرف کنم؟

سپس
پژواک”staff.txt خالی است
دیگر
پژواک”
staff.txt خالی نیست
فی

حال فایل “testoperator.sh” را ذخیره و می بندیم و دستور ذکر شده در زیر را در فایل اجرا می کنیم terminal.

linux@linux-Virtualbox:~$ ضربه شدید testoperator.sh

هنگامی که دستور بالا اجرا می‌شود، عبارت else را اجرا می‌کند زیرا staff.txt حاوی محتوا است. بنابراین، دستور echo دستور then را نادیده می گیرد.

خروجی:

staff.txt خالی نیست

اکنون، ما محتوا را از “employee.txt” حذف می کنیم و سپس دوباره دستور را اجرا می کنیم. هنگامی که دستور بالا یک بار دیگر اجرا می شود، پیغام سپس دستورات را نمایش می دهد زیرا حاوی محتوایی در آن نیست. مثال زیر خروجی دستوری است که پس از حذف محتوای فایل اجرا کردیم.

خروجی:

staff.txt خالی است

مثال شماره 4: با استفاده از عملگر متن if –r

در این مثال، یک عملگر آزمایشی دیگر که “-r” است را پیاده سازی خواهیم کرد. این عملگر برای بررسی اینکه آیا فایل برای کاربر قابل خواندن است یا خیر استفاده می شود. برای این کار، فایل testoperator.txt را با جایگزینی عملگر “-d” با “-r” تغییر می دهیم. همچنین پیام خروجی را تغییر می دهد که در صورت خواندن فایل است. پیغام employee.txt قابل خواندن است و اگر فایل قابل خواندن نباشد عبارت else را نمایش می دهد. اکنون، “testoperator.txt” حاوی محتوای زیر است:

#!/bin/sh
فایل=”employee.txt”
اگر [ -r $file ]
سپس

اکو “employee.txt قابل خواندن است”
دیگر

اکو «ploy.txt قابل خواندن است»
فی

حال دستور زیر را برای اجرای کد نوشته شده در داخل آن اجرا می کنیم.

linux@linux-Virtualbox:~$ ضربه شدید testoperator.sh

پس از اجرای دستور بالا، خروجی نمایش داده شده در زیر چاپ می شود روی را terminal.

خروجی:

staff.txt قابل خواندن است

نتیجه

ما در مورد مهمترین بخش سیستم پرونده، اپراتورهای آزمون بحث کرده ایم. هنگام کار با فایل ها، اپراتورهای آزمایشی ضروری ترین ابزار ارائه شده توسط بسته های لینوکس هستند. پس از معرفی هدف عملگرهای تست با پیاده سازی این عملگرها در مثال های مختلف به توضیح آنها پرداختیم.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-29 08:17:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید