آموزش خط فرمان لینوکس - قسمت پنجم
در خدمتتون هستم با قسمت جدید. اینجا بد نیست به خوانندگان این پستها و کلا علاقهمندهای لینوکس یادآوری کنم که این سری از پستهای من صرفا ترجمه مطالب سایت linuxcommand.org است و شما میتونید این مطالب رو از همون جا دنبال کنید.
دستکاری فایلها
این درس شما رو با دستورات زیر آشنا میکند:
دستور cp- برای کپی کردن فایلها و شاخهها
دستور mv- برای تغییر نام و یا جابجایی فایلها و شاخهها
دستور rm- برای پاک کردن فایلها و شاخهها
دستور mkdir- برای ساخت شاخهها
این چهار دستور از پرکاربردترین دستورات لینوکس و دستورات پایهای برای دستکاری و تغییر فایل و شاخهها هستند.
باید صریحا بگویم که تعدادی از کارهایی که این دستورات برای ما انجام میدهند خیلی سادهتر از طریق رابط کاربری و یک مدیر فایل قابل انجام هستند. با استفاده از یک مدیر فایل به سادگی میتوانید فایلها را از شاخهای به شاخهی دیگر بکشید، آنها را ببرید و بچسبانید یا از بین ببرید یا خیلی کارهای دیگر، اما چرا باید از این دستورات قدیمی در لینوکس استفاده کنیم؟!
پاسخ این سوال قدرت و انعطافپذیری این دستورات است. با اینکه دستکاریهای ساده در فایلها به سادگی در مدیر فایل قابل انجام هستند، کارهای پیچیدهتر در خط فرمان با این دستورات، سادهتر از رابط گرافیکی صورت میگیرند. برای مثال وقتی میخواهیم فقط فایلهایی با فرمت html را به شاخهی دیگری انتقال دهیم، اما فقط آنهایی که در شاخهی مقصد موجود نیستند یا نسخهی قدیمی آنها در آنجا موجود است، با استفاده از رابط گرافیکی این کار خیلی زمانبر و سخت است، اما با یک دستور خط فرمان این کار قابل انجام است:
cp -u *html destination
کاراکترهای ویژه
قبل از اینکه بخواهم راجع به دستورات این بخش توضیح دهم، میخواهم راجع به امکانی در شل صحبت کنم که این دستورات را خیلی قدرتمند ساخته است. در حالیکه شل مدام از نام فایلها استفاده میکند، از کاراکترهای ویژهای پشتیبانی میکند که به شما برای مشخص کردن گروهی از فایلها کمک میکند. این کاراکترها را کاراکترهای ویژه مینامیم. (واقعا ترجمهی سلیسی برای wildcard پیدا نکردم!) کاراکترهای ویژه به ما اجازه میدهند تعدادی فایل را از میان انبوهی از فایلها بر اساس الگوی خاصی در نامهای آنها انتخاب کنیم. جدول زیر، کاراکترهای خاص و آنچه را که آنها انتخاب میکنند لیست کرده است:
کاراکتر ویژه | معنی و مفهوم | ||||||||||
* | تطابق با هر نوع از کاراکترها | ||||||||||
? |
تطابق با هر کاراکتر تکی |
||||||||||
[characters] |
تطابق با هر کاراکتری که عضوی از مجموعهی characters محسوب میشود. مجموعهی کاراکترها میتواند به صورت یک کاراکتر POSIX هم بیان شود که میتواند یکی از موارد زیر باشد:
|
||||||||||
[!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 که مخفف 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