خط فرمان سرور لینوکس یک ابزار بسیار قدرتمند است که از طریق آن میتوانید تقریباً تمام عملکردهای رابط گرافیکی را از طریق آن انجام دهید. برای کسانی که به تازگی از این سیستم عامل استفاده میکنند، آشنایی با عملکرد خط فرمان ترمینال لینوکس بسیار کاربردی خواهد بود. یکی از قابلیتهای ساده و کاربردی، امکان کپی ساده فایلها یا دایرکتوریها از طریق دستور cp در لینوکس است. همانطور که میدانید، سیستم عامل لینوکس توزیعهای متعددی دارد که اوبونتو (Ubuntu) یکی از محبوبترین و شناخته شدهترین توزیعهای آن است. از این رو، در ادامه این مطلب هر آنچه درباره نحوه استفاده از دستور cp در لینوکس اوبونتو لازم است بدانید را همراه با مثالهایی از اجرای این دستور که در توزیع اوبونتو انجام شده، بررسی میکنیم.
دستور cp چیست؟
راههای مختلفی برای کپی و جایگذاری محتوا در کامپیوتر وجود دارد اما معمولاً اکثر ما روشهای ساده و سریعتر را انتخاب میکنیم. یکی از روشهای کپی کردن، این است که از ماوس استفاده کرده و با کلیک راست روی فایل مورد نظر و سپس انتخاب گزینه “Copy”، به محلی که میخواهید فایل را در آن جاگذاری کنید رفته و سپس آن را “Paste” کنید. اما آیا میدانید که در لینوکس میتوانید این کار را بدون خروج از ترمینال (Terminal) انجام دهید؟
این کار از طریق یکی از دستورات لینوکس به نام کد دستور cp قابل انجام است. با این دستور میتوانید فایلهای مختلف را از یک مکان به مکان دیگری در کامپیوتر خود انتقال دهید. علاوهبراین، از این کد دستور میتوانید برای کپی کردن دایرکتوریها یا پوشهها نیز استفاده کنید.
سینتکس دستور cp در لینوکس اوبونتو به شکل زیر است:
1 | cp [...file/directory-sources] [destination] |
در این کد، قسمت [file/directory-sources] مشخص کننده منابع فایلها یا دایرکتوریهایی است که قصد دارید آن را کپی کنید. آرگومان [destination] نیز مکانی که فایل کپی شده در آن جایگذاری میشود را نشان میدهد. در ادامه، انواع روشهای استفاده از دستور cp در لینوکس را بررسی میکنیم.
1.نحوه انجام کپی اولیه
برای نحوه استفاده از دستور cp در لینوکس اوبونتو بسیار ساده است. تنها کافی است منبع و مقصد فایل مورد نظر را تعیین کنید. برای مثال، با کد زیر میتوانید فایل “file1” را در لیست دسکتاپ خود کپی کنید:
1 | cp file1 ~/Desktop |
2.نحوه آماده کردن cp قبل از دوبارهنویسی (Overwriting)
اگر در جایی که قرار است فایل کپی شده در آن قرار گیرد، قبلاً فایلی به همان نام وجود داشته باشد، دستور cp لینوکس فایل را بدون هیچ هشدار یا اعلانی کپی میکند. اما میتوانید با استفاده از یک دستوری مجزا، فایل را بهگونهای کپی کنید که این اتفاق رخ ندهد. این کار با استفاده از فعال کردن گزینه -i در زمان استفاده از کد cp انجام داد.
برای مثال، کدی که برای جلوگیری از دوبارهنویسی فایل “file 1” در لینوکس باید استفاده کنید، مشابه کد زیر است:
1 | cp -i file1 ~/Desktop/ |
همانطور که در تصویر بالا میبینید، استفاده از گزینه -i باعث میشود که دستور cp در لینوکس اوبونتو از شما سوال کند که آیا قصد کپی کردن فایل با همین نامی که از قبل موجود است را دارید یا خیر.
3.نحوه هدایت cp برای عدم بازنویسی یک فایل موجود
گاهی به هر دلیلی نمیخواهیم که دستور cp در لینوکس یک فایل موجود را دوباره کپی و بازنویسی کند. این در حالتی است که نخواهیم از روش قبلی که توضیح دادیم استفاده کنیم. در چنین مواقعی، میتوانید از خط فرمان -n استفاده کنید.
برای مثال، در هنگام کپی کردن فایل “” از کد زیر استفاده میکنیم:
1 | cp -n file1 ~/Desktop/ |
لازم است به این نکته توجه کنید که با استفاده از خط فرمان -n گزینه -i که قبلاً توضیح دادیم لغو میشود. یعنی حتی اگر -i را همراه با -n استفاده کرده باشید، کد دستوری در حالت i- اجرا نمیشود.
4.نحوه کپی دایرکتوریها با استفاده از دستور cp در لینوکس
دستور cp لینوکس به طور پیشفرض تنها فایلها را کپی میکند و اگر بخواهید یک دایرکتوری را کپی کنید، با خطای “cp: omitting directory” مواجه خواهید شد. اما برای کپی دایرکتوری از طریق دستور cp در لینوکس اوبونتو نیز راهکاری جداگانهای وجود دارد و تنها کافی است از گزینه خط فرمان -r استفاده کنید. برای مثال، کد زیر را باید برای کپی وارد کنید:
1 | cp -r dir ~/Desktop |
5.نحوه ایجاد لینک نمادین (Symbolic Link) با دستور cp
لینکهای سمبلیک نوع خاصی از فایلهای متنی هستند که به فایل یا پوشه هدف اشاره میکنند. با استفاده از دستور cp لینوکس میتوان یک لینک نمادین ایجاد کرد. برای این کار، باید از خط فرمان -s استفاده کنید که کد دستور آن مشابه کد زیر است:
1 | cp -s ~/htf-daily/file1 ~/Desktop/ |
6.چگونه فایل مورد نظر را تنها در صورتی که جدیدتر باشد، بازنویسی کنیم؟
گاهی اوقات، تنها زمانی به بازنویسی فایل موجود نیاز داریم که فایل مورد نظر جدیدتر باشد. برای مثال، فرض کنید که میخواهیم فایل “file1” را که در یک دایرکتوری دیگر قرار دارد، در دسکتاپ کپی کنیم اما در دسکتاپ، قبلاً فایلی به همین نام وجود دارد؛ و تنها در صورتی میخواهیم کپی را انجام دهیم که مبدأ فایل، از مقصد آن جدیدتر باشد. این روند معمولاً برای مواقعی که قصد داریم یک فایل را بروزرسانی کنیم، کاربرد دارد. برای این کار، باید از خط فرمان -u مشابه کد زیر استفاده کنیم:
1 | cp -u file1 ~/Desktop |
7.راهکار عدم دنبال کردن لینکهای نمادین در منبع توسط دستور cp
دستور cp به شکل پیشفرض لینکهای سمبلیک را در منبع دنبال میکند. یعنی زمانی که قصد داریم یک فایل لینک نمادین را به فایل دیگری کپی کنیم، به شکل پیشفرض روند کپی روی فایلی انجام میشود که لینک سمبلیک به آن اشاره دارد.
بیایید این روند را با یک مثال بررسی کنیم. فرض کنید که فایل ~/Desktop/file1 یک لینک نمادین به ~/htf-daily/file1 بوده و ما میخواهیم ~/Desktop/file1 را در ~/Downloads کپی کنیم؛ اما فایل ~/htf-daily/file1 در آنجا کپی میشود.
برای این کار میتوانید از گزینه خط فرمان -P در دستور cp در لینوکس اوبونتو استفاده کنید که از cp میخواهد تا لینکهای نمایدن را در منبع دنبال نکند. یعنی برای مثال ذکر شده، کد به شکل زیر خواهد بود:
1 | cp -P ~/Desktop/file1 ~/Downloads/ |
8.چگونه تنها ویژگیهای یک فایل را با دستور cp در لینوکس کپی کنیم؟
در برخی مواقع، نیازی نداریم که محتوای یک فایل را کپی کنیم بلکه تنها لازم است که ویژگیهای آن مانند نویسنده، زمان و … را کپی کنیم. این قابلیت نیز با استفاده از دستور cp در لینوکس اوبونتو وجود داشته و میتوان آن را با استفاده از گزینه –attributes-only در خط فرمان و به همراه گزینه –preserve اجرا کرد.
برای مثال، فرض کنید که فایل “file1” ویژگیهای زیر را دارد،
1 | -rw-rw-r-- 1 root himanshu 97 Jun 14 17:18 file1 |
و ویژگیهای فایل “file2” نیز به شکل زیر است:
1 | -rw-rw-r-- 1 root himanshu 179 May 25 15:09 file2 |
برای این که ویژگیهای فایل دوم را کپی کرده و آنها را برای فایل اول نیز داشته باشید، میتوانید از کد زیر استفاده کنید:
1 | cp --attributes-only --preserve file2 file1 |
در تصویر زیر میتوانید ببینید که این دستور چگونه به اجرا درآمده است:
سخن پایانی
لینوکس یک سیستم عامل بسیار کاربردی و محبوب است که بسیاری از افراد از آن استفاده میکنند. خط فرمان لینوکس استفاده ساده و سریعتر از این سیستم عامل را فراهم میکند و یکی از قابلیتهای کاربردی آن، دستور cp در لینوکس برای کپی فایل یا دایرکتوریهای مختلف است. در این مطلب سعی کردیم تا گزینههای اساسی و بسیار مفید دستور cp در لینوکس را بررسی کنیم. همانطور که میبینید، استفاده از دستور cp در لینوکس اوبونتو نه تنها ساده است، بلکه نسبت به روشهای معمول بسیار کاربردیتر و سریعتر خواهد بود.
سؤالات متداول
1- چگونه در ترمینال لینوکس cp کنیم؟
برای کپی کردن یک فایل، cp و نام فایلی را که باید کپی کنید، مشخص کنید. سپس، محلی که فایل جدید باید در آن نمایش داده شود را مشخص کنید. نیازی نیست که فایل جدید با نامی که کپی میکنید یکسان باشد. Source به فایل یا پوشهای که میخواهید منتقل کنید اشاره دارد.
2- cp در Shell چیست؟
cp دستوری است که در پوسته یونیکس و لینوکس برای کپی کردن یک فایل از یک مکان به مکان دیگر، احتمالاً در یک سیستم فایل متفاوت، وارد میشود. فایل اصلی بدون تغییر باقی میماند و فایل جدید ممکن است نامی مشابه یا متفاوت داشته باشد.
3- دستور cp در اوبونتو چیست؟
از دستور cp برای کپی کردن فایلها و فهرستها در لینوکس استفاده میشود.