Как копировать и вставлять текст, файлы и папки в терминале Linux

Копирование и вставка — одно из самых часто используемых действий на компьютере. Хотя это легко сделать с помощью сочетаний клавиш Ctrl + C и Ctrl + V, в терминале Linux это не так просто. У вас есть несколько вариантов, чтобы выполнить эту задачу. Вот как вы можете копировать и вставлять текст, файлы и директории в терминале Linux.
Содержание
- Копирование и вставка текста
- Копирование и вставка одного файла
- Копирование и вставка папки и её содержимого
- Копирование и вставка нескольких файлов
- Копирование и вставка всех файлов одного типа
- Сделать копирование более интерактивным
- Rsync против CP
- Перемещение файла или папки
- Часто задаваемые вопросы
Также читайте: Как удалить директорию в Linux
Копирование и вставка текста
Если вы просто хотите скопировать кусок текста в терминале, всё, что вам нужно сделать, это выделить его мышью, затем нажать Ctrl + Shift + C для копирования.
Чтобы вставить его туда, где находится курсор, используйте сочетание клавиш Ctrl + Shift + V.
Сочетание для вставки также применяется, когда вы копируете часть текста из документа Word (или любого другого приложения) и хотите вставить его в терминал. Например, вы можете скопировать команду с веб-страницы в вашем браузере и использовать сочетание Ctrl + Shift + V для вставки её в терминал.
Если по какой-то причине эти сочетания клавиш не работают, терминал может быть неправильно настроен для этого. Ищите опции, которые позволяют настраивать сочетания клавиш. Вот инструкции для самых популярных терминалов:
- Gnome Terminal – Нажмите на меню гамбургера и выберите “Настройки”. Перейдите в “Сочетания клавиш” и прокрутите до “Правка”. Опции для “Копировать” и “Вставить” появятся там, готовые к настройке.
- Konsole – Перейдите в “Настройки”, затем нажмите “Настроить сочетания клавиш”. Найдите “Копировать”, настройте его на использование упомянутых ранее комбинаций клавиш, затем сделайте то же самое для “Вставить”.
Большинство других терминалов будут использовать универсальное сочетание для копирования/вставки в консоли без возможности их настройки.
Также читайте: Как использовать cURL для передачи данных через командную строку и многое другое
Копирование и вставка одного файла
В любое время, когда вы хотите скопировать файл или папку в командной строке Linux, вышеуказанное сочетание клавиш не сработает. Вам нужно использовать команду cp. cp — это сокращение для копирования. Синтаксис тоже прост. Используйте cp, за которым следует файл, который вы хотите скопировать, и место назначения, куда вы хотите его переместить.
cp your-file.txt ~/Documents/
Это, конечно, предполагает, что ваш файл находится в той же директории, из которой вы работаете. Вы можете указать оба.
cp ~/Downloads/your-file.txt ~/Documents/У вас также есть возможность переименовать файл во время его копирования. Укажите новое имя в месте назначения.
cp ~/Downloads/your-file.txt ~/Documents/new-name.txtТакже читайте: Как использовать команду dd в Linux
Копирование и вставка папки и её содержимого
Чтобы скопировать папку и её содержимое, вам нужно указать команде cp копировать рекурсивно. Это достаточно просто с флагом -r.
cp -r ~/Downloads/pictures-directory ~/Pictures/family-vacation-pics
Всё остальное в вашем синтаксисе остаётся точно таким же. Флаг -r служит для того, чтобы сообщить cp, что он работает с директорией и должен копировать её содержимое.
Если вы хотите, чтобы действие вставки перезаписывало существующие файлы, вы можете добавить флаг -f:
cp -rf ~/Downloads/pictures-directory ~/Pictures/family-vacation-picsТакже читайте: Как использовать команду Rm в Linux
Копирование и вставка нескольких файлов
Вы также можете копировать несколько файлов. Командная строка Linux позволяет вам нацеливаться на несколько элементов одновременно с помощью фигурных скобок {}. Вы можете использовать их для перечисления имен каждого файла, который нужно скопировать, разделённых запятыми.
cp ~/Downloads/{file1.txt,file2.jpg,file3.odt} ~/Documents/
Все три файла разных типов будут скопированы в директорию Documents.
Копирование и вставка всех файлов одного типа
Если у вас есть множество файлов одного типа для копирования, вы можете использовать символ подстановки *. Звёздочка/символ подстановки говорит командной строке Linux принимать абсолютно всё на этом месте. Так что, если вы скажете Linux скопировать *.jpg, он скопирует все JPG файлы, независимо от имени или того, что стоит перед частью .jpg.
cp ~/Downloads/*.jpg ~/Pictures/
Если вы хотите использовать несколько типов файлов, скажем, JPG и PNG, вы можете использовать фигурные скобки, как раньше.
cp ~/Downloads/*.{jpg,png} ~/Pictures/Также читайте: Как копировать и вставлять на сайтах, которые этого не позволяют
Сделать копирование более интерактивным
Как вы могли заметить, следуя этому руководству, использование cp не даёт вам никакого подтверждения или запроса после завершения того, что он делает, если не возникает ошибки. Это может вызвать некоторое беспокойство, особенно когда вы выполняете операции копирования очень больших файлов на более медленном оборудовании, которые могут занять много времени.
Прикрепив флаг -v к вашей команде, вы сообщаете cp, чтобы он дал вам самый подробный вывод о том, что он делает. Флаг -i предоставляет запросы на подтверждение, чтобы у вас была возможность отменить определённые операции, такие как перезапись определённых файлов.
cp -rvi ~/Downloads/*.jpg ~/Pictures/Как правило, флаги -v и -i доступны в большом количестве команд, которые распространены в Linux.
Rsync против CP
Если вам нужно выполнить несколько операций копирования, которые перезаписывают файлы (например, создавая резервную копию, которую вы будете обновлять время от времени), rsync может вызвать у вас улыбку.
rsync немного более продвинутый, так как он углубляется в детали каждого файла, делает полное сравнение данных в обоих файлах и внутри самого файла, перезаписывая только изменённые данные. Это особенно полезно, если папка назначения находится на SSD, так как это экономит циклы записи и не ухудшает здоровье диска, перезаписывая целые файлы.
Узнайте, как использовать rsync для копирования файлов в Linux.
Также читайте: Как сохранить вывод терминала в файл в Linux
Перемещение файла или папки
Если вы пришли сюда, чтобы переместить файл из одного места в другое без создания дубликата, вы можете сделать это легко, но перемещение файла требует команды mv. Синтаксис очень похож на cp.
mv ~/Downloads/your-file.txt ~/Documents/Аналогично, вы также можете переименовать файл.
mv ~/Downloads/your-file.txt ~/Documents/renamed.txtОднако есть одно главное отличие. Вам не нужен флаг -r, чтобы переместить целую папку.
mv ~/Downloads/downloaded-folder ~/Pictures/vacation-picsЧасто задаваемые вопросы
Является ли rsync лучше, чем cp?
Ни одно из них не лучше другого в общем. rsync будет делать полные сравнения файлов в папках источника и назначения, занимая некоторые вычислительные ресурсы, чтобы сэкономить на пропускной способности или циклах записи. Это отлично подходит, если вы постоянно обновляете резервную копию определённой папки, но менее идеально, если вы просто выполняете одно копирование.
cp функционирует больше как швейцарский армейский нож, который просто хочет выполнить задачу. Если вам нужно что-то перезаписать, cp делает это за вас. Благодаря своей способности к интерактивности, он также более дружелюбен для новичков и даёт вам немного больше контроля над процессом копирования.
Почему я не могу просто использовать Ctrl+C для копирования элементов из моего терминала?
В приложениях терминала Linux нажатие Ctrl + C на клавиатуре отправляет сигнал SIGINT (прерывание) в ядро. Это простой способ сказать Linux остановить всё, что выполняется на этом конкретном терминале.
Если вы настроите функцию “Копировать” в вашем терминале, чтобы она реагировала на эту комбинацию клавиш, вы столкнётесь с проблемами при копировании строки текста из выполняемой команды, пока она всё ещё выполняет что-то.
Фото: Neron Photos на Pexels