کپی و پیست کردن سریع متن حین کار با واسط خط دستور یا در حقیقت ترمینال لینوکس، سرعت استفاده از Bash‌ را بیشتر می‌کند. برخی کاربران حین استفاده از ترمینال لینوکس و اجرای دستورات طولانی، به دلیل ناآگاهی از روش‌های مختلف برای عمل Copy و Paste، کند عمل می‌کنند در حالی که روش کار بسیار ساده است.

در این مقاله به روش کپی و پیست کردن متن در پوسته‌ی Bash لینوکس می‌پردازیم. 

شورت‌کات کپی و پیست کیبورد کار نمی‌کند!

کپی و پیست کردن یکی از کارهایی است که در هر سیستم عامل و هر نوع گوشی، تبلت یا کامپیوتری به وفور انجام می‌شود. در توزیعات مختلف لینوکس روش کپی و پیست کردن در محیط ترمینال، با ویندوز و مک‌او‌اس و همین‌طور با نرم‌افزارهای گرافیکی لینوکس متفاوت است. البته در اپلیکیشن‌های گرافیکی و معمولی Linux نظیر gedit یا نرم‌افزارهای LibreOffice، شورت‌کات کپی و پیست کردن درست شبیه به ویندوز و مک‌او‌اس است.

در ویندوز با Ctrl + C متنی که انتخاب شده، کپی می‌شود و با Ctrl + V پیست می‌شود.

در مک‌او‌اس با Command + C و Command + V عمل کپی و پیست انجام می‌شود.

عملی که Ctrl + C در ترمینال انجام می‌دهد، ایجاد یک سیگنال خاص به اسم SIGINT است که پردازش یا فرآیند فعلی که در حال انجام است را متوقف می‌کند! برای روشن شدن موضوع فرض کنید دستور زیر را برای لیست کردن فایل و فولدرها در فولدر خانه تایپ کرده‌اید و Enter‌ را فشار داده‌اید:

نتیجه را در تصویر زیر مشاهده می‌کنید، با توجه به استفاده از آپشن -r یا recursive، دستور ls مشغول به کار می‌شود و تمام فولدرها و فولدرهای زیرمجموعه را چک می‌کند و فایل‌ها را لیست می‌کند.

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

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

همان‌طور که در تصویر فوق مشاهده می‌کنید، ^C حاصل فشار دادن کلیدهای Ctrl و C است.

اما شورت‌کات بعدی یعنی Ctrl + V در ترمینال چه عملی انجام می‌دهد؟

با این کلید میانبر می‌توانید نمایشی از کلیدهای فشار داده شده را مشاهده کنید و نه اثر کلیدها را.

به عنوان مثال اگر Ctrl + V را فشار بدهید و سپس Enter‌ را بزنید، در ترمینال عبارت ^M و command not found درج می‌شود. به همین ترتیب کلیدهای Page Down و جهت راست و Esc عمل نخواهند کرد.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

اما برای کپی و پیست سریع چه باید کرد؟ آیا شورت‌کات دیگری وجود دارد؟

استفاده از Ctrl + Shift + C و Ctrl + Shift + V

برای کپی و پیست کردن سریع می‌توانید کلید Shift را به شورت‌کات‌های همیشگی که در ویندوز و مک‌او‌اس استفاده می‌کنید، اضافه کنید. به عبارت دیگر با انتخاب متن و زدن کلید Ctrl + Shift + C ، متن در کلیپ‌بورد کپی می‌شود. با زدن Ctrl + Shift + V نیز می‌توانید آن را پیست کنید. به عنوان مثال در تصویر زیر string انتخاب شده و شورت‌کات کپی کردن فشار داده شده است:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

و سپس با فشار دادن Ctrl + Shift + V ، محتوا پیست می‌شود. می‌توانید متن کپی شده را در پنجره‌ی دیگری برای کار با Terminal لینوکس پیست کنید:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

پیست کردن در پنجره‌ی یک نرم‌افزار گرافیکی مثل ویرایشگر متن gedit هم امکان‌پذیر است.

اما دقت کنید که در اپلیکیشن‌ها می‌بایست از Ctrl + V برای پیست کردن استفاده کنید.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

حالت برعکس یعنی کپی کردن متن از یک نرم‌افزار گرافیکی با شورت‌کات Ctrl + C انجام می‌شود اما برای پیست کردن محتوای کپی شده در ترمینال می‌بایست از Ctrl + Shift + V استفاده کنید.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

و اما دو شورت‌کات مفید و مشابه دیگر:

برای کپی کردن می‌توانید از Ctr + Insert استفاده کنید و برای پیست کردن می‌توانید از Shift + Insert استفاده کنید. اما در این صورت کپی و پیست در همان پنجره ترمینال امکان‌پذیر است.

استفاده از منوی راست‌کلیک موس در ترمینال

قابلیت استفاده از کلید راست موس در Terminal لینوکس وجود دارد. معمولاً کاربران ویندوز و مک‌او‌اس به استفاده از موس عادت دارند و به سرعت از موس استفاده می‌کنند. در این صورت می‌توانید متنی را انتخاب کنید و برای کپی کردن آن، روی پنجره‌ی ترمینال راست‌کلیک کرده و گزینه‌ی Copy را انتخاب کنید.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

برای پیست کردن هم همین منو و گزینه‌ی Paste آن قابل استفاده است.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

دقت کنید که متن در محلی که نشانگر تایپ قرار گرفته، پیست می‌شود و نه در انتهای آخرین دستور تایپ‌شده. در مثال زیر مسیر فولدر کپی شده اما به صورت ناقص و در واقع ~/ انتخاب نشده است. در نتیجه فولدر کاری به اشتباه تغییر کرده است. برای تصحیح می‌بایست از دستور cd و آدرس فولدر موردنظر استفاده کرد.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

استفاده از روش راست‌کلیک برای کپی و پیست کردن در پنجره‌های ترمینال و همین‌طور از ترمینال در اپلیکیشن‌های گرافیکی یا بالعکس امکان‌پذیر است.

استفاده از دکمه‌ی وسط موس برای پیست کردن

دکمه‌ی وسط موس که در حقیقت چرخ یا اسکرول موس است، قابلیت کلیک کردن هم دارد و در لینوکس و محیط ترمینال می‌توانید از این دکمه برای کپی و پیست هم‌زمان استفاده کنید!

به عبارت دیگر اگر بخواهید عبارتی را تکرار کنید، می‌توانید آن را انتخاب کنید و سپس دکمه‌ی وسط موس را فشار دهید.

کاربرد مهم بعدی این است که متنی را انتخاب کرده‌اید و می‌خواهید آن را کپی و سپس در محلی که Cursor یا به زبان دیگر نشانگر تایپ قرار دارد، پیست کنید. با کلید میانی موس این کار به سرعت انجام می‌شود. به نمونه‌ی زیر توجه کنید:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

اثر فشار دادن چرخ موس به این صورت است:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

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

کپی و پیست کردن متن بدون استفاده از موس!

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

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

Ctrl + W : کات کردن کلمه قبل از نشان‌گر تایپ و قرار دادن آن در کلیپ‌بورد

Ctrl + K : کات کردن محتویات خط فعلی پس از نشان‌گر تایپ در کلیپ‌بورد. اگر نشانگر تایپ در ابتدای خط باشد، کل خط کات می‌شود.

Ctrl + U : کات کردن بخش از خط فعلی که قبل از نشانگر تایپ قرار دارد در کلیپ‌بورد. اگر نشانگر تایپ در انتهای خط باشد، تمام خط کات می‌شود.

Ctrl + Y : پیست کردن آخرین متنی که کات یا کپی شده در محل نشانگر تایپ

اما مثال‌هایی کاربردی از روش کار بدون موس: فرض کنید با فشار دادن کلید میانبر Ctrl + Alt + F3 ، پنجره‌ی ترمینال را در توزیعی خاص از لینوکس فعال کرده‌ایم و فولدری خاص را باز کرده‌ایم.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

و فرض کنید در این فولدر، فایلی وجود دارد که می‌خواهیم آن را حذف کنیم. ابتدا مشخصات فایل را چک می‌کنیم:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

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

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

و پس از قرار دادن نشانگر تایپ در ابتدای اولین حرف از نام فایل، کلید میانبر Ctrl + K‌ را می‌زنیم که موجب حذف شدن ادامه‌ی خط فعلی و کات شدن آن در کلیپ‌بورد می‌شود. بنابرای نام فایل در کلیپ‌بورد قرار می‌گیرد.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

و حال با فشار دادن Backspace ، حروف قبلی این خط را پاک می‌کنیم:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

اکنون دستور rm را برای حذف کردن فایل تایپ می‌کنیم:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

و پس از این دستور می‌بایست نام فایل تایپ شود که با فشار دادن Ctrl + Y آن را پیست می‌کنیم:

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

بنابراین دستور حذف کردن فایل موردنظر آماده‌ی اجرا شده و با زدن Enter فایل حذف می‌شود.

چگونه در محیط ترمینال لینوکس، کپی و کات و پیست انجام بدهیم؟

دقت کنید که این روش کات و کپی و پیست کردن در محیط ترمینال، برای کپی و پیست بین چند پنجره کاربرد ندارد.