بلاگ
دسامبر 11
آموزش کامند MV

آموزش کامند MV

درست مانند دستور cp که برای کپی کردن و   rm که برای حذف کردن فایل ها بکار می رود، لینوکس یک دستور داخلی (in-built command)، برای جابجایی و تغییر نام فایل ها دارد به نام mv. در این مقاله، با استفاده از مثال‌های قابل درک، اصول اولیه در کاربرد این دستور را مورد بحث قرار می‌دهیم و به آموزش کامند mv در لینوکس می پردازیم. توجه داشته باشید که تمام نمونه های استفاده شده در این آموزش بر روی Ubuntu 20.04 LTS تست شده اند.

دستور mv  لینوکس

همانطور که قبلا ذکر شد،در آموزش کامند mv در لینوکس به آموزش دستور mv به منظور جابجایی یا تغییر نام فایل ها می پردازیم. نحوه  نوشتن  دستور بصورت زیر است:

 

و این چیزی است که man page در مورد آن می گوید:

 

مثال های زیر که به سبک پرسش و پاسخ در آموزش کامند mv در لینوکس آمده است، به شما دید بهتری از نحوه عملکرد این دستور می دهد.

Q1. چگونه از دستور mv در لینوکس استفاده کنیم؟

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

 

مثلا:

 

به طور مشابه، برای انتقال یک فایل به مکان جدید، از دستور mv به روش زیر استفاده می کنیم:

مثلا:

Q2. چگونه ازprompt  mv ها قبل از رونویسی مطمئن شویم؟

به‌طور پیش‌فرض، زمانی که عملیات شامل بازنویسی یک فایل موجود می‌شود، فرمان mv، prompt ندارد. به عنوان مثال، اسکرین شات زیر نشان می‌دهد که full_names.txt موجود توسط mv بدون هیچ اخطار یا اطلاعی، بدون prompt  بازنویسی شده است.

با این حال، اگر بخواهید، می توانید mv را با استفاده از گزینه -i command-line مجبور کنید تا منتظر دریافت دستور از کاربر بماند.

بنابراین اسکرین شات های بالا به وضوح نشان می دهند که -i باعث می شود که قبل از بازنویسی فایل، از کاربر درخواست مجوز کند. لطفاً توجه داشته باشید که اگر می‌خواهید صریحاً مشخص کنید که نمی‌خواهید mv برای دستور کاربر منتظر بماند، از دستور f- استفاده کنید.

Q3. چگونه کاری کنیم که mv یک فایل موجود را بازنویسی نکند؟

برای این کار باید از فرمان n- استفاده کنید.

تصویر زیر نشان می‌دهد که عملیات mv موفقیت‌آمیز نبود، زیرا فایلی با نام “full_names.txt” از قبل وجود داشت و در دستور گزینه n- وجود داشت.

توجه داشته باشید:

اگر بیش از یکی از -i، -f، -n را بکار ببرید، فقط آخرین مورد اعمال می‌شود.

Q4. چگونه mv را وادار کنیم که اسلش های انتهایی (در صورت وجود) را از آرگومان منبع حذف کند؟

برای حذف هر گونه اسلش انتهایی از آرگومان های منبع، از  فرمان -strip-trailing-slashes– به شکلی که در زیر نشان داده شده استفاده کنید.

در اینجا  اسناد رسمی مفید بودن این گزینه را توضیح میدهند:

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

Q5. چگونه موجودیت نهایی توسط دستور mv را به یک فایل معمولی تبدیل کنیم؟

برای اطمینان از اینکه موجودیت مقصد به عنوان یک فایل معمولی (و نه یک فهرست) در نظر گرفته می شود، از گزینه -T command line- استفاده کنید.

متن زیر دلیل وجود فرمان line- را بررسی می کند:

می تواند برای جلوگیری از به وجود آمدن شرایط رقابتی در برنامه هایی که در یک منطقه مشترک عمل می کنند کمک کند. به عنوان مثال، هنگامی که فرمان mv  /tmp/source  /tmp/dest انجام می شود، هیچ تضمینی وجود ندارد که   /tmp/sourceبه /tmp/dest تغییر نام دهد، میتوانست به جای آن به   /tmp/dest/source تغییر نام دهد اگر فرآیند دیگری انجام شود و  /tmp/dest  را به عنوان یک دایرکتوری تولید کند. با این حال اگر mv -T /tmp/source /tmp/dest موفق شود دیگر هیچ شکی نیست که /tmp/source به /tmp/dest تغییر نام می دهد.

Q6. چگونه می توان کاری کرد کهmv   فقط فایلهایی را جا به جا که از فایل مقصد جدیدتر باشد؟

فرض کنید فایلی به نام fullnames.txt در دایرکتوری دانلودهای سیستم شما وجود دارد و فایلی با همین نام در دایرکتوری اصلی شما وجود دارد. اکنون می خواهید ~/Downloads/fullnames.txt را با ~/fullnames.txt به روز رسانی کنید اما فقط به شرطی که دومی جدیدتر باشد. پس، در این مورد، باید از گزینهu command-line- استفاده کنید.

 این گزینه مخصوصاً در مواردی مفید است که باید چنین تصمیماتی را از داخل اسکریپت پوسته بگیرید. این فرمان وقتی مفید است که چنین تصمیماتی را باید از داخل shell script (اسکریپت پوسته) بگیرید.

Q7. چگونه می‌توان کاری کرد که mv جزئیات کارهایی را که انجام می‌دهد منتشر کند؟

اگر می‌خواهید mv اطلاعات دقیق کاری که انجام می دهد را به عنوان خروجی بدهد، از گزینه -v command-line استفاده کنید.

برای مثال، اسکرین شات‌های زیر نشان می‌دهد که mv جزئیات مفیدی از آنچه دقیقاً انجام داده است منتشر می‌کند.

Q8. چگونه mv را مجبور به ایجاد یک نسخه پشتیبان از فایل های مقصد موجود کنیم؟

این کار را می توانید با استفاده از گزینه -b command-line انجام دهید. فایل پشتیبان که با این روش ایجاد شده، نامی مشابه با فایل مقصد خواهد داشت، اما یک tilde (~) به آن اضافه شده است. به این مثال توجه کنید:

نتیجه

همانطور که تا به حال متوجه شده اید، mv به اندازه cp و rm برای عملکردی که ارائه می دهد مهم است – گذشته از همه این ها تغییر نام و انتقال فایل ها یکی از عملیات اساسی است ما اکثر دستور ها در این زمینه را در آموزش کامند mv در لینوکس مورد بحث قرار داده ایم. حال نوبت شماست که آنها را تمرین کنید و شروع به استفاده از دستور کنید. برای اطلاعات بیشتر در مورد mv، بهpage  man آن سر بزنید.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

دیدگاه نوشتن

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *