گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

ریزنمرات آز شبکه


در صورتیکه تمرینی را تحویل داده اید ولی نمره برایش منظور نشده، از طریق ایمیل اطلاع دهید


تغییر در نمرات صرفا در سیستم سما اعمال خواهد شد



ردیف شماره دانشجوئی مبانی میان ترم تمرین 1 تمرین 2 تمرین 3 تمرین 4 فعالیت کلاسی آزمون پایانی نمره کل
1 9718302002 3 2.75 2 3.5 2 1 1 3 18.25
2 9718302022 2.25 3 2 3.5 2 1 1 3 17.75
3 9718302024 2.25 2.5 2 3 1.75 1 1 3 16.5
4 9718302030 2.5 3 2 3.5 1.75 1 1 3 17.75
5 9718302032 1.75 2.75 1.25    
1 غ 6.75
6 9718302036 2 3 2 2 1.25 1.75 1 3 16
7 9718302038 2.25 2.25 2 3.5 1.75 1 1 2 15.75
8 9718302040 2.5 2.75 2 3.5 1.5 1 1 3 17.25
9 9718302050 2.25 3 1.25 3.5 1.5 1 1 3 16.5
10 9718302052 2.25 2.75 2 4 1.75 1 1 3 17.75
11 9718302054 2 2.75 2 4 1.75 1 1 3 17.5
12 9718302055 2 2.75 2 4 1.75 1 1 3 17.5
13 9718302056 3 3 2 0 1.75 0 1 3 13.75
14 9718302060   1.5 2 2.5   0 1 3 10
15 9718302062 2.5 2.5 1.25 3.5 1.25 1 1 3 16
16 9718302064 2 3 2 3.5 1.75 1 1 3 17.25
17 9718302066 3 3 2 3.5 1.75 1 1 2 17.25
  9718302070 3 3 2 2.5 1.25 1 1 2 15.75
18 9718302072 0.75 2.5   3.5   2 1 3 12.75
19 9718302080 2.25 2.75 1.25   1.75
1 2.5 11.5
20 931831251   غ 2
1.75
1 3 7.75
21 9718302094 2.25 3 2 3 1.75
1 3 16
22 9718302100 2 2 2 2.5  
1 3 12.5
23 9718302104 2.25 2 2 3 1.75 1 1 3 16
24 9718302112 2.5 3 2 2.25 1.25 1 1 3 16
25 961830289 2 2.5 2 4 1.5 1 1 3 17



ردیف شماره دانشجوئی مبانی میان ترم تمرین 1 تمرین 2 تمرین 3 تمرین 4 فعالیت کلاسی آزمون پایانی نمره کل
1 9718302004 1.25 3 1 1.5 1 0.5 1 3 12.25
2 9718302008 2.25 3 2 3.5   1 1 3 15.75
3 9718302010 1.75 2.5 1.25 3.5 2 1 1 3 16
4 9718302012 1.5 2 1.25 1.5 1.75 1 1 3 13
5 9718302016 2 3 2 3.5 1.75 1 1 3 17.25
6 9718302018 2.25 3 2 3.5 1.75 1 1 3 17.5
7 9718302020 2.75 3 1 3.5 1.75 1 1 3 17
8 9718302042 1.25 3 2 3.5 1.75 1 1 3 16.5
9 9718302044 2 3 2 4 1.75 1 1 3 17.75
10 9718302046 2.25 3 2 3.5 1.25 1 1 3 17
11 9718302074 1.5 2.75 2 3.5 1.25 1 1 3 16
12 9718302082 2.25 2.5   2.5     1 3 11.25
13 9718302084 1.75 3 2 3 2 1 1 3 17.25
14 9718302086 1.75 2.5 1 3.5 1.25 1 1 3 15
15 9718302088 1.75 2.5 2 4 2 1 1 3 17.25
16 9718302090 2 3 1.25 2.5   1 1 3 13.75
17 9718302096 2.5 3 1.5 4 1.25 1 1 3 17.25
18 9718302110 1.25 3 1.25 3.5 1.75 2 1 3 16.75
19 9718302118 2.25 3 1.5 3.5 1.75 1 1 3 17
20 9718302114 1.25 3 2 2 1.75   1 2.5 13.5
21 9718302122 2.5 3   2.5     1 3 12
22 9718302124 1.25 3 0.5 4 1.75 1 1 3 15.5
23 9718302126 1.5 3 2 4 1.25 2 1 2.5 17.25





























































































































































































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

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

 

هسته ی  لینوکس اغلب درست و یا به صور ت کامل شناخته و درک نمی شود، از این رو  برای کمک به همه ما می توانیم بر اساس برخی از اصول اولیه، سراغ هسته برویم و به شما در درک بهتر چیزها کمک کنیم.

کلیت :‌

هنگامی که سیستم بوت می شود ، چندین اتفاق میوفتد تا سیستم عامل بالا بیاید و بار گذاری شود .

روند بوت در شش مرحله زیر انجام می شود :

1.      سیستم ورودی / خروجی پایه (BIOS)

2.      مستر بوت رکورد (MBR)

3.      GRand Unified Bootloader (GRUB)

4.      هسته لینوکس

5.      init

6.      سطح اجرا

 

سیستم ورودی / خروجی پایه BIOS

 

BIOS یک سیستم عامل است که در هنگام فعال بودن سیستم، مقداردهی اولیه سختافزار را انجام می دهد. بایوس مقداردهی و تست سخت افزار سیستم را آغاز می کند. و حاوی اطلاعات کافی برای بارگیری درایور برای صفحه کلید و گاهی اوقات یک ماوس است. هنگام ورود به تنظیمات BIOS شما می توانید از صفحه کلید و شاید موس برای ذخیره تنظیمات خاص در CMOS استفاده کنید.

در تنظیمات BIOS  ( CMOS) دستور بوت دستگاه است . . کنترل به ترتیب اولویت به هر دستگاه بوت منتقل می شود. هر دستگاه برای یک ( Master Boot Record (MBR  بررسی خواهد شد. هنگامی که یکی از آنها یافت می شود BIOS کنترل را به دستگاه MBR منتقل می کند..

 

مستر بوت رکورد (MBR)

 

رکورد (Master Boot (MBR از لحاظ فنی در بعضی موارد لازم نیست، اما MBR یک بخش بوت است که در ابتدای یک دیسک ثابت یا قابل جابجایی قرار گرفته است. MBR شامل داده هایی است که سیستم را در مورد پارتیشن ها در یک دیسک اطلاع دهد. همچنین کد اجرایی است که لودر (لودر بوت) است. نه همه پارتیشن ها حاوی یک لودر بوت هستند و اگر بوت لودر وجود نداشته باشد سیستم عامل بارگیری نخواهد شد. MBR بدون کد اجرایی یا بوت لودر وجود خواهد داشت. MBR و بوت لودر را اشتباه نگیرید.

 

GRand Unified Bootloader (GRUB)

 

اولین مرحله از بوت لودر در MBR قرار می گیرد که لودر اصلی را که در یک پارتیشن boot (/ boot) نصب می شود قرار می دهد. GRUB، اگر پیکربندی شده برای انجام این کار، یک منو را نشان می دهد و به شما اجازه می دهد تا کنترل را به یک هسته خاص منتقل کنید. این ویژگی به سیستم اجازه می دهد چندین سیستم عامل نصب شده بر روی آن داشته باشد. فایل پیکربندی GRUB در '/boot/grub/grub.conf' ذخیره می شود.

 

به یاد داشته باشید که ممکن است موارد  چندگانه برای یک سیستم عامل مشابه وجود داشته باشد. هر ورودی می تواند گزینه هایی را به هسته منتقل کند که می تواند سیستم عامل را بارگیری کند یا تشخیص دهد. هنگامی که یک آیتم منو انتخاب می شود یا پیش فرض پذیرفته می شود، کنترل به Kernel مشخص منتقل می شود.

 

 

هسته

هنگامی که هسته کنترل ریموت دیجیتالی اولیه (initrd) را به عنوان یک فایل موقت ریشه به کار می گیرد تا زمانی که کرنل بوت شود. پس از بارگذاری Kernel، سیستم فایل ریشه واقعی را نصب می کند. محل فایل سیستم ROOT از GRUB منتقل شده دارای گزینه 'root =' است. هسته به عنوان رانندگان برای دسترسی به پارتیشن های دیسک سخت و همچنین برخی از سخت افزار های دیگر. رانندگان کامپایل شده در Kernel اجازه می دهد آن را برای نصب سیستم های فایل دیگر.

 

سپس کرنل '/ sbin / init' را اجرا می کند.

 

Init  :

 

از آنجا که "init" اولین برنامه بارگذاری شده توسط هسته است، آن را ID فرایند (PID) از 1 خواهد داشت.

 

برنامه 'init' فایل '/ etc / inittab' را برای تعیین سطح لینوکس اجرا می کند. پس از بررسی، برنامه ها در سطوح مشخص شده بارگذاری می شوند.

 

سطح اجرا :

 

سطح اجرا به شرح زیر است:

0 - توقف

1 - حالت کاربر تنها

2 - چند کاربره، بدون NFS

3 - حالت چند نفره کامل

4 - استفاده نشده است

5 - X11

6 - راه اندازی مجدد

برنامه های تنظیم شده برای شروع خودکار در زمان بوت شدن می توانند در یکی از موارد زیر یافت شوند:

 

اجرای سطح 0 - /etc/rc.d/rc0.d/

اجرای سطح 1 - /etc/rc.d/rc1.d/

اجرای سطح 2 - /etc/rc.d/rc2.d/

اجرای سطح 3 - /etc/rc.d/rc3.d/

اجرای سطح 4 - /etc/rc.d/rc4.d/

اجرای سطح 5 - /etc/rc.d/rc5.d/

اجرای سطح 6 - /etc/rc.d/rc6.d/

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

Runlevel

 

اطلاعات بیشتر درباره هسته :

از اطلاعات قبلی در هسته شما باید یک درک اولیه از آن را برای دریافت سیستم در حال اجرا است داشته باشید .

 

هنگامی که سیستم در حال اجرا است، کرنل کنترل نرم افزار و سخت افزار را دارد. هیچ دسترسی به سخت افزار به طور مستقیم با یک برنامه انجام نمی شود و یا مناقشات رخ می دهد. اگر دو برنامه دسترسی به هارد درایو داشته باشند و آن را به حقوق منحصر به فرد قفل کنند، هیچ برنامه دیگری برای دسترسی به هارد درایو نیست. برنامه های کاربردی توابع از کتابخانه سیستم عامل. کتابخانه مجموعه ای از دستورالعمل ها است که معمولا در C نوشته شده و توانایی های لازم را در برنامه ها مدیریت می کند. به عنوان مثال، یک تابع می تواند یک فایل را از هارد دیسک درخواست کند.

سپس تابع کتابخانه System Calls را ایجاد می کند. تماس های سیستم به هسته ساخته شده است که به نوبه خود اطلاعات درخواست شده را ارائه می دهد. به عنوان مثال، اگر تابع نیاز به یک فایل داشته باشد، کتابخانه تماس سیستم را برای باز کردن یک فایل، خواندن فایل و بستن فایل در صورت انجام انجام خواهد داد. هسته عملیات فایل را انجام می دهد و داده هایی را که از فایل خواندند را باز می گرداند.

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

برای دیدن فهرست های سخت افزاری خاص، لیست زیر را بررسی کنید:

 

lspci - دستگاه PCI

lsusb - دستگاه های USB

lsblk - دستگاه های بلوک (دستگاه هایی که از آنها بلوک های داده را می خوانید)

lscpu - اطلاعات پردازنده

lsdev - دستگاه های دیگر سیستم

lsipc - اطلاعات در ارتباطات فرآیند (توانایی فرایندهای برقراری ارتباط با یکدیگر)

lslogins - یک نام کاربری را مشخص کنید و اطلاعات مربوط به ورود کاربر را بدست آورید

lsinitramfs - فایل initram را مشخص کرده و محتویات نمایش داده می شود

lslocks نشان میدهد که سیستم توسط هسته قفل شده است .

lsof - لیست فایلهای باز (البته توسط سیستم فرا خوانده شده)

اگر ترمینال را باز کرده و 'lshw' را اجرا کنید، می توانید فهرستی از سخت افزار شناخته شده توسط هسته را مشاهده کنید. برای دریافت گرافیکی بهتر می توانید دستور 'lshw -html> hardware.html' را اجرا کنید و سپس فایل جدید را با مرورگر باز کنید زیرا خروجی در فرمت HTML است.

تمام دستورات نمی توانند به فرمت HTML ارسال شوند. اکثر برنامه های ذکر شده تنها به متن استاندارد ارسال می شوند. با استفاده از برخی دستورات می توانید گزینه '-v' را برای ارائه جزئیات بیشتر و یا اطلاعات عمیق استفاده کنید. مانند دستور 'lsusb'. شما می توانید از دستور 'lsusb -v' برای دیدن اطلاعات دقیق تر در مورد سخت افزار USB استفاده کنید. بعضی از این دستورات اطلاعات بیشتری را تولید می کنند اگر شما آن را با امتیازات ROOT اجرا کنید.

 

RamDisk اولیه (initrd)

 

فایل initrd در پوشه '/ boot' یافت می شود و نامی با initrd.img- شروع می شود. بخش باقی مانده از نام شماره نسخه است. اگر دستور 'ls / boot / initrd.img-' را اجرا کنید، فهرستی از تمام فایل های initrd در سیستم را مشاهده خواهید کرد. البته تنها یک مورد استفاده می شود. سایر فایل های ذکر شده ممکن است نسخه های قبلی باشند که به یک نسخه جدید به روز شده اند. اگر لیستی از بیش از یک فایل وجود داشته باشد، می توانید تعیین کنید کدام یک با استفاده از دستور uname -r استفاده شود. نسخه ذکر شده، هسته است. نتایج دستور 'uname -r' بقیه نام فایل است.

 

برای مثال، اگر فرمان "uname -r" را اجرا کردم و پاسخ "4.4.0-79-generic" را دریافت کردم، نام فایل initrd.img-4.4.0-79-generic است.

اگر می خواستید محتویات فایل initrd را ببینید، می توانید دستور 'lsinitramfs' را با نام فایل اجرا کنید. مثالی است lsinitramfs /boot/initrd.img-4.4.0-79-generic است. همانطور که ممکن است حدس بزنید، فایل initrd فشرده شده است تا بتوان آن را سریعتر خواند.

فایل initrd را اصلاح و یا حذف نکنید یا سیستم ممکن است بوت شود.

 

فایل هسته در پوشه ی مشابه با initrd قرار دارد و با vmlinuz شروع می شود. پایان نام فایل، شماره نسخه هسته است که توسط دستور uname -r ارائه شده است.

برای مثال، از بالا، نتیجه فرمان uname-r '4.4.0-79-generic' بود. نام پرونده هسته 'vmlinuz-4.4.0-79-generic' برای دیدن اطلاعات در مورد فایل هسته می توانید دستور 'ls -l vmlinuz- *' را اجرا کنید. فایل را برای نسخه فعلی فعلی خود پیدا کنید و می توانید اندازه فایل را ببینید.

 

ضروری است که هسته بدون اطلاع از آنچه شما انجام می دهید و یا سیستم ممکن است بوت نکنید حذف یا اصلاح نمی شود.

 

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


تهیه شده توسط  :‌ 951830237

ریزنمرات کارگاه کامپیوتر


در صورتیکه تمرینی را تحویل داده اید ولی نمره برایش منظور نشده، از طریق ایمیل اطلاع دهید


تغییر در نمرات صرفا در سیستم سما اعمال خواهد شد



گروه 1832

ردیف شماره دانشجوئی basis
3pts
midterm
3pts
a1
2pts
a2
4pts
a3
2pts
a4
2pts
class
 activities         
1pt
final
3pts
grade
20pts
1 9718302002 3 2.75 2 3.5 2 1 1 3 18.25
2 9718302022 2.25 3 2 3.5 2 1 1 3 17.75
3 9718302024 2.25 2.5 2 3 1.75 1 1 3 16.5
4 9718302030 2.5 3 2 3.5 1.75 1 1 3 17.75
6 9718302036 2 3 2 2 1.25 1.75 1 3 16
7 9718302038 2.25 2.25 2 3.5 1.75 1 1 2 15.75
8 9718302040 2.5 2.75 2 3.5   1 1 3 15.75
9 9718302050 2.25 3 1.25 3.5   1 1 3 15
10 9718302052 2.25 2.75 2 4 1.75 1 1 3 17.75
11 9718302054 2 2.75
4 1.75 1 1 3 15.5
12 9718302055 2 2.75
4 1.75 1 1 3 15.5
13 9718302056 3 3 2 0 1.75 0 1 3 13.75
14 9718302060   1.5 2 2.5   0 1 3 10
15 9718302062 2.5 2.5 1.25       1 3 10.25
16 9718302064 2 3 2 3.5 1.75 1 1 3 17.25
17 9718302066 3 3 2 3.5 1.75 1 1 2 17.25
 18  9718302070 2   2       1 2 7
19 9718302072 0.75 2.5       2 1 3 9.25
20 9718302080 2.25 2.75 1.25   1.75   1 2.5 11.5
21 931831251   غ 2
 
1.75   1 3 7.75
22 9718302094 2.25 3 2 3 1.75   1 3 16
23 9718302100 2 2 2 2.5     1 3 12.5
24 9718302104 2.25 2 2 3     1 3 13.25
25 9718302112 2.5 3 2 2.25   1 1 3 14.75
26 961830289 2 2.5 2 4 1.5 1 1 3 17



گروه 1833


ردیفشماره دانشجوئیbasis
3pts
midterm
3pts
a1
2pts
a2
4pts
a3
2pts
a4
2pts
class
 activities         
1pt
final
3pts
grade
20pts
1 9718302004 1.25 3 1 1.5 1 0.5 1 3 12.25
2 9718302008 2.25 3 2 3.5   1 1 3 15.75
3 9718302010 1.75 2.5 1.25 3.5 2 1 1 3 16
4 9718302012 1.5 2 1.25 1.5 1.75 1 1 3 13
5 9718302016 2 3 2 3.5 1.75 1 1 3 17.25
6 9718302018 2.25 3 2 3.5 1.75 1 1 3 17.5
7 9718302020 2.75 3 1 3.5 1.75 1 1 3 17
8 9718302042 1.25 3 2 3.5   1 1 3 14.75
9 9718302044 2 3 2 4 1.75 1 1 3 17.75
10 9718302046 2.25 3 2 3.5 1.25 1 1 3 17
11 9718302074 1.5 2.75 2 3.5 1.25 1 1 3 16
12 9718302082 2.25 2.5   2.5     1 3 11.25
13 9718302084 1.75 3 2 3 2 1 1 3 16.75
14 9718302086 1.75 2.5 1 3.5   1 1 3 13.75
15 9718302088 1.75 2.5   4 2 1 1 3 15.25
16 9718302090 2 3 1.25 2.5   1 1 3 13.75
17 9718302096 2.5 3 1.5 4 1.25 1 1 3 17.25
18 9718302110 1.25 3 1.25 3.5 1.75 2 1 3 16.75
19 9718302118 2.25 3 1.5 3.5 1.75 1 1 3 17
20 9718302114 1.25 3   2 1.75   1 2.5 11.5
21 9718302122 2.5 3         1 3 9.5
22 9718302124 1.25 3 0.5 4 1.75 1 1 3 15.5
23 9718302126 1.5 3 2 4 1.25 2 1 2.5 17.25











































































































































































































































































بازی های لینوکس


شاید برای شما هم این سوال پیش آمده باشد که آیا لینوکس قابلیت اجرای بازی ها را  دارد یا خیر؟

در واقع لینوکس توانایی اجرای بازی ها را دارد اما همه بازی ها برای لینوکس در دسترس نیستند.

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

اما با این حال تقریبا تمام سرورهای ساخت و رندر بازی ها از لینوکس استفاده می کنند.

به طور کلی به چهارطریق میتوان از لینوکس  برای بازی ها استفاده کرد.


1. بازی های لینوکسی

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

هر توسعه لینوکس در ریپوزیتوری خود قسمتی برای دانلود این بازی ها را دارد.

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

Steam

GOG

Portable Linux Games

Game Drift

Linux Game Database

Penguspy



2. بازی های ویندوزی

به کمک بعضی از ابزارها میتوان برنامه ها و بازی های ویندوزی را روی لینوکس اجرا کرد.

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

Wine

Crossover

Play On Linux



3. بازی های مرورگر

بازی هایی هستند که از مرورگر وب به عنوان پلتفرم برای اجرای بازی های آنلاین استفاده می کنند.

مرورگرهایی مانند گوگل کروم توانایی پشتیبانی از بازی های آفلاین را نیز دارند.



4. بازی های ترمینال

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

برای مثال در این پست نحوه اجرای بازی snake در ترمینال بیان شده است.

از منابع بازی های ترمینال میتوان به TTY Games اشاره کرد.



آخرین اخبار در مورد بازی های لینوکس را میتوانید از سایت های زیر دنبال کنید:

Gaming On Linux

Free Gamer

Linux Game News



منابع:

https://itsfoss.com/linux-gaming-guide



92353140

دانشجوی مهمان


پیدا کردن فایل های تکراری، و حذف آنها

احتمالاً  برایتان پیش آمده است که در یک دایرکتوری،  یک یا چند کپی از یک فایل داشته باشید.  

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

برای شروع، ابتدا وارد ترمینال شوید و دستور زیر را وارد کنید تاوارد دایردکتوری دسکتاپ شوید:

cd ~/Desktop

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

touch DuplicateFileFinder

chmod 755 DuplicateFileFinder

حال کافیست با برنامه ی Gedit (یا هر برنامه ی  متنی  دلخواه دیگر  ) آن را باز کرده و شروع به نوشتن کد کنیم. برای این کار از دستور زیر استفاده کنید:

gedit DuplicateFileFinder

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

پنجره gedit باز شده و آماده کد زدن است.


شرح الگوریتم:

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


در این مرحله، برنامه تعداد کل فایل های دایرکتوری را دریافت می‌کند



#! /bin/bash

cd ~/Desktop/dup 

# می توانید به دایرکتوری دلخواهی را برای جستوجو تغییر دهید


numberOfTotalFiles=0

for file in *; do

if [ -f $file ]; then

numberOfTotalFiles=$((numberOfTotalFiles+1))

fi

done



در این مرحله، که مرحله اصلی می‌باشد، طبق الگوریتم گفته شده عمل می‌کند:


# دریافت همه فایل ها یا دایرکتوری و ذخیره نام آنها در یک آرایه

files=(*) 

for i in $(seq 0 $((numberOfTotalFiles-1))); do

# بررسی این که فایل مربوطه موجود می‌باشد یا نه

if [ -f ${files[$i]} ]; then 

# ذخیره محتویات فایل اول

contentOfFirstFile="$(cat ${files[$i]})" 

for j in $(seq $((i+1)) $((numberOfTotalFiles-1))); do

if [ -f ${files[$j]} ]; then

 # ذخیره محتویات فایل دوم

contentOfSecondFile="$(cat ${files[$j]})"

# بررسی این که فایل مربوطه موجود می‌باشد یا نه

if [ "$contentOfFirstFile" = "$contentOfSecondFile" ]; then 

echo "${files[$j]} is duplicate. do you want to remove it? (y/...)"

read ans

if [ "$ans" = "y" ]; then

# حذف فایل

rm ${files[$j]} 

fi

fi

fi

done

fi

done

exit 0


در آخر با دستور زیر فایل را اجرا کنید:
./DuplicateFileFinder


تهیه شده توسط ۹۵۱۸۳۰۲۴۳