خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

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

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

این درس فرمانها زیر را به شما معرفی خواهد نمود:

  • cp - کپی فایلها و دایرکتوری‌ها
  • mv - جابجایی یا تغییر نام فایلها و دایرکتوری‌ها
  • rm - حذف فایلها و دایرکتوری‌ها
  • mkdir - ایجاد دایرکتوری‌ها

این چهار فرمان در میان فرمانهای لینوکس دارای رایج‌ترین مورد استفاده هستند. آنها فرمانهای اساسی برای دستکاری فایلها و دایرکتوری‌ها هستند.

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

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

[me@linuxbox me]$ cp -u *.html destination

کاراکترهای عام

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

خلاصه کاراکترهای عام و معنی آنها
کاراکتر عام معنی

*

با همه کاراکترها منطبق می‌گردد

?

با هر کاراکتر منفرد منطبق می‌شود

[characters]

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

کلاسهای کاراکتر 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 فایلها و دایرکتوری‌ها را کپی می‌کند. در این ساده‌ترین شکل، یک فایل واحد را کپی می‌کند:

[me@linuxbox me]$ cp file1 file2

همچنین می‌تواند برای کپی چندین فایل (و-یا دایرکتوری) به یک دایرکتوری متفاوت به کار برود:

[me@linuxbox me]$ cp file... directory

یک نکته در باره نشانه‌گذاری: ... حاکی از آن است که یک فقره می‌تواند یکبار یا بیشتر تکرار گردد.

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

مثالهای فرمان cp
فرمان نتایج
cp file1 file2

محتویات file1 را به file2 کپی می‌کند. اگر file2 موجود نباشد، ایجاد می‌شود، وگرنه , file2 به طور خاموش و بدون اعلام به وسیله محتویات file1 رونویسی می‌گردد.

cp -i file1 file2

مانند مورد فوق اگر چه، چون گزینه ‎-i‎ ‏(interactive) تعیین گردیده، در صوریتکه file2 موجود باشد، قبل از رونویسی با محتویات file1 کاربر به پاسخ‌گویی وادار می‌شود.

cp file1 dir1

محتویات file1 را (داخل فایلی به نام file1) در دایرکتوری dir1 کپی می‌کند.

cp -R dir1 dir2

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

mv

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

[me@linuxbox me]$ mv filename1 filename2

برای انتقال فایلها (و-یا دایرکتوری‌ها) به دایرکتوری متفاوت:

[me@linuxbox me]$ mv file... directory

مثالهایی از mv و گزینه‌هایش:

مثالهای فرمان mv
فرمان نتایج
mv file1 file2

اگر file2 موجود نباشد، آنوقت file1 به file2 تعییر نام داده می‌شود. اگر file2 موجود باشد، محتویاتش به طور خاموش و بدون اعلام با محتویات file1 رو نویسی می‌گردد.

mv -i file1 file2

مانند مورد فوق اما، چون ‎-i‎ ‏(interactive) تعیین گردیده است، اگر file2 موجود باشد، قبل از رونویسی با محتویات file1 کاربر به پاسخ‌گویی وادار می‌شود.

mv file1 file2 file3 dir1

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

mv dir1 dir2

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

rm

فرمان rm فایلها و دایرکتوری‌ها را پاک (حذف) می‌کند.

[me@linuxbox me]$ rm file...

همچنین می‌تواند برای حذف دایرکتوری‌ها به کار برود:

[me@linuxbox me]$ rm -r directory...

مثالهایی از rm و گزینه‌هایش:

مثالهای فرمان rm
فرمان نتایج
rm file1 file2

حذف file1 و file2.

rm -i file1 file2

مانند مورد فوق اما، ‎-i‎ ‏(interactive) تعیین گردیده است، قبل از اینکه هر فایل حذف گردد کاربر وادار به پاسخ‌گویی می‌شود.

rm -r dir1 dir2

دایرکتوری‌های dir1 و dir2 همراه با تمام محتویات آنها حذف می‌گردند.


با rm محتاط باشید!

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

قبل از اینکه rm را با کاراکترهای عام به کار ببرید، این شگرد سودمند را امتحان کنید: به جای آن فرمان‌تان را با استفاده از ls بسازید. با انجام این کار، می‌توانید تأثیر کاراکترهای عام به کار گرفته را قبل از حذف فایلها مشاهده کنید. پس از اینکه فرمان‌تان را با ls آزمایش کرده‌اید، فرمان را با کلید جهت-بالا فراخوانی کرده و سپس rm را در فرمان به جای ls جایگزین کنید.

mkdir

فرمان mkdir برای ایجاد دایرکتوری‌ها به کار می‌رود. برای استفاده از آن، به سادگی تایپ کنید:

[me@linuxbox me]$ mkdir directory...

استفاده از فرمانها با کاراکترهای عام

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

مثالهای فرمان با کاربرد کاراکترهای عام
فرمان نتایج
cp *.txt text_files

کپی تمام فایلهای دایرکتوری کاری فعلی که دارای نامهای ختم شده به کاراکترهای ‎.txt‎ هستند به یک دایرکتوری موجود به نام text_files

mv my_dir ../*.bak my_new_dir

انتقال دایرکتوری فرعی my_dir و تمام فایلهای دایرکتوری پدر دایرکتوری کاری جاری که نامشان به ‎.bak‎ ختم می‌شود به یک دایرکتوری موجود به نام my_new_dir

rm *~

حذف تمام فایلهای دایرکتوری جاری که به کاراکتر ~ ختم می‌گردند. برخی برنامه‌های کاربردی فایلهای پشتیبان را با استفاده از این طرحِ نام گذاری ایجاد می‌کنند. کاربرد این فرمان آنها را از دایرکتوری پاک می‌کند.