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

سرور مجازی NVMe

عملیات پیشرفته فایل Bash

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


از فایل ها برای ذخیره سازی دائمی هر محتوایی در سیستم استفاده می شود که می تواند بعداً مورد استفاده قرار گیرد. Bash مانند سایر زبان های برنامه نویسی استاندارد تابع open() برای ایجاد، دسترسی و اصلاح فایل ندارد. اما یک فایل را می توان با استفاده از دستورات Bash و اسکریپت Bash به روش های مختلف ایجاد کرد یا به آن دسترسی داشت. دستورات زیادی در Bash برای دریافت جزئیات یک فایل، جستجو و جایگزینی محتوای فایل با استفاده از الگوی regex و حذف فایل وجود دارد. عملیات مختلف فایل در سطح پیشرفته در Bash در این آموزش نشان داده شده است.

فهرست مطالب:

  1. یک فایل جدید ایجاد کنید
  2. وجود یک فایل را بررسی کنید
  3. یک فایل را با استفاده از حلقه “For” بخوانید
  4. یک فایل را با استفاده از حلقه “While” بخوانید
  5. اندازه یک فایل را محاسبه کنید
  6. محتوا را به یک فایل اضافه کنید
  7. یک کپی از یک فایل تهیه کنید
  8. مکان فایل را جابجا کنید
  9. تعداد کل خطوط فایل را بشمارید
  10. جستجوی محتوا در یک فایل
  11. با استفاده از Regex محتوای یک فایل را جستجو و جایگزین کنید
  12. حذف یک فایل

یک فایل جدید ایجاد کنید

چندین راه در Bash برای ایجاد یک فایل جدید در Bash وجود دارد. فایل های جدید را می توان از terminal با استفاده از انواع مختلف ویرایشگرهای متن و رابط کاربری گرافیکی. روش ایجاد یک فایل جدید از terminal با استفاده از Bash “cat” و “echoدستورات ” در این قسمت از آموزش نشان داده شده است. سپس، ایجاد فایل با استفاده از ویرایشگر نانو نشان داده می شود.

برای ایجاد یک فایل متنی با نام “courses.txt” دستور زیر را اجرا کنید:

$ گربه > courses.txt

محتوای زیر را در قسمت تایپ کنید terminal:

نام کد

CSE-106 برنامه نویسی شی گرا

CSE-208 برنامه نویسی بصری

CSE-303 DBMS پیشرفته

CSE-407 برنامه نویسی یونیکس

Ctrl+d را فشار دهید تا نوشتن متوقف شود و به خط فرمان بروید.

اکنون دستور زیر را برای بررسی محتوای فایل اجرا کنید:

$ گربه courses.txt

عملیات پیشرفته فایل Bash

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

$ echo “این یک فایل آزمایشی است.” > test.txt

سپس دستور «cat» را اجرا کنید تا محتوای فایل «text.txt» را بررسی کنید.

خروجی زیر پس از اجرای دستورات قبلی ظاهر می شود:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

دستور زیر را اجرا کنید تا ویرایشگر نانو را برای ایجاد یک فایل متنی با نام “course-teacher.txt” باز کنید:

$ نانو course-teacher.txt

محتوای زیر را در ویرایشگر تایپ کنید:

معلم کد

CSE-208 سایما اکتر

CSE-303 محمودا فردوس

CSE-407 سابرینا سلطانا

برای ذخیره و خروج از ویرایشگر، “Ctrl+x” را فشار دهید.

برای بررسی محتوای فایل دستور زیر را اجرا کنید:

$ گربه course-teacher.txt

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

وجود یک فایل را بررسی کنید

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

#!/صندوقچه/bash

خواندن “نام فایل موجود را وارد کنید:” fn

# بررسی کنید که آیا فایل با داده وجود دارد یا خیر

اگر [ -f $fn ]

سپس

اگر [ -s $fn ]

سپس

در صورت خالی نبودن فایل پیامی را #چاپ کنید

echo $fn فایل وجود دارد و حاوی داده است.”

دیگر

در صورت خالی بودن فایل پیامی را #چاپ کنید

echo $fn فایل خالی است.”

فی

دیگر

در صورت نبود فایل پیامی #چاپ کنید

echo $fn فایل موجود نیست.”

فی

فایل “courses.txt” قبلا ایجاد شده است که حاوی داده ها است. بنابراین، اگر اسکریپت با نام فایل “courses.txt” اجرا شود، خروجی زیر ظاهر می شود:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

با توجه به خروجی زیر، فایل “t.txt” وجود دارد و فایل خالی است:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

با توجه به خروجی زیر، فایل “course.txt” در مکان فعلی وجود ندارد:

پیشنهاد می‌کنیم بخوانید:  Set –e در Bash چه می کند؟

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

یک فایل را با استفاده از حلقه “For” بخوانید

هر فایل موجود را می توان با استفاده از حلقه های مختلف در Bash خواند. اسکریپت زیر استفاده از حلقه “for” را برای خواندن محتوای یک فایل نشان می دهد که در آن نام فایل به عنوان command-line مقدار آرگومان متغیر IFS در اسکریپت برای شناسایی خط جدید فایل استفاده می شود. دستور “cat” در داخل حلقه “for” برای خواندن محتوای فایل خط به خط استفاده می شود. از متغیر “$counter” استفاده می شود print شماره خط با هر خط از فایل.

#!/صندوقچه/bash

#initialize نام فایل از command-line بحث و جدل

fn=1 دلار

شمارنده #آغازی کنید

پیشخوان=1

#جداکننده میدان داخلی را تنظیم کنید

IFS=$‘\n’

#فایل را خط به خط بخوانید

برای val که در $(گربه $fn)

انجام دادن

#هر خط از فایل را با شماره خط چاپ کنید

echo “خط-شمارنده $: $val

شمارنده را #افزایش دهید

((شمارنده ++))

انجام شده

با توجه به خروجی، دستور “cat” برای بررسی محتوای اصلی فایل “courses.txt” قبل از اجرای اسکریپت استفاده می شود. سپس، اسکریپت با دادن “courses.txt” به عنوان اولین مورد اجرا می شود command-line مقدار آرگومان

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

یک فایل را با استفاده از حلقه “While” بخوانید

اسکریپت زیر استفاده از حلقه “while” را برای خواندن محتوای یک فایل نشان می دهد که در آن نام فایل به عنوان command-line مقدار آرگومان متغیر “$counter” در این اسکریپت نیز استفاده می شود print شماره خط با هر خط از فایل.

#!/صندوقچه/bash

شمارنده را #راه‌اندازی کنید

پیشخوان=1

حلقه را تکرار کنید تا فایل را خط به خط بخوانید

در حالی که خواندن -r خط

انجام دادن

#هر خط را با شماره خط چاپ کنید

echo “خط-شمارنده $: خط $

شمارنده را #افزایش دهید

((شمارنده ++))

#نام فایل را از قسمت بخوانید command-line بحث و جدل

انجام شده < “$1”

خروجی اسکریپت ارائه شده مشابه مثال قبلی است.

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

اندازه یک فایل را محاسبه کنید

اندازه فایل را می توان به روش های مختلف با استفاده از اسکریپت Bash محاسبه کرد. در اسکریپت زیر از دستور “stat” با گزینه “-c” برای محاسبه حجم فایل بر حسب بایت استفاده می شود. نام فایل از کاربر گرفته شده است. اندازه فایل در صورت وجود و خالی بودن فایل چاپ می شود. در غیر این صورت پیغام خطا چاپ می شود.

#!/صندوقچه/bash

#نام فایل را از کاربر بگیرید

خواندن “نام فایل موجود را وارد کنید:” fn

اگر [ -s $fn ]

سپس

# حجم فایل را بشمارید

اندازه=$(آمار %س $fn)

#اندازه فایل را بر حسب بایت چاپ کنید

echo “اندازه $file فایل است اندازه دلار بایت.”

دیگر

echo “فایل وجود ندارد یا خالی است.”

فی

خروجی زیر پس از اجرای اسکریپت قبلی ظاهر می شود. در اینجا، حجم فایل “courses.txt” 153 بایت است:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

محتوا را به یک فایل اضافه کنید

عملگر “>>” در Bash برای اضافه کردن محتوای فایل استفاده می شود. فرض کنید باید یک خط جدید در فایل “courses.txt” با استفاده از ” اضافه کنید.echo” فرمان قبل و بعد از اجرای دستور “cat” را اجرا کنیدechoدستور ” که یک خط جدید در انتهای فایل “courses.txt” اضافه می کند.

$ گربه courses.txt

$ echo “ساختار داده CSE-202” >> courses.txt

$ گربه courses.txt

خروجی زیر پس از اجرای دستورات قبلی ظاهر می شود. یک خط جدید در انتهای فایل “courses.txt” اضافه می شود:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

یک کپی از یک فایل تهیه کنید

دستور cp برای ایجاد یک فایل جدید از یک فایل موجود استفاده می شود. اسکریپت زیر با کپی کردن محتوای فایل “courses.txt” یک فایل جدید به نام “courses_copy.txt” ایجاد می کند:

#!/صندوقچه/bash

#نام فایل مبدا و مقصد را تعریف کنید

منبع فایل=“courses.txt”

مقصد_فایل=“courses_copy.txt”

اگر [ -f $source_file ]

سپس

در صورت وجود #فایل را کپی کنید

cp $source_file $destination_file

echo “فایل با موفقیت کپی شد.”

دیگر

echo “Source فایل موجود نیست.”

فی

اگر فایل “copy.txt” در مکان فعلی وجود داشته باشد، خروجی زیر ظاهر می شود. سپس دستور “cat” برای بررسی اینکه آیا محتوای فایل به درستی کپی شده است یا خیر اجرا می شود:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

مکان فایل را جابجا کنید

دستور “mv” برای انتقال هر فایل از یک مکان به مکان دیگر استفاده می شود. دستورات زیر را برای بررسی محتوای فایل “courses_copy.txt” اجرا کنید، فایل را به محل “temp” منتقل کنید و بررسی کنید که آیا فایل با موفقیت جابجا شده است یا خیر:

$ گربه courses_copy.txt

پیشنهاد می‌کنیم بخوانید:  روش تغییر نام یک جلسه در Tmux

$ mv دمای courses_copy.txt

$ گربه دما/courses_copy.txt

خروجی زیر نشان می دهد که فایل “courses_copy.txt” با موفقیت به پوشه “temp” منتقل شده است:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

تعداد کل خطوط فایل را بشمارید

چندین دستور در Bash برای شمارش کل خطوط وجود دارد. در اسکریپت زیر از دستورات “wc”، “sed” و “awk” برای شمارش کل خطوط فایلی که از کاربر گرفته می شود استفاده می شود. اگر نام فایلی که از کاربر گرفته شده وجود نداشته باشد، یک پیغام خطا چاپ می شود.

#!/صندوقچه/bash

#نام فایل را از کاربر بگیرید

خواندن “نام فایل موجود را وارد کنید:” fn

اگر [ -s $fn ]

سپس

تعداد خطوط کل فایل را با استفاده از دستورات «wc»، «sed» و «awk» بشمارید

wc_lines=$(دستشویی < $fn)

sed_lines=$(sed -n ‘$=’ $fn)

awk_lines=$(بیخیال ‘پایان { print NR }’ $fn)

#چاپ خروجی دستورات مختلف

echo مجموع خطوط (WC): $wc_lines

echo مجموع خطوط (sed): $sed_lines

echo “خطوط کل (awk): $awk_lines

دیگر

در صورت عدم وجود یا خالی بودن فایل، پیامی را چاپ کنید

echo “فایل وجود ندارد یا خالی است.”

فی

خروجی زیر نشان می دهد که خروجی سه دستوری که در اسکریپت استفاده می شود یکسان است و فایل “courses.txt” شامل شش خط است:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

جستجوی محتوا در یک فایل

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

#!/صندوقچه/bash

#نام فایل را از کاربر بگیرید

خواندن “نام فایل موجود را وارد کنید:” fn

#کلمه جستجو را از کاربر بگیرید

خواندن “کلمه جستجو را وارد کنید:” src

اگر [ -s $fn ]

سپس

#کلمه خاص را در فایل جستجو کنید

خروجی=$(grep -من $src $fn)

اگر [ $output != “” ]

سپس

خروجی دستور grep را #چاپ کنید

echo خروجی $

فی

دیگر

در صورت نبود فایل پیامی #چاپ کنید

echo “فایل وجود ندارد یا خالی است.”

فی

خروجی زیر پس از اجرای اسکریپت با نام فایل “courses.txt” و کلمه جستجوگر CSE-208 ظاهر می شود. خط دوم فایل حاوی کلمه “CSE208” است:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

با استفاده از Regex محتوای یک فایل را جستجو و جایگزین کنید

دستور “sed” یکی از راه های جستجو و جایگزینی محتوای یک فایل در Bash است. در اسکریپت زیر روش جستجو و جایگزینی محتوای یک فایل با استفاده از دستور “sed” با گزینه “-i” نشان داده شده است. نام فایل، کلمه جستجو و کلمه جایگزین از کاربر گرفته شده است.

#نام فایل را بگیرید

خواندن “نام فایل موجود را وارد کنید:” fn

#کلمه جستجو را بگیرید

خواندن “کلمه جستجو را وارد کنید:” src

#کلمه جایگزین را بگیرید

خواندن “کلمه جایگزین را وارد کنید:” هرزه

اگر [ -s $fn ]

سپس

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

sed -من “s/$src/$rep/” $fn

دیگر

در صورت نبود فایل پیامی #چاپ کنید

echo “فایل وجود ندارد یا خالی است.”

فی

خروجی زیر را اجرا کنید تا محتوای فایل “courses.txt” را قبل و بعد از اجرای اسکریپت بررسی کنید:

$ گربه courses.txt

$ bash فایل 11.bash

$ گربه courses.txt

خروجی زیر نشان می دهد که کلمه جستجوی CSE-303 در فایل “courses.txt” وجود دارد و کلمه جایگزین CSE-307 جایگزین آن شده است:

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

حذف یک فایل

دستور “rm” برای حذف یک فایل در Bash استفاده می شود. این دستور با گزینه “-i” در اسکریپت زیر برای حذف یک فایل در صورت وجود استفاده می شود. در اینجا، نام فایل از کاربر گرفته شده است.

#!/صندوقچه/bash

# نام فایل را بگیرید

خواندن ‘نام فایل را وارد کنید:’ fn

# وجود فایل را بررسی کنید

اگر [ -f $fn ]; سپس

# فایل را حذف کنید

rm -من $fn

# بررسی کنید که آیا فایل حذف شده است یا خیر

اگر [ -e fn ]; سپس

echo “فایل حذف نشده است.”

دیگر

echo “فایل حذف شد.”

فی

دیگر

echo “فایل موجود نیست.”

فی

با توجه به خروجی، نام فایل “t.txt” در محل فعلی قرار دارد و پس از تایید فایل حذف می شود.

عملیات پیشرفته فایل Bashعملیات پیشرفته فایل Bash

برو به بالا

نتیجه

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

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

زمان انتشار: 1403-01-01 03:32:09

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

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

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