سلام. باز هم خیلی طول کشید تا وقت کنم یک قسمت جدید از آموزش شل رو ترجمه/تایپ کنم. به هر حال خودمم این بی‌نظمی رو دوست ندارم.

در خدمتتون هستم با قسمت جدید. اینجا بد نیست به خوانندگان این پست‌ها و کلا علاقه‌مندهای لینوکس یادآوری کنم که این سری از پست‌های من صرفا ترجمه مطالب سایت linuxcommand.org است و شما می‌تونید این مطالب رو از همون جا دنبال کنید.

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

این درس شما رو با دستورات زیر آشنا می‌کند:

دستور cp- برای کپی کردن فایل‌ها و شاخه‌ها

دستور mv- برای تغییر نام و یا جابجایی فایل‌ها و شاخه‌ها

دستور rm- برای پاک کردن فایل‌ها و شاخه‌ها

دستور mkdir- برای ساخت شاخه‌ها

این چهار دستور از پرکاربردترین دستورات لینوکس و دستورات پایه‌ای برای دستکاری و تغییر فایل و شاخه‌ها هستند.

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

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

cp -u *html destination

کاراکترهای ویژه

قبل از اینکه بخواهم راجع به دستورات این بخش توضیح دهم، می‌خواهم راجع به امکانی در شل صحبت کنم که این دستورات را خیلی قدرتمند ساخته است. در حالیکه شل مدام از نام فایل‌ها استفاده می‌کند، از کاراکتر‌های ویژه‌ای پشتیبانی می‌کند که به شما برای مشخص کردن گروهی از فایل‌ها کمک می‌کند. این کاراکتر‌ها را کاراکتر‌های ویژه می‌نامیم. (واقعا ترجمه‌ی سلیسی برای wildcard پیدا نکردم!) کاراکتر‌های ويژه به ما اجازه می‌دهند تعدادی فایل‌ را از میان انبوهی از فایل‌ها بر اساس الگوی خاصی در نام‌های آنها انتخاب کنیم. جدول زیر، کاراکتر‌های خاص و آنچه را که آنها انتخاب می‌کنند لیست کرده است:

 

کاراکتر‌ ويژه معنی و مفهوم
* تطابق با هر نوع از کاراکتر‌ها
?

تطابق با هر کاراکتر تکی

[characters]

تطابق با هر کاراکتری که عضوی از مجموعه‌ی characters محسوب می‌شود. مجموعه‌ی کاراکتر‌ها می‌تواند به صورت یک کاراکتر POSIX هم بیان شود که می‌تواند یکی از موارد زیر باشد:

 

[:alnum:]

کاراکتر‌های الفبایی و رقم‌ها

 

[:alpha:]

کاراکتر‌های الفبایی

 

[:digit:]

رقم‌ها

 

[:upper:]

حروف بزرگ

 

[:lower:]

حروف کوچک

 

[!characters]

تطابق با هر کاراکتری که عضو مجموعه‌ی characters نباشد.

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

 

الگو مفهوم

 

* همه‌ی نام‌ها

 

g* نام‌هایی که با حرف g شروع می‌شوند.

 

b*.txt

نام‌هایی که با حرف b شروع شده و به حروف txt. خاتمه می‌یابند.

 

Data???

همه‌ی فایل‌هایی که با عبارت Data شروع شده و دقیقا ۳ کاراکتر بعد از آنها می‌آیند.

 

[abc]*

هر فایلی که نام آن با یکی از سه کاراکتر a، b و c شروع می‌شوند.

 

[[:upper:]]*

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

 

BACKUP.[[:digit:]][[:digit:]]

هر فایلی که نام آن با عبارت BACKUP شروع شده و به دنبال آن دقیقا دو رقم بیاید.

 

*[![:lower:]]

هر فایلی که نام آن با حرف کوچک پایان نپذیرد.

شما می‌توانید کاراکتر‌های ويژه را با هر دستوری که نام فایل‌ها را به عنوان ورودی می‌گیرد استفاده کنید.

دستور cp

برنامه‌ی cp فایل‌ها و شاخه‌ها را کپی می‌کند. در ساده‌ترین فرمش، یک فایل را کپی می‌کند:

cp file1 file2

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

cp file1 file2 file3 directory

مثال‌های مفید دیگر در مورد دستور cp و امکاناتش در زیر آمده است:

 

دستور

نتیجه

cp file1 file2

محتویات file1 را در file2 کپی می‌کند. اگر فایل دوم وجود نداشته ساخته می‌شود در غیر این صورت file2 با محتویات file1 جایگزین می‌شود.

 

cp -i file1 file2

مانند قبلی با این تفاوت که سوییچ i- به معنی interactive به آن اضافه شده است. اگر فایل دوم موجود باشد، از کاربر برای جایگزین شدن اطلاعاتش با فایل اول سوال می‌شود.

 

cp file1 dir1

محتویات file1 را درون شاخه‌ی dir1 با همان نام کپی می‌کند.

 

cp -R dir1 dir2

محتویات شاخه‌ی dir1 را کپی می‌کند. در صورتی که dir2 وجود نداشته باشد، ساخته می‌شود. در غیر این صورت یک شاخه به نام dir1 درون شاخه‌ی dir2 ساخته می‌شود.

دستور mv

دستور mv دو کار متفاوت را با توجه به شیوه‌ی استفاده شدن از آن انجام می‌دهد. این دستور هم می‌تواند یک فایل یا بیشتر را به شاخه‌ی دیگری منتقل کند، یا می‌تواند یک فایل یا شاخه را تغییر نام دهد. برای تغییر نام، دستوری شبیه دستور زیر اجرا می‌شود:

mv filename1 filename2

برای انتقال فایل‌ها به شاخه‌ی دیگر:

mv file1 file2 file3 directory

تعدادی مثال از دستور mv و امکاناتش:

 

دستور نتیجه
mv file1 file2

اگر file2 وجود نداشته باشد، file1 به file2 تغییر نام پیدا می‌کند. اگر file2 موجود باشد، محتویاتش با محتویات file1 جایگزین می‌شود.

 

mv -i file1 file2

مانند مثال قبل، اما با سوییچ interactive

 

mv file1 file2 file3 dir1

فایل‌های file1 و file2 و file3 به شاخه‌ی directory انتقال داده می‌شوند. dir1 باید وجود داشته باشد وگر نه یک خطا برمی‌گردد.

 

mv dir1 dir2

اگر شاخه‌ی dir2 وجود نداشته باشد، شاخه‌ی dir1 به dir2 تغییر نام می‌دهد، در غیر این صورت شاخه‌ی اول درون شاخه‌ی دوم ساخته می‌شود.

دستور rm

دستور rm که مخفف remove است، فایل‌ها یا شاخه‌ها را پاک می‌کند.

rm file

همچنین می‌تواند برای پاک کردن یک شاخه مورد استفاده قرار گیرد:

rm -r directory

مثال‌هایی از rm و امکاناتش در جدول زیر آمده‌ است:

 

دستور

نتیجه

 

 

rm file1 file2

فایل‌های file1 و file2 را پاک می‌کند.

Delete file1 and file2.

 

rm -i file1 file2

مانند مثال قبل اما برای پاک کردن هر فایل از کاربر تایید می‌گیرد. (interactive است.)

 

rm -r dir1 dir2

شاخه‌های dir1 و dir2 به همراه همه‌ی زیرشاخه‌هایشان پاک می‌شوند.

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

وقتی دستور rm را با کاراکتر‌های خاص استفاده می‌کنید، از این حقه‌ی کمکی استفاده کنید: ابتدا با دستور ls فایل‌هایی را که با کاراکتر‌های خاص فیلتر می‌شوند، ببینید، بعد به جای ls از rm استفاده کنید.

دستور mkdir

دستور mkdir برای ساخت شاخه‌ها مورد استفاده قرار می‌گیرد. برای استفاده از به سادگی تایپ کنید:

mkdir directory_name

=-=-=-=-=
Powered by Blogilo