کدنگار

وبلاگ شخصی-آموزشی علی رشیدی

کدنگار

وبلاگ شخصی-آموزشی علی رشیدی

طبقه بندی موضوعی
پیوندهای روزانه
پیوندها

آموزش Linux Essentials - قسمت هشتم

سه شنبه, ۸ تیر ۱۳۹۵، ۰۷:۳۹ ب.ظ

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

کلاس‌های کاراکتری

یک الگوی جستجوی دیگر کلاس کاراکتر است، الگوی جستجوی زیر را در نظر بگیرید:

prog[123].c
کاراکتر هایی که درون براکت قرار دارند یک به یک جایگزین کل براکت میشوند. مثلاً الگوی جستجوی بالا با فایل‌های
prog1.c
prog2.c
prog3.c

مطابقت میکند. اما با فایل‌های زیر خیر:
1. prog.c
2. prog4.c
3. proga.c
4. prog12.c
۱. دقیقاً یک کاراکتر بعد از prog و قبل از c. نیاز است.
۲. ۴ معرفی نشده است.
۳. a نیز معرفی نشده است
۴. فقط یک کاراکتر مورد نظر است نه دو تا

یک روش دیگر استفاده از کلاس‌های کاراکتری، به کارگیری «محدوده ها» است. به این صورت:

prog[1-9].c
[A-Z]log.txt

در خط اول، به جای کل براکت هر رقم دلخواه و در خط دوم، هر حرف بزرگ انگلیسی قرار میگیرد. اکنون به بررسی مثال‌های بیشتری میپردازیم:

prog[A-z].c
این الگو علاوه بر اینکه نام هایی مانند progB.c و progx.c را شامل میشود، به نام فایلی مانند prog_.c نیز اشاره میکند. علت آن نیز ترتیب کاراکتر ها در جدول اسکی است. برای مشاهده این جدول میتوانید man ascii را در ترمینال وارد کنید. اگر بخواهیم الگویی بنویسیم که حروف کوچک و بزرگ را در برگیرد به جای الگوی قبل مینویسیم:

prog[A-Za-z].c
یک روش دیگر استفاده از کلاس‌های کاراکتر وارونه (Negated Character Classes) است. میتوانید آنرا به صورت «هر کاراکتری به جز» بخوانید. مثلا:

prog[!A-Za-z].c
تمامی فایل‌هایی را در برمیگیرد که کاراکتری که بین g و . قرار میگیرد جزء حروف الفبا نباشد.

براکت ها

عبارات براکت دار مانند عبارت زیر:

{red,yellow,blue}.txt
توسط شل به صورت نام سه فایل مجزا در نظر گرفته میشود:

red.txt   yellow.txt  blue.txt
توجه داشته باشید که براکت ها از یک نظر مانند کلاس‌های کاراکتری و الگو ها عمل نمیکنند، و این تفاوت در آن است که در استفاده از براکت ها، وجود فایل مهم نیست. برای مثال در مثال قبل، اگر فایل blue.txt وجود نداشته باشد باز هم شل جا به جایی را انجام میدهد. این نکته در مواردی مانند مثال زیر به کار میرود:

mkdir -p python/{first,third,second}Project

پوشه ی python را ایجاد و درون آن سه پوشه به نام firstProject، secondProject و thirdProject ایجاد میکند.


تمرین

۱. دایرکتوری فعلی (دایرکتوری که در آن قرار داریم) شامل فایل‌های زیر است:

prog.c prog1.c prog2.c progabc.c prog
p.txt p1.txt p21.txt p22.txt p22.dat

برای هر کدام از الگوهای جستجوی زیر، کدام فایل‌ها صدق میکنند؟

a) prog*.c	b) prog?.c	c) p?*.c	d) p[12]*	e) p*	f) *.*

۲. تفاوت ls و * ls چیست؟ (میتوانید هر دو را در یک دایرکتوری که شامل چند زیرشاخه است امتحان کنید)

عملیات مربوط به فایل‌ها

کپی، انتقال و حذف

برای کپی کردن فایل‌ها از دستور cp استفاده میکنیم. این کار به دو روش انجام پذیر است:
اگر به cp دو آرگومان بدهید، که یکی از آن‌ها نام فایل مبدأ و دیگری نام فایل مقصد باشد، در این صورت یک کپی یک به یک صورت میگیرد. توجه داشته باشید که در صورت وجود داشتن فایلی با همین نام در مقصد، به شما هشداری داده نمیشود و فایل بازنویسی میشود. برای جلوگیری از آن از آپشن -i استفاده میکنیم. دستور زیر فایل new.txt را از مسیر جاری به پوشه Documents کپی میکند:

$ cp new.txt Documents
در این مثال نام فایل مقصد را مشخص نکرده‌ایم بنابراین فایل با همان نام قبلی خود به پوشه ی Documents کپی میشود. اما با مشخص کردن نام فایل مقصد مانند مثال زیر، نام فایل پس از کپی تغییر میکند:

$ cp new.txt Documents/1.txt
روش دوم استفاده از cp این است که نام چندین فایل را به عنوان مبدأ بدهید و یک دایرکتوری را نیز به عنوان مقصد بدهید (آرگومان اول تا یکی مانده به آخر نام فایل‌های مبدأ و آرگومان آخر دایرکتوری مقصد است) همچنین میتوانید یک کلاس کاراکتری یا الگوی جستجو را نیز ارائه کنید.
برای انتقال فایل یا تغییر نام آن از دستور mv استفاده میشود. این دستور نام فایلی را به عنوان آرگومان اول میگیرد و به فایلی با نامی که توسط آرگومان دوم مشخص شده است انتقال میدهد:

$mv new.txt 1.txt
این دستور فایل new.txt را به فایل 1.txt در همان مسیر انتقال میدهد، یا به بیان ساده‌تر تغییر نام میدهد. این دستور نیز مانند cp فایل‌های از قبل موجود را رونویسی میکند.
برای حذف فایل‌ها نیز از rm استفاده کنید. دقت کنید که این دستور سطل ذباله ای نمیشناسد و فایل‌ها را برای همیشه حذف میکند!

$ rm list*
تمامی فایل‌هایی را که نامشان با list شروع می‌شود حذف میکند. اگر بخواهید قبل از حذف هر فایل به شما هشدار دهد:

$ rm -i list*
rm: remove 'list'?
rm: remove 'list2.txt'
خط‌های دوم و سوم هشدار های این فرمان هستند که با فشردن y حذف فایل را تأیید و با فشردن n از حذف فایل جلوگیری میکنید.
برای حذف یک دایرکتوری و تمام زیر شاخه‌های آن از آپشن r- استفاده کنید این آپشن دایرکتوری های خالی را فقط حذف میکند. برای حذف تمامی زیر شاخه ها rf- را به کار برید
  • موافقین ۰ مخالفین ۰
  • ۹۵/۰۴/۰۸
  • ۱۹۴ نمایش
  • علی رشیدی

Linux

آموزش لینوکس

لینوکس

نظرات (۱)

  • محمدمهدی باقری
  • سلام دوست عزیز
    با یه پوستر که مرتبط با همین شب هاست به روزم
    دعوتت میکنم بیای و ببینی و نظرت رو راجع بش بهم بگی و اگر هم خوشت اومد لایک کنی و اگر هم نیومد دیس لایک
    راستی اگر ما رو دوس داشتی دنبالمون کن
    اینم لینک پوستر : 
    http://sarbaz0.blog.ir/post/1389
    http://sarbaz0.blog.ir
    امیدوارم دعوتمو بپذیری
    منتظرتم
    یا علی مدد
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی