Как копировать в линуксе


Как копировать в терминале Linux

Буфер обмена операционной системы и возможность копировать и вставлять текст из одного места в другое очень сильно облегчает работу в терминале. Теперь вам необязательно искать команду в истории или набирать её вручную. Вы можете скопировать текст с другого терминала, файла или браузера, а затем выполнить его. Сложно представить как передать команде длинные и сложные параметры без возможности копирования и вставки.

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

Содержание статьи:

Как копировать в терминале Linux

1. Обычный терминал

Для того чтобы скопировать текст в обычном графическом эмуляторе терминала достаточно выделить его мышкой и нажать сочетание клавиш Ctrl+Shift+C. Затем, для вставки скопированного в терминал надо нажать Ctrl+Shift+V.

Обычно для копирования и вставки текста используются сочетания клавиш Ctrl+C и Ctrl+V. Однако в терминале сочетание Ctrl+C завершает программу, которая в данный момент выполняется. Поэтому для копирования разработчикам пришлось выбрать новое сочетание. Из традиционных сочетаний клавиш можно использовать Ctrl+Insert и Shift+Insert для копирования и вставки соответственно.

Если программа выводит данные слишком быстро и вы не успеваете их отметить и скопировать, можно нажать сочетание клавиш Ctrl+S для того чтобы приостановить программу. Некоторые программы полностью останавливаются, некоторые останавливают только вывода, но теперь у вас будет достаточно времени для того чтобы скопировать нужные данные. Для того чтобы возобновить работу программы используйте сочетание Ctrl+Q. Теперь вы знаете как копировать текст в терминале linux.

2. Редактор Vim

Если в редакторе включена поддержка мыши, то копировать текст, описанным выше способом у вас не получится. Для того, чтобы всё же иметь возможность скопировать текст средствами операционной системы необходимо зажать кнопку Shift во время выделения мышкой.  Для копирования можно использовать то же сочетание клавиш Ctrl+Shift+C или же вызвать контекстное меню с зажатой клавишей Shift и выбрать пункт Скопировать:

Однако при таком способе копирования может быть скопировано много лишнего, например, номера строк. В текстовом редакторе Vim есть встроенная функциональность копирования. Если включена поддержка мыши, вы можете выделить текст мышью. Если нет, для перехода в режим выделения нажмите клавишу V в командном режиме. Затем используется стрелки для выделения нужной области:

Для копирования во внутренний буфер Vim следует использовать клавишу y, а для вставки - p. Если надо выйти с режима выделения без осуществления каких-либо действий - нажмите Esc. Такой способ копирования работает только внутри программы, нигде в системе скопированный текст вставить вы не сможете.

Однако Vim умеет работать и с буфером обмена операционной системы. Вообще у Vim очень широкие возможности копирования и вставки. Здесь поддерживается такая вещь как регистры, в которые можно сохранять данные и извлекать их оттуда. Всего таких регистров 26. По умолчанию используется безымянный регистр. Именно в него попадает текст при копировании с помощью клавиши y или удалении с помощью x. У большинства регистров есть своё предназначение. Однако есть именованные регистры с именами от a до z, в которые вы можете складывать произвольные данные.

Для доступа к регистрам используется символ " в командном режиме или режиме выделения. Если вы редактируете текст, то нужно нажать Esc для выхода в командный режим или выделить нужный текст, затем нажать Shift и кнопку, которая отвечает за " на клавиатуре, а затем кнопку имени регистра. Например, для того чтобы скопировать текст в регистр a используйте такую последовательность "ay.

Для вставки надо будет использовать подобный синтаксис "ap. Аналогично всему этому есть регистр, связанный с буфером обмена операционной системы. Его имя +. Но для того чтобы он работал, необходимо чтобы в системе был установлен пакет vim-gtk3 или gvim. В Ubuntu команда установки будет выглядеть вот так:

sudo apt install vim-gtk3

Затем вы сможете скопировать текст в системный буфер с помощью такой последовательности: "+y. После чего его можно будет вставить в любой программе вне Vim. Если надо вставить такой текст в Vim, используйте последовательность "+p.

3. Терминальный сервер tmux

Если вы используете tmux для разделения одного окна терминала на несколько, то копировать с помощью зажатой кнопки Shift будет не очень удобно. Вы не сможете выделить текст в рамках одного виртуального окна, будет выделяться всё окно терминала и в выделение попадёт много ненужных данных. Для выделения и вставки следует использовать встроенные средства. Если у вас включена поддержка мыши в tmux, то скопировать текст можно просто выделив его мышью.

Если поддержки мыши нет, нажмите управляющее сочетание клавиш, по умолчанию Ctrl+b, а затем символ [ для того чтобы войти в режим выделения. Используйте стрелки для перемещения по тексту. Переместите курсор к началу текста для копирования и нажмите Ctrl+Пробел. Затем переместите курсор к концу фрагмента. Выделенный текст будет подсвечен:

Затем нажмите сочетание клавиш Alt+W для того чтобы скопировать текст в буфер. Для вставки скопированного текста используйте сочетание клавиш Ctrl+b затем ].

Правда этот способ работает только с внутренним буфером обмена tmux. Получить скопированный таким образом текст в системе не получится.

Выводы

В этой небольшой статье мы рассмотрели как копировать в терминале Linux, а также в нескольких популярных программах, таких как Vim и Tmux. А какие ещё способы копирования текста в терминале знаете вы? Напишите в комментариях!

Копирование файлов в Linux

Копирование файлов - одна из задач, наиболее часто возникающих перед пользователями персонального компьютера. Конечно, можно открыть файловый менеджер, войти в нужную папку и скопировать файл с помощью контекстного меню - тут не о чем говорить. Но в этой статье я хотел бы рассмотреть копирование файлов в Linux с помощью терминала.

Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же  копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только обычное копирование командой cp Linux, но и не совсем обычное: с помощью tar и find.

Содержание статьи:

Утилита копирования файлов cp

Название утилиты cp - это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

Синтаксис и опции

Общий синтаксис cp выглядит вот так:

$ cp опции файл-источник файл-приемник

Или:

$ cp опции файл-источник директория-приемник/

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

Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

  • --attributes-only - не копировать содержимое файла, а только флаги доступа и владельца;
  • -f, --force - перезаписывать существующие файлы;
  • -i, --interactive - спрашивать, нужно ли перезаписывать существующие файлы;
  • -L - копировать не символические ссылки, а то, на что они указывают;
  • -n - не перезаписывать существующие файлы;
  • -P - не следовать символическим ссылкам;
  • -r - копировать папку Linux рекурсивно;
  • -s - не выполнять копирование файлов в Linux, а создавать символические ссылки;
  • -u - скопировать файл, только если он был изменён;
  • -x - не выходить за пределы этой файловой системы;
  • -p - сохранять владельца, временные метки и флаги доступа при копировании;
  • -t - считать файл-приемник директорией и копировать файл-источник в эту директорию.

Примеры копирования файлов в linux

Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:

cp ~/pic.png ~/pictures/

Или можем явно указать имя новой картинки:

cp ~/pic.png ~/pictures/wallpaper.png

Копирование папок осуществляется с помощью ключа -r:

cp  -R ~/папка ~/Документы/

После выполнения этой команды копирования ~/папка будет скопирована в папку ~/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка ~/документы будет перезаписана.

По умолчанию команда cp Linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:

cp -i ~/test ~/Documents/test

Есть и противоположная опция -n, означающая "никогда не перезаписывать существующие файлы".

Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:

cp -u ~/test ~/Documents/test

Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:

cp ~/test* ~/Документы/

Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.

В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:

cp -p ~/test* ~/Документы/

Для упрощения использования команды можно применять синтаксис фигурных скобок. Например, чтобы создать резервную копию файла, выполните:

$ cp test.conf{,. bak}

Будет создан файл с таким же именем и расширением .bak

По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.

Копирование файлов по регулярным выражениям в Linux

В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:

find . -name [0-9] -exec cp {} ~/Документы \

Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ {} - подставляет имя каждого файла.

Но не find'ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:

ls -1 ~/ | egrep '[a-zA-Z]' | xargs cp -t ~/Папка/

Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.

Копирование содержимого файлов в Linux

Вы можете не только копировать сами файлы, но и управлять их содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, в комбинации с операторами перенаправления вывода Bash вы можете выполнять копирование содержимого файла Linux в другой файл. Например:

cat файл1 > файл2

Если файл был не пустым, он будет перезаписан. Или мы можем склеить два отдельных файла в один:

cat файл1 файл2 > файл3

Специальное копирование файлов в Linux с помощью tar

Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp. При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации.

Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:

tar cf - /var | ( cd /mnt/var && tar xvf - )

Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.

Выводы

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

Как копировать файлы и каталоги в Linux {с примерами}

Введение

Это руководство покажет вам, как копировать файлы и каталоги в Linux, выполняя команды из командной строки. Кроме того, перечисленные ниже команды подробно описывают, как создавать общесистемные резервные копии или отфильтровывать и копировать только определенные файлы.

Примечание: Эти команды Linux можно запускать только из окна терминала. Если ваша версия Linux загружается с графическим интерфейсом рабочего стола, запустите окно терминала, нажав CTRL-ALT-F2 или CTRL-ALT-T .

Использование команды cp для копирования файлов и каталогов в Linux

Команда cp является основным методом копирования файлов и каталогов в Linux. Практически все дистрибутивы Linux могут использовать cp . Основной формат команды:

 cp [дополнительная_опция] исходный_файл целевой_файл 

Например:

 cp my_file.txt my_file2.txt 

Эта команда Linux создает копию my_file.txt и переименовывает новый файл в my_file2.txt .

По умолчанию команда cp выполняется в том же каталоге, в котором вы работаете. Однако один и тот же файл не может существовать дважды в одном каталоге. Вам нужно будет изменить имя целевого файла, чтобы скопировать его в то же место. Некоторые пользователи добавят _old , некоторые добавят номер, а некоторые даже изменят трехбуквенное расширение (например, . bak вместо 9).0007 .txt ).

Возможно, вы не получите предупреждение до того, как Linux перезапишет ваш файл — будьте осторожны или см. ниже параметр –i .

Additional Options

Additional options can be used in combination with the cp command:

  • –v   verbose : shows the progress of multiple copied files
  • –p   preserve : сохраняет те же атрибуты, такие как дата создания и права доступа к файлу
  • - F Force : Force The Copy, удалив существующий файл первой
  • –i Interactive : подсказок для подтверждения, высококвешенные
  • –R 9007. и подпапки в каталоге
  • –u update : копировать, только если источник новее, чем место назначения

Примечание: Параметр -p (сохранить) заставляет систему сохранить исходный файл атрибуты: время модификации, время доступа, идентификатор пользователя (UID), идентификатор группы (GID), флаги файла, режим файла, списки управления доступом (ACL) и расширенные атрибуты (EA).

Как скопировать файл в другой каталог в Linux

Чтобы скопировать файл из каталога, в котором вы работаете, в другое место, используйте команду:

 cp my_file.txt /new_directory 

Вам не нужно переименуйте файл, если в целевом каталоге уже нет файла с таким же именем.

Чтобы указать путь к исходному файлу:

 cp /etc/my_file.txt /new_directory 

Это позволяет копировать без изменения каталогов. 9Команда 0007 cp создаст каталог /new_directory , если он не существует.

Чтобы переименовать и скопировать файл по другому пути:

 cp my_file.txt /new_directory/my_file2.txt 

Этот параметр полезен для создания резервных копий файлов конфигурации или для копирования данных на устройство хранения.

Копирование нескольких файлов из одного каталога в другой в Linux

Возможно, вам потребуется скопировать несколько файлов за раз.

Список всех файлов, которые необходимо скопировать перед целевым каталогом:

 cp my_file. txt my_file2.txt my_file3.txt /new_directory 

В этом примере были созданы копии всех трех файлов в папке /new_directory .

Используйте подстановочный знак, чтобы указать все файлы, которые имеют общую строку символов:

 cp /pictures/*.jpg /new_directory 

При этом будут найдены все файлы с расширением .jpg в каталоге /pictures , и скопируйте их в папку /new_directory .

До скопируйте всю папку и ее вложенные папки и файлы , используйте параметр –R : это место». Это скопирует все файлы, а также все каталоги в папку / new_directory .

Копирование с помощью команды rsync

Команда rsync в Linux используется для синхронизации или передачи данных между двумя местоположениями. Использование аналогично cp , но следует отметить несколько ключевых отличий.

Чтобы скопировать один файл, введите в терминал следующее:

 rsync –a my_file.txt /new_directory/my_file_backup.txt 
  • Параметр –a означает, что включает все и , а rsync команды — это сохраняет подкаталоги, символические ссылки и другие метаданные.
  • Замените файл my_file.txt в рабочем каталоге.
  • Замените /new_directory/ на место назначения.
  • Использование my_file_backup.txt в качестве цели указывает, что файл будет переименован во время копирования.

Чтобы скопировать каталог с помощью rsync, введите следующее:

 rsync –a /etc/docker/ /home/backup/docker/ 

Это скопирует содержимое каталога /etc/docker/ в / главная/резервная копия/докер/ . Обязательно сохраняйте косые черты. Если не указывать косую черту в исходном каталоге, содержимое будет скопировано в подкаталог.

Чтобы исключить копирование файлов, ознакомьтесь с нашим руководством о том, как исключить файлы и каталоги при передаче данных с помощью команды rsync.

Другие параметры

Команда ls является удобным дополнением к команде cp в Linux.

Чтобы просмотреть содержимое каталога, введите команду:

 ls /directory 

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

Чтобы сменить каталог, используйте cd и имя каталога. Например:

 cd /other_directory 

Командная строка изменится, чтобы показать, что вы изменили каталоги.

Заключение

Теперь вы понимаете, как копировать файлы в Linux. Команда cp — это универсальный и мощный инструмент для управления файлами и их резервного копирования.

команда cp в Linux с примерами

cp означает копию . Эта команда используется для копирования файлов, групп файлов или каталогов. Он создает точный образ файла на диске с другим именем файла. Команда cp требует не менее двух имен файлов в своих аргументах.

Синтаксис:

  cp [ОПЦИЯ] Источник Назначение cp [ВАРИАНТ] Исходный каталог cp [ОПЦИЯ] Источник-1 Источник-2 Источник-3 Источник-n Каталог  Первый и второй синтаксис используются для копирования исходного файла в целевой файл или каталог. Третий синтаксис используется для копирования нескольких источников (файлов) в каталог. 

cp Команда работает в трех основных режимах, и эти операции зависят от количества и типа аргументов, переданных в команде cp:

  1. Два имени файла: Если команда содержит два имени файла, то она содержимое 1-го файла до 2-го файла . Если 2-й файл не существует, то сначала он создает его, и содержимое копируется в него. Но если он существовал, то он просто перезаписывается без предупреждения. Поэтому будьте осторожны при выборе имени файла назначения.
      cp Src_file Dest_file  

    Предположим, что существует каталог с именем geeksforgeeks , содержащий текстовый файл a.txt .
    Пример:

      $  лс .txt  $ cp a.txt b.txt   $  лс а.txt б.txt 
  2. Один или несколько аргументов: Если у команды есть один или несколько аргументов, указывающих имена файлов и после этих аргументов аргумент, указывающий имя каталога, то эта команда копирует каждый исходный файл в целевой каталог с тем же именем, созданный, если не существовало, но если оно уже существовало, оно будет перезаписано, так что будьте осторожны !!.
      cp Src_file1 Src_file2 Src_file3 Dest_directory  

    Предположим, есть каталог с именем geeksforgeeks , содержащий текстовый файл a. txt, b.txt и имя каталога new , в который мы собираемся скопировать все файлы.
    Пример:

      $  лс a.txt b.txt новый Изначально новый пустой  $ лс новый   $ cp a.txt b.txt новый   $ лс новый  а.txt б.txt 

    Примечание: В этом случае последний аргумент должен быть именем каталога . Чтобы указанная выше команда работала, Dest_directory должен существовать, потому что команда cp не создаст его.

  3. Два имени каталога : Если команда содержит два имени каталога, cp копирует все файлы исходного каталога в целевой каталог, создавая любые необходимые файлы или каталоги. Для этого режима работы требуется дополнительная опция, обычно R , чтобы указать на рекурсивное копирование каталогов.
      cp -R Исходный_каталог Целевой_каталог  

    В приведенной выше команде поведение cp зависит от того, существует ли Dest_directory или нет. Если Dest_directory не существует, cp создает его и рекурсивно копирует содержимое Src_directory как есть. Но если Dest_directory существует, то копия Src_directory становится подкаталогом под Dest_directory 9.0034 .

Параметры:

Существует множество параметров команды cp , здесь мы обсудим некоторые из полезных параметров: и b.txt . Этот сценарий полезен для понимания следующих параметров.

  $ л.с. geeksforgeeks  а.txt б.txt $ кот a.txt  ГФГ $ кот b.txt  GeeksforGeeks 

1. -i(interactive): i означает интерактивное копирование. С этой опцией система сначала предупреждает пользователя перед перезаписью целевого файла. cp запрашивает ответ, если нажать y то перезаписывает файл и при любом другом варианте оставляет его не скопированным.

  $ cp -i a.txt b.txt   cp: перезаписать 'b.txt'? г  $ кот b.txt  ГФГ 

2. -b(резервная копия): С помощью этой опции команда cp создает резервную копию целевого файла в той же папке с другим именем и в другом формате.

  $  лс а.txt б.txt  $ cp -b a.txt b.txt   $  лс a.txt b.txt b.txt~ 

3. -f(force): Если система не может открыть целевой файл для операции записи, потому что у пользователя нет разрешения на запись для этого файла, то с помощью -f с командой cp , сначала удаляется файл назначения, а затем выполняется копирование содержимого из исходного файла в целевой.

  $ ls -l b.txt  -r-xr-xr-x+ 1 Пользователь Пользователь 3 24 ноября 08:45 b.txt Пользователь, группа и другие лица не имеют права на запись. Без опции -f команда не выполняется  $ cp a.txt b.txt   cp: невозможно создать обычный файл 'b.txt': разрешение отклонено  С опцией -f команда выполнена успешно  $ cp -f a.txt b.txt  

4. -r или -R: Копирование структуры каталогов. С этой опцией команда cp показывает свое рекурсивное поведение, рекурсивно копируя всю структуру каталогов.
Предположим, мы хотим скопировать каталог geeksforgeeks , содержащий множество файлов и каталогов, в каталог gfg (не существует).

 $ ls geeksforgeeks/  a.txt b.txt b.txt~ Папка1 Папка2 Без опции -r ошибка  $ cp geeksforgeeks gfg   cp: -r не указано; без каталога «geeksforgeeks»  С -r выполнить успешно  $ cp -r geeksforgeeks gfg   $ ls gfg/  a.txt b.txt b.txt~ Папка1 Папка2 

5. -p(сохранить): С опцией -p cp сохраняет следующие характеристики каждого исходного файла в соответствующем целевом файле: время последней модификации данных и время последнего доступа, право собственности (только если у него есть права на это) и биты прав доступа к файлу.
Примечание: Для сохранения характеристик необходимо быть пользователем root системы, иначе характеристики изменятся.

  $ ls -l a.txt  -rwxr-xr-x+ 1 Пользователь Пользователь 3 24 ноября 08:13 a.txt  $ cp -p a.txt c.txt   $ ls -l c.txt  -rwxr-xr-x+ 1 Пользователь Пользователь 3 24 ноября 08:13 c.txt 

Как мы видим выше, и a.txt , и c.txt (созданный путем копирования) имеют одинаковые характеристики.

Примеры:

Копирование с использованием подстановочного знака *: Подстановочный знак в виде звезды представляет что угодно, т.


Learn more

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: