Работа с файлами

Последнее обновление: 12.03.2024

Создание файлов

Для создания файла применяется команда touch. Например, создадим в папке Documents файл "hello.txt":

eugene@Eugene:~$ touch ~/Documents/hello.txt

Удаление файла

Для удаления файлов (а также каталогов) применяется команда rm. Например, удалим выше созданный файл "hello.txt" из папки Documents:

eugene@Eugene:~$ rm ~/Documents/hello.txt

Команду rm можно также использовать для удаления каталогов. В этом случае необходимо использовать опцию -r. Например, удаление папки "test":

eugene@Eugene:~$ rm -r ~/Documents/test

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

Для копирования файлов/каталогов применяется команда cp. Она имеет следующую форму:

cp source destination

Первый аргумент команды - source обычно представляет имя каталога, файлов или шаблон файла, которые надо скопировать. Второй аргумент - destination представляет путь, куда надо скопировать. Например, скопируем файл "Documents/test/hello.txt" в папку "Documents":

eugene@Eugene:~$ cp ~/Documents/test/hello.txt ~/Documents/hello.txt

Другой пример - скопируем файл "Documents/test/hello.txt" в папку "Documents/test2":

eugene@Eugene:~$ mkdir ~/Documents/test2
eugene@Eugene:~$ cp ~/Documents/test/hello.txt ~/Documents/test2

В данном случае важно, что папка "test2" уже существует перед копированием. Иначе будет создаваться текстовый файл "test2" с содержимым из файла "hello.txt".

Для копирования каталогов применяется флаг -r. Например, скопируем содержимое папки "Documents/test" в папку "Documents/test4"

eugene@Eugene:~$ cp -r ~/Documents/test/ ~/Documents/test4

При этом папка test4 создается автоматически.

Шаблон файла может применять символ звездочки * для указания всех файлов. Например, команда cp ~/* /tmp копирует все файлы из домашнего каталога в каталог /tmp

Чтобы скопировать скрытые файлы, применяется символ звездочки. Например, команда:

eugene@Eugene:~$ mkdir ~/Documents/test5
eugene@Eugene:~$ cp .* ~/Documents/test5

cкопирует все скрытые файлы из текущего каталога в папку "Documents/test5", поскольку первый аргумент относится ко всем файлам, имена которых начинаются с точки (папка test5 должна быть предварительно создана).

Если надо скопировать еще и скрытые каталоги и их содержимое, применяется флаг -r:

cp -r .* ~/Documents/test5

Опции

Команда принимает множество опций. Отмечу некоторые из них:

  • -a: указывает, что свойства копируемых файлов, например, разрешения, также копируются

  • -b: резервное копирование. Если команда cp перезапишет существующий файл назначения, эта опция гарантирует, что сначала будет создана резервная копия этого файла назначения.

  • -f: если файл в месте назначения запрещает копировать файл, эта опция приведет к принудительному копированию. Это означает, что файл назначения перезаписан.

  • -i: при использовании этой опции cp запрашивает перезапись, если указанный файл уже существует в месте назначения.

  • -p: гарантирует, что атрибуты файла, такие как владельцы и разрешения, также копируются.

  • -r: гарантирует, что каталоги копируются рекурсивно.

  • -u: копируется только в том случае, если целевой файл старше исходного файла или если целевой файл не существует.

Перемещение файлов/каталогов

Команда mv перемещает файлы/каталоги в новое место. Она имеет следующую форму:

mv source destination

Первый аргумент команды - source представляет каталоги/файлы, которые надо переместить. Второй аргумент - destination представляет путь, куда надо переместить. Например, переместим файл "Documents/test/hello.txt" в папку "Documents/test6":

eugene@Eugene:~$ mkdir ~/Documents/test6
eugene@Eugene:~$ mv ~/Documents/test/hello.txt ~/Documents/test6

В данном примере предварительно создается каталог test6, в который затем перемещается файл. Однако если бы каталога test6 не существовало, то создавался бы файл "test6", в который помещалось бы содержимое из файла "Documents/test/hello.txt"

Аналогично можно перемещать каталоги. Например:

eugene@Eugene:~$ mkdir ~/Documents/test7
eugene@Eugene:~$ touch ~/Documents/test7/helworld.txt
eugene@Eugene:~$ mv ~/Documents/test7 ~/Documents/test8

Для теста здесь создается папка test7, в которой создается файл helworld.txt. Далее мы перемещаем каталог "Documents/test7" по пути "Documents/test8". Что конкретно произойдет, зависит от того, существует ли каталог "test8" или нет. Если он существует, то в нем создается подкаталог "test7" со всем содержимым из "Documents/test7". Если "test8" НЕ существует, то создается катлог "test8", в который помещается все содержимое из "Documents/test7"

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

eugene@Eugene:~$ mv ~/Documents/test8 ~/Documents/test9

Если test9 не существует, то фактически test8 будет переименован в test9.

Количество слов в файле

Специальная команда wc позволяет подсчитать количество слов в файле:

eugene@Eugene:~$ wc ~/Documents/test/hello.txt
  32  274 1572 /home/eugene/Documents/test/hello.txt

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

Ссылки

Ссылка (link) в Linux представляет указатель на файл. Ссылка облегчает поиск нужных файлов. Символическая ссылка ссылается на имя файла. Ее можно использовать для ссылки на файл, который находится где угодно. Однако символическая ссылка зависит от исходного файла. Например, если исходный файл будет удален, символическая ссылка больше не будет работать.

Для создания символической ссылки применяется команду ln с опцией -s. Например, для создния ссылки с именем "myhost" в домашнем каталоге, которая ссылается на файл /etc/hosts, используется следующая команда:

ln -s /etc/hosts ~/myhost

В результате в домашнем каталоге будет создан ярлык с именем "myhost". Этот ярлык относится к файлу "/etc/hosts". И при каждом открытии файла "myhost" фактически будет открываться файл /etc/hosts.

Для просмотра информации о ссылке можно использовать команду ls -l:

eugene@Eugene:~$ ls -l ~/myhost
lrwxrwxrwx 1 eugene eugene 10 Mar 11 20:15 /home/eugene/myhost -> /etc/hosts

Первая буква l является сокращением от "link" и указывает, что это ссылка. Кроме того, в выводе выражение /home/eugene/myhost -> /etc/hosts указывает, на какой именно файл ссылается ссылка.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850