Как копировать и вставлять текст в оболочке Bash в 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 /

ls -R / в окне терминала

Поскольку мы используем параметр -R (рекурсивный), команда ls начнет выводить список всех файлов и каталогов, начиная с корневого каталога. Через пару мгновений вы понимаете, что это не то, что вам нужно, поэтому прекращаете процесс, нажав Ctrl + C.

Ctrl+C

Ctrl + C в окне терминала

Процесс ls завершен. Видимое свидетельство Ctrl + C выделено на скриншоте. Он отображается как ^ C.

  6 лучших операционных систем Linux для обеспечения конфиденциальности

Комбинация клавиш Ctrl + V вызывает «дословную вставку». Это позволяет вам вводить представление ключа в то, что вы печатаете, вместо того, чтобы получать эффект клавиши. Чтобы убедиться в этом, попробуйте следующие команды (не вводите запятые). (Например, чтобы попробовать первый, нажмите Ctrl + V, а затем нажмите Enter.)

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

Ctrl + V, Enter в окне терминала

Вкратце, вы можете заметить, что Enter представлен символом ^ M. Ранее мы видели, что Ctrl + C отображается как ^ C. Казалось бы, ^ представляет Ctrl. Так что Ctrl + M, вероятно, означает то же, что и Enter. Означает ли это, что мы можем войти в Enter, набрав Ctrl + M? Попробуйте в окне терминала. Вы увидите, что это так.

Итак, очевидно, что мы не можем ожидать, что Ctrl + C и Ctrl + V выполнят копирование и вставку текста, если им уже назначены проверенные временем функции. Итак, что мы можем использовать?

Ctrl + Shift + C и Ctrl + Shift + V

Их легко запомнить, потому что они очень похожи на свои аналоги, Ctrl + Shift + C и Ctrl + Shift + V являются прямой заменой Ctrl + C и Ctrl + V.

Если вы выделите текст в окне терминала с помощью мыши и нажмете Ctrl + Shift + C, вы скопируете этот текст в буфер обмена.

Ctrl+Shift+C

Ctrl + Shift + C в окне терминала

Вы можете использовать Ctrl + Shift + V, чтобы вставить скопированный текст в то же окно терминала или в другое окно терминала.

Ctrl+Shift+V

Ctrl + Shift + V в окне терминала

Вы также можете вставить в графическое приложение, такое как gedit. Но обратите внимание: когда вы вставляете данные в приложение, а не в окно терминала, вы должны использовать Ctrl + V.

Вставка из окна терминала в редактор gedit

И можно пойти другим путем. Вы можете выделить текст в gedit и нажать Ctrl + C, а затем вставить его в окно терминала, используя Ctrl + Shift + V.

Копирование из редактора gedit и вставка в окно терминала

Комбинация клавиш Ctrl + Insert такая же, как Ctrl + Shift + C, а комбинация Shift + Insert такая же, как Ctrl + Shift + V. Предостережение здесь в том, что их можно использовать только в одном окне терминала.

Использование мыши: щелкните правой кнопкой мыши

Вы можете использовать мышь для копирования и вставки в окне терминала. Вы должны использовать мышь, чтобы выделить текст, который вы собираетесь скопировать, так почему бы не использовать ее для выполнения действий копирования и вставки?

  Как клонировать жесткий диск Linux с помощью Gparted

Выделив текст, щелкните правой кнопкой мыши и выберите «Копировать» в контекстном меню.

окно терминала с контекстным меню и выделенной копией

Чтобы вставить скопированный текст, еще раз щелкните правой кнопкой мыши и выберите «Вставить» из контекстного меню.

окно терминала с контекстным меню и вставкой выбранного

Текст вставляется в позицию курсора в командной строке. В этом примере относительный путь указан неверно, и Bash не может сменить каталог. Пользователь пропустил «~ /» в начале пути. Они набрали «~ /», а затем скопировали остаток пути из своей предыдущей попытки и вставили его во вторую командную строку.

Когда они нажимают Enter, они перемещаются в каталог.

окно терминала с измененным каталогом, полученным путем копирования и вставки

В этом примере показана вставка в то же окно терминала, но вы можете использовать эту технику щелчка правой кнопкой мыши для вставки в разные окна терминала. Вы также можете вставлять в графические приложения, используя этот метод.

Использование мыши: средняя кнопка

Есть еще более быстрый способ копирования и вставки с помощью мыши, если у вашей мыши есть средняя кнопка. Если вы нажмете на колесо прокрутки (осторожно!), И оно щелкнет, у вас будет средняя кнопка.

Выделите текст в окне терминала и нажмите среднюю кнопку. Выделенный текст вставляется в позицию курсора в командной строке. Копирование и вставка происходят одновременно.

Итак, выделите текст:

окно терминала с выделенным текстом

Затем нажмите среднюю кнопку:

окно терминала с выделенным текстом, вставленным в командную строку

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

Старая школа — без мыши

А если у вас нет мыши? Если вы не можете выделить текст, как его скопировать и вставить?

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

Например, вы могли переключиться на один из дополнительных TTY. В современных дистрибутивах они расположены от Ctrl + Alt + F3 (TTY3) до Ctrl + Alt + F6 (TTY6). (Ctrl + Alt + F2 вернет вас в сеанс GDE, а Ctrl + Alt + F1 приведет вас к экрану входа в GDE.)

  6 лучших дистрибутивов Linux для Raspberry Pi

Возможно, вы даже используете настоящее аппаратное устройство TTY для подключения к компьютеру Linux или Unix.

В любом случае эти методы подойдут вам. Здесь следует помнить, что это не копирование и вставка, это вырезание, копирование и вставка, и вы можете вырезать и копировать только из текущей командной строки. Конечно, вы можете использовать клавиши со стрелками для прокрутки своей истории, чтобы найти командную строку, которую вы хотите вырезать, скопировать и вставить.

Вы можете использовать следующие нажатия клавиш:

Ctrl + W: вырезать слово перед курсором и добавить его в буфер обмена.
Ctrl + K: вырезать часть строки после курсора и добавить ее в буфер обмена. Если курсор находится в начале строки, он вырежет и скопирует всю строку.
Ctrl + U: вырезать часть строки перед курсором и добавить ее в буфер обмена. Если курсор находится в конце строки, он вырежет и скопирует всю строку.
Ctrl + Y: вставить последний вырезанный и скопированный текст.

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

Ctrl+Alt+F3
tty

tty3 в окне терминала

У нас есть файл, который мы хотим удалить, давайте проверим, что он здесь.

ls -l file_to_delete.txt

ls -l file_to_delete.txt в окне терминала

Если мы используем клавишу со стрелкой вверх, мы вызовем последнюю использованную нами команду из истории команд. Мы могли бы просто отредактировать эту строку, но цель состоит в том, чтобы продемонстрировать вырезание, копирование и вставку, поэтому мы выполним нашу задачу по удалению файла немного затянувшимся образом.

Полученная команда из истории команд в окне терминала

Мы переместим курсор на первую букву имени файла, а затем нажмем Ctrl + K. Это удалит эту часть строки и скопирует текст в буфер обмена.

Эффект Ctrl + K в окне терминала

Мы будем нажимать Backspace, пока не очистим строку.

Строка очищена с помощью Backspace в окне терминала

Мы введем rm, чтобы удалить файл.

rm в окне терминала

Теперь мы можем нажать Ctrl + Y и вставить оставшуюся часть строки.

Эффект Ctrl + Y в окне терминала

На этом наша команда завершена, и мы можем нажать Enter, чтобы удалить файл.

Файл удален без сообщения об ошибке в окне терминала

Этот тип вырезания, копирования и вставки нельзя использовать между дополнительными TTY. Вы не можете, например, вырезать, копировать и вставлять между TTY3 и TTY4.

Дополнительные TTY лучше всего рассматривать как ряд физических TTY, расположенных рядом. Невозможно вырезать и вставить между различными физическими терминалами, и в этих эмуляциях нет способа сделать это.

Скопируйте это, контролируйте

В какой бы ситуации вы ни оказались при использовании компьютера с Linux, всегда будет возможность скопировать и вставить. У вас есть варианты. Некоторые из них — странные варианты, но, по крайней мере, есть варианты.