Как скопировать в debian

Обновлено: 02.07.2024

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

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

  • ls - список файлов в директории;
  • cd - переход между директориями;
  • rm - удалить файл;
  • rmdir - удалить папку;
  • mv - переместить файл;
  • cp - скопировать файл;
  • mkdir - создать папку;
  • ln - создать ссылку;
  • chmod - изменить права файла;
  • touch - создать пустой файл.

А теперь перейдем к подробному рассмотрению всех этих команд.

1. ls - просмотр содержимого папки

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


Вы можете вывести список файлов из всех подкаталогов рекурсивно, для этого используйте опцию -R:

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


Чтобы получить больше информации и вывести все имена файлов в виде списка используйте опцию -l:


2. cd - изменить папку

Команда cd позволяет изменить текущую папку на другую. По умолчанию, текущей считается домашняя папка, например, cd Desktop меняет папку на рабочий стол, если вы выполните ее из домашнего каталога:


Вы также можете указать полный путь к папке:


Команда cd .. переходит в папку, которая находится выше на одну в файловой системе:


Вы также можете вернуться в предыдущую рабочую папку:

3. rm - удалить файлы

Команда rm позволяет удалить файл. Будьте очень осторожны с ней, она не будет спрашивать подтверждения:


Например, rm file удалит файл с именем file, который находится в текущей папке. Как и в предыдущих вариантах, вы можете указать полный путь к файлу linux. Например:

Если вы хотите удалить папку, то нужно использовать опцию -r. Она включает рекурсивное удаление всех файлов и папок на всех уровнях вложенности:

rm -r /home/user/photo/

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

4. rmdir - удалить папку

Команда rmdir позволяет удалить пустую папку. Например, команда rmdir directory удалит папку directory, которая находится в текущей папке:


Если вам нужно удалить папку с файлами, то нужно использовать утилиту rm вместе с опцией -r.

5. mv - перемещение файлов

Команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile:

mv file newfile


Чтобы переместить файл в другую папку нужно указать путь к ней, например, переместим файл file в папку /home/user/tmp/

mv file /home/user/tmp/

6. cp - копирование файлов

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

cp file newfile


Вы также можете рекурсивно скопировать всю папку с помощью команды cp -r. Эта команда скопирует всю папку вместе со всеми файлами и вложенными папками в новое место. Например, скопируем папку /etc/:

cp -r /etc /etc_back

7. mkdir - создать папку

Команда mkdir позволяет создать новую папку mkdir test создаст папку в текущем каталоге:


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

8. ln - создание ссылок

Утилита ln позволяет создавать жесткие и символические ссылки на файлы или папки. Для создания символической ссылки используется опция -s. Например, вы создадим ссылку на папку с загрузками:

ln -s /home/user/Downloads/ /home/user/test/


Для создания жесткой ссылки никаких опций задавать не нужно:

ln /home/user/Downloads/ /home/user/test/

9. chmod - изменить права

chmod позволяет изменить права доступа к файлам. Например, chmod +x script.sh добавляет флаг исполняемости к файлу script.sh:

chmod +x script.sh


Чтобы убрать флаг исполняемый используйте опцию -x:

chmod -x script.sh


Подробнее о том, как работают разрешения для файлов смотрите в статье права доступа к файлам в Linux.

10. touch - создать файл

Команда touch создает пустой файл. Например, touch file создаст пустой файл в текущей папке с именем file:


Для создания файлов через терминал существует еще несколько команд, они рассмотрены в статье как создать файл в linux.

11. mc

Работа с файлами Linux через терминал может выполняться не только с помощью обычных консольных команд, каждая из которых выполняет только определенное действие. Вы можете использовать полнофункциональный файловый менеджер с псевдографическим интерфейсом на основе ncurses. Midnight Commander - это файловый менеджер, который можно использовать прямо в терминале. Для установки mc в Ubuntu выполните:

sudo apt install mc

После завершения установки достаточно выполнить команду mc:


Используйте клавиши со стрелками для перемещения по файлах, Tab для перехода на другую панель, Alt+1 для просмотра справки и Alt+2 для вывода меню:


Если терминальное окружение поддерживает мышь, то вы можете ее использовать в Midnight Commander.

Выводы

В этой статье мы рассмотрели как выполняется работа с файлами и каталогами в linux, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!

Если интересуетесь ОС Debian, рекомендую обратиться к тегу Debian на моем блоге.

Debian. Шпаргалка сисадмина. Работа с файлами и каталогами

Команды сгруппированы по выполняемым изменениям.

Создание, изменение и удаление файлов и каталогов

touch

Изменяет временные штампы файла

Если заданный файл еще не существует, то он создается (как пустой файл с правами доступа 0666, с учетом umask), если не задана опция -c.

Создание файла file_test01 в текущем каталоге:

touch file_test01

Создание файла с указанием метки времени:

touch -t 200701310846.26 file_test01

Можно указать и будущую дату.

Файл будет создаy в том случае, если будет не пустым.
Создание файла file_test02 в текущем каталоге:

nano file_test02

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

Создание пустого файла file_test03 в текущем каталоге:

> file_test03

Про создание файлов на этом все.

mkdir

Создать каталог testdir01 в /root/:

mkdir /root/testdir01

Создать каталог testdir02 в /root/ с полными правами доступа только у владельца, у остальных нет прав даже на чтение (о правах доступа см. ниже):

mkdir -m 700 /root/testdir02

Для удаления файлов и каталогов можно воспользоваться командами ниже.

Удаляет файлы или каталоги

Удалить файл testfile01 из каталога /root/:

rm /root/testfile01

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

rm testdir01

rm: невозможно удалить «testdir01»: Это каталог

rm -r testdir01

rmdir

Удаляет пустые каталоги

Удалить каталог testdir04 из текущего расположения:

rmdir testdir04

Непустые каталоги удалить не получится:

rmdir /root/testdir02

rmdir : не удалось удалить « / root / testdir02 » : Каталог не пуст

Придется использовать rm, как описано выше.

Копирование, переименование и перемещение файлов и каталогов

Перемещает (переименовывает) файлы

mv /root/file_primer03 /root/testdir02/fileprimer031

Хотя для изменения имени файла существует и другая команда.

Для копирования файлов воспользуйтесь другой командой.

Копирование файлов и каталогов

Копирование файла test_file01 из текущего расположения в каталог testdir02:

cp test_file01 testdir02/test_file01

Рекурсивное копирование каталога testdir02 из текущего расположения в новый каталог testdir02_copy:

cp -r testdir02 testdir02_copy

Очень интересное описание параметра:

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

О консольных текстовых редакторах было упомянуто в самом начале статьи, поэтому в этом разделе рассматриватся они не будут.

Concatenate files and print on the standard output

Отображение содержимого файла test_file01:

cat test_file01

Объединение файла test_file01 с файлом test_file02, результат записывается в файл test_file03 в текущем расположении:

cat test_file01 test_file02 > test_file03

Sort lines of text files

Output the first part of files

Отображение первых строчек файла test_file01 (по умолчанию последние 10 строчек):

head test_file01

Отображение первых 4 строчек файла test_file01:

head -n 4 test_file01

Output the last part of files

Отображение последних строчек файла test_file01 (по умолчанию последние 10 строчек):

tail test_file01

Отображение последних 4 строчек файла test_file01:

tail -n 4 test_file01

-n - output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth

Read from standard input and write to standard output and files

Удобная команда, предназначеня для одновременного вывода информации на экран и в файл.

О всех описанных выше командах можно подробнее прочитать в статье "Операции с файлами и фильтрация".

grep, egrep, fgrep, rgrep

Print lines matching a pattern

О данных командах, в частности речь идет о grep, в некотором будущем я планирую написать отдельную статью, т.к. модели их применения достаточно объемны.

ls, dir, vdir

Выводит содержимое каталога

Отобразить список файлов в текущем расположении:

ls -l
-l - Выдавать (в одноколоночном формате) тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла (в байтах), временной штамп и имя файла.

Отобразить список файлов в текущем расположении рекурсивно:

ls -lR

-R - Рекурсивно выдавать список содержимого всех каталогов.

Подробнее о команде ls можно прочитать в статье "15 базовых примеров команды ls в Linux"

Поиск файлов

Search for files in a directory hierarchy

Поиск файлов, начинающихся на testf, с корневого каталога:

find / -name "testf*"

locate

Find files by name

Описание с официального сайта:

Команда updatedb создаёт индекс всех файлов и папок, имеющихся в системе. Команда locate позволяет быстро находить файлы в системе по этому индексу без необходимости сканирования всей файловой системы каждый раз. Также см. пакеты mlocate и slocate.

whereis

Locate the binary, source, and manual page files for a command

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

whereis nano

which

Locate a command

Также прочитать подробнее о командах поиска можно в статье "5 способов поиска файлов в Linux, используя терминал.".

Другие команды

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

pwd - print name of current/working directory/

Очень полезная команда, которая наиболее часто используется вообще без каких-либо аргументов.

cd - используется для перехода между каталогами.

Для перехода в домашний каталог:

cd

Для перехода в каталог /usr/bin/:

cd /usr/bin/

Переход на один уровень вверх:

cd ..

ln - создает ссылки между файлами

du - оценка места на диске, занимаемого файлом

Вывести размер текущего каталога:

du -sh

На этом пока все, по мере необходимости буду дополнять статью другими командами.

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

man - эта команда выводит справочную информация по нужной вам команде, такую как синтаксис, ключи, описание и т.д. Синоним info.
sudo - переход в режим суперпользователя (после первой команды sudo необходимо ввести пароль пользователя).
Для запуска в терминале команды с правами администратора просто наберите перед ней sudo. Пример: sudo reboot

Команды для работы с файлами

pwd – показать текущий каталог
cd - переход в заданную папку
ls - показывает список файлов текущей папки, с ключом -l показывает дополнительные сведения о файлах
cp - копирование файлов/папок
mv - перемещение файлов/папок
rm - удаление файлов/папок, с ключем -R удаляет и все вложенные папки
mkdir - создать папку
rmdir - удаление пустой папки
chmod - изменить права доступа к файлу.

Команды для работы с пакетами

Это одна команда (утилита) с разными ключами.
apt-get update - обновление информации о пакетах из репозиториев
apt-get upgrade - обновление всех пакетов
apt-get clean - очищает локальный репозиторий, т.е. удаляет всё, что вы ранее скачивали. Очень полезно иногда прогонять для очистки диска.
apt-get autoremove - удаление ранее скачаных, но более ненужных пакетов
apt-get remove - удаление пакета из системы, с сохранением его конфигурационных файлов
apt-get purge - удаление пакета со всеми зависимостями
apt-get install - установка пакета.

Управление процессами

ps - показывает текущие активные процессы
kill - команда отправляет сигнал прекращения работы тому или иному процессу, используется для прекращения работы зависшего приложения
killall - прекращение работы всех процессов, соответствующих заданным параметрам
top - интерактивный список текущих процессов, отсортированных по % использования центрального процессора.

Сетевые команды

ifconfig - выводит информацию о сетевых интерфейсах (в windows используется ipconfig)
pppoeconf - комманда настройки подключения к интернет
ping host – пропинговать host и вывести результат
whois domain – получить информацию whois для domain
route host - показать путь прохождения пакетов, от вас к host
wget file – скачать file
ssh user@host – подключится к host как user
ufw enable - включить фаервол
ufw disable - выключить фаервол.

Копирование файлов - одна из задач, наиболее часто возникающих перед пользователями персонального компьютера. Конечно, можно открыть файловый менеджер, войти в нужную папку и скопировать файл с помощью контекстного меню - тут не о чем говорить. Но в этой статье я хотел бы рассмотреть копирование файлов в 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:

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

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

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

/папка будет скопирована в папку

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

/документы будет перезаписана.

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

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

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

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

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

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

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

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

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

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

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

find . -name 6 -exec cp <>

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

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

/ | egrep '[a-zA-Z]' | xargs cp -t

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

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

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

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

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

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

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

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

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

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

Выводы

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

Читайте также: