Як копіювати та вставляти текст у Bash Shell Linux

Бажаєте скопіювати та вставити щось у командний рядок Bash? Ми продемонструємо вам кілька методів, незалежно від того, чи ви віддаєте перевагу клавіатурі, чи миші. Ці способи працюють як при використанні графічного інтерфейсу, так і в текстовому режимі TTY.

Стандартні клавіатурні скорочення не працюють

Копіювання та вставка тексту – це звичайна операція при роботі з комп’ютером. Новачки в Linux часто стикаються з труднощами при спробі скопіювати та вставити текст у терміналі, незалежно від того, чи вони перейшли з Windows, чи macOS.

У Windows для копіювання фрагменту виділеного тексту використовується Ctrl+C, а для вставки – Ctrl+V. У macOS аналогічно використовуються Command+C для копіювання та Command+V для вставки. В обох випадках C означає копіювання, а V – вставку.

Ці ж сполучення клавіш працюють у більшості графічних додатків Linux, таких як текстовий редактор gedit або офісний пакет LibreOffice. Ctrl+C копіює обраний текст, а Ctrl+V вставляє його в місце розташування курсору. Користувач-початківець у Linux навіть не помічає, як звичні йому сполучення клавіш автоматично перенеслися в ці програми. Він просто використовує їх на підсвідомому рівні і продовжує роботу.

Однак, як тільки наш новачок відкриває вікно терміналу і намагається скопіювати і вставити щось в командний рядок оболонки Bash, все змінюється. Комбінації клавіш Ctrl+C та Ctrl+V мали свої функції задовго до того, як з’явилася ідея копіювання та вставки. Ці сполучення почали використовувати ще до появи графічних інтерфейсів, коли телетайп (TTY) був фізичним пристроєм.

Функції Ctrl+C та Ctrl+V в TTY

Коли TTY був фізичним пристроєм, Ctrl+C було обрано як зручне клавіатурне скорочення для генерації сигналу. Цей сигнал SIGINT, повідомляє поточному процесу про необхідність завершення. Оскільки вікно терміналу імітує TTY, це клавіатурне сполучення, як і багато інших, зберегли свою функціональність в емульованому середовищі. Важливо розуміти, що саме вікно терміналу є емуляцією. Оболонка Bash – це програма, яка працює всередині цієї імітації TTY.

Функції, призначені Ctrl+C та Ctrl+V, легко простежити. Наприклад, введіть наступну команду та натисніть Enter:

ls -R /

Оскільки ми використовуємо параметр -R (рекурсивний), команда ls почне виводити список кожного файлу та каталогу, починаючи з кореневого. Через деякий час ви розумієте, що це не те, що вам потрібно, і зупиняєте процес, натиснувши Ctrl+C.

Ctrl+C

Процес ls зупиняється. На скріншоті видно, як виглядає натискання Ctrl+C. Воно відображається як ^C.

Сполучення клавіш Ctrl+V викликає “літеральну вставку”. Це дозволяє ввести представлення клавіші в командний рядок, а не її функцію. Щоб переконатися в цьому, спробуйте наступні комбінації клавіш (не вводьте коми). Наприклад, для першої комбінації натисніть Ctrl+V, а потім Enter.

Ctrl+V, Enter
Ctrl+V, PgDn
Ctrl+V, RightArrow
Ctrl+V, Esc

З цього можна помітити, що Enter представлено як ^M. Раніше ми бачили, що Ctrl+C відображається як ^C. Здається, що символ ^ представляє клавішу Ctrl. Виходить, що Ctrl+M – це те саме, що Enter. Чи можна ввести Enter, натиснувши Ctrl+M? Спробуйте зробити це у вікні терміналу. Ви побачите, що це дійсно так.

Таким чином, не можна використовувати Ctrl+C та Ctrl+V для копіювання та вставки тексту, адже вони вже виконують інші функції. То що ж використовувати для копіювання та вставки?

Ctrl+Shift+C та Ctrl+Shift+V

Ці сполучення клавіш легко запам’ятати, оскільки вони дуже схожі на Ctrl+C і Ctrl+V. Ctrl+Shift+C та Ctrl+Shift+V є їх прямими замінниками.

Якщо ви виділите текст у вікні терміналу за допомогою миші та натиснете Ctrl+Shift+C, цей текст скопіюється в буфер обміну.

Ctrl+Shift+C

Ви можете використовувати Ctrl+Shift+V, щоб вставити скопійований текст у це ж або інше вікно терміналу.

Ctrl+Shift+V

Скопійований текст можна також вставити в графічні програми, наприклад gedit. Але пам’ятайте, що при вставці в графічну програму, потрібно використовувати Ctrl+V, а не Ctrl+Shift+V.

Можна зробити навпаки. Скопіювати текст у gedit за допомогою Ctrl+C, а потім вставити його у вікно терміналу за допомогою Ctrl+Shift+V.

Сполучення клавіш Ctrl+Insert виконує ту саму функцію, що й Ctrl+Shift+C, а сполучення Shift+Insert аналогічне Ctrl+Shift+V. Але є нюанс: їх можна використовувати лише в межах одного вікна терміналу.

Копіювання та вставка за допомогою правої кнопки миші

Ви можете використовувати мишу для копіювання та вставки тексту у вікні термінала. Якщо все одно потрібно виділяти текст мишею, чому б не скористатися нею і для операцій копіювання та вставки?

Після того як ви виділили текст, клацніть правою кнопкою миші і виберіть “Копіювати” з контекстного меню.

Щоб вставити скопійований текст, ще раз клацніть правою кнопкою миші та виберіть “Вставити” з контекстного меню.

Текст вставляється в місце розташування курсору в командному рядку. У цьому прикладі відносний шлях вказано неправильно, і Bash не може перейти в каталог. Користувач пропустив “~/” на початку шляху. Він ввів “~/”, а потім скопіював решту шляху з попередньої спроби та вставив у другий командний рядок.

Коли він натискає Enter, він переходить у потрібний каталог.

У цьому прикладі показано вставку в одному вікні терміналу, але за допомогою клацання правою кнопкою миші можна вставляти текст в різні вікна терміналу. Цей метод працює також для вставки в графічні програми.

Використання миші: середня кнопка

Є ще швидший спосіб копіювання та вставки за допомогою миші, якщо вона має середню кнопку. Якщо ви натиснете на коліщатко прокрутки (легенько!), і воно клацне, ви отримаєте середню кнопку.

Виділіть текст у вікні терміналу, а потім натисніть середню кнопку. Виділений текст вставляється в місце розташування курсору в командному рядку. Копіювання та вставка відбуваються одночасно.

Отже, виділіть текст:

Потім натисніть середню кнопку:

Ви можете використовувати цей метод для вставки між різними вікнами терміналів, а також у графічні програми. Просто виділіть текст, перейдіть до іншого вікна термінала або програми та натисніть середню кнопку.

Стара школа – без миші

Що робити, якщо у вас немає миші? Якщо ви не можете виділити текст, як його скопіювати та вставити?

Сервери Linux часто налаштовують без графічного середовища робочого столу (GDE), тому ви не маєте доступу до миші. Навіть на комп’ютері з Linux, де працює графічне середовище, як, наприклад, GNOME, бувають випадки, коли ви не можете скористатися мишею для виділення тексту.

Наприклад, ви могли перейти на один з додаткових TTY. У сучасних дистрибутивах вони розташовані від Ctrl+Alt+F3 (TTY3) до Ctrl+Alt+F6 (TTY6). (Ctrl+Alt+F2 поверне вас до сеансу GDE, а Ctrl+Alt+F1 переведе вас на екран входу в GDE.)

Можливо, ви навіть використовуєте справжній апаратний пристрій TTY для підключення до комп’ютера з Linux або Unix.

У будь-якому випадку ці методи вам допоможуть. Важливо пам’ятати, що це не копіювання та вставка, а вирізання, копіювання та вставка, і ви можете вирізати та копіювати лише з поточного командного рядка. Звичайно, можна використовувати клавіші зі стрілками для перегляду історії команд і знайти потрібний рядок.

Ви можете використовувати наступні сполучення клавіш:

Ctrl+W: вирізати слово перед курсором і додати його до буфера обміну.
Ctrl+K: вирізати частину рядка після курсору та додати її до буфера обміну. Якщо курсор на початку рядка, то вирізається та копіюється весь рядок.
Ctrl+U: вирізати частину рядка перед курсором і додати її до буфера обміну. Якщо курсор в кінці рядка, то вирізається та копіюється весь рядок.
Ctrl+Y: вставити останній вирізаний та скопійований текст.

Перейдіть на TTY3. (Використовуйте Ctrl+Alt+F1, щоб повернутися на робочий стіл.)

Ctrl+Alt+F3
tty

У нас є файл, який ми хочемо видалити, перевіримо, що він є тут.

ls -l file_to_delete.txt

Використовуючи клавішу зі стрілкою вгору, ми викличемо останню використану команду з історії. Ми могли б просто відредагувати цей рядок, але мета полягає в демонстрації вирізання, копіювання та вставки, тому ми виконаємо наше завдання з видалення файлу трохи довшим шляхом.

Перемістимо курсор до першої літери імені файлу, а потім натиснемо Ctrl+K. Це виріже цю частину рядка та скопіює текст у буфер обміну.

Будемо натискати Backspace, доки не очистимо рядок.

<img decoding=”async” class=”alignnone size-full wp-image-440715″ src=”data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoYAAACTAgMAAABuYDDrAAAACVBMVEUAAAABAQHMzMygyw1NAAADwElEQVR42u3aQW7jOBAFUF/CDczsezOn8CU+gar9NyDepwz4ALVgTjkLUjLtdhxlRm5xMOUFQTFB8kCJpY9KDofxP0cM/jn9J4gyz/nk65oGIiavxJuJAHiBAQlpBKJIR5SFOGnZnfjnVZ2izuvZ1Zmyq+tVXZ1MBvACZM9O2Y34c6JQKOdpEgovCRSSQqElA9hu9J5EQSUKH4jnemBGIGoR5nJPzCWXqX5LGYBIERI9UY0g6i7iMgyR5UYUEER7FhtRpj2Py5SMIuh20SmUeqLnopOuexadazL1VCjqOsFrEdK5zBgAh2O/G/3sHf30uRuLqL5uLZJOEDcmyuhEaUSpkWu3Y7GeSBmPSL2qU8CaCkckGicKBdbCwpBE6YlpvGfxByi5CBOG3cUfoBBDE/9oRGmpcMDj8hOcKMnYUuGQRL2qJ2NLhSOW7jFS4XricHsYYez/RPxuf9Fhv/WArewvNlQyIAFWr9NCbOttLb2L+Kq/uOzbTHkg4r3ENf1FWCtGBiQkq9fZ1QG9qsPU61V2SvaNiWv6i7BbZyI7rF7XVhQnCoxSrxIom+/imv4ijP2NvifKPVH4BuLX/UWYAsjlRszlRswFlktCXUv2BuLX/UUY/GEX0e0iYERCXXsj8VV/EQZZS3zHj