Линукс как работать с файлами

Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки

Глава 7. Работа с файлами

Из данной главы вы узнаете о том, как определять тип файлов, создавать, удалять, копировать и перемещать файлы с помощью таких утилит, как file , touch , rm , cp , mv и rename .

Все имена файлов регистрозависимы

Имена файлов в Linux (или в любой системе Unix) являются регистрозависимыми. Это означает, что имена FILE1 и file1 не являются равноценными, а путь к файлу /etc/hosts отличен от пути к файлу /etc/Hosts (последнего файла не должно существовать в файловой системе типичного компьютера, работающего под управлением Linux).

Все является файлом

Любая директория на самом деле является файлом (с регистрозависмым именем!), хотя этот файл и имеет специальный тип. Каждый терминал (например, /dev/pts/4 ), любой жесткий диск или раздел на нем (например, /dev/sdb1 ) и любой процесс представлены где-либо в рамках файловой системы с помощью файла . После изучения данной главы у вас не останется сомнений в том, что в Linux все является файлом .

Утилита file

Утилита file использует файл со списком «магических последовательностей байт», содержащий шаблоны для распознавания типов данных. Файл со списком «магических последовательностей байт» расположен по пути /usr/share/file/magic . Используйте команду man 5 magic в случае необходимости получения дополнительной информации о нем.

Утилита touch

Создание пустого файла

Один из простых способов создания пустого фала заключается в использовании утилиты touch . (Позднее в данной книге мы рассмотрим множество других способов создания файлов.)

Команда touch -t

Удаление файлов навсегда

Утилита cp

Копирование отдельных файлов

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

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

Утилита mv

Переименование файлов с помощью утилиты mv

В том случае, если вам необходимо переименовать один файл, утилита mv является предпочтительным инструментом.

Переименование директорий с помощью утилиты mv

Утилита mv поддерживает параметр -i по аналогии с утилитами cp и rm .

Утилита rename

Об утилите rename

Утилита rename является одним из редких случаев, когда в рамках книги «Фундаментальные основы Linux» приходится делать разделение между дистрибутивами Linux. Практически каждая из описанных в данной книге утилит работает практически на каждом компьютере под управлением Linux. Но реализации утилиты rename в различных дистрибутивах отличаются.

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

Утилита rename в дистрибутиве Debian/Ubuntu

Утилита rename в дистрибутиве Debian имеет сложный синтаксис (используются регулярные выражения) для единовременного переименования множества файлов.

Утилита rename в дистрибутиве CentOS/RHEL/Fedora

Практическое задание: работа с файлами

1. Выведите список файлов директории /bin.

2. Выведите информацию о типах файлов /bin/cat, /etc/passwd и /usr/bin/passwd.

3a. Загрузите файлы wolf.jpg и LinuxFun.pdf с ресурса http://linux-training.be (с помощью команд wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files/books/LinuxFun.pdf)

3b. Выведите информацию о типах файлов wolf.jpg и LinuxFun.pdf.

3c. Переименуйте файл wolf.jpg в wolf.pdf (с помощью команды mv).

3d. Выведите информацию о типах файлов wolf.pdf и LinuxFun.pdf.

4. Создайте директорию

/touched и перейдите в нее.

5. Создайте файлы today.txt и yesterday.txt в директории touched.

6. Измените дату создания файла yesterday.txt таким образом, чтобы она совпадала с датой прошлого дня.

7. Создайте копию файла yesterday.txt с именем copy.yesterday.txt.

8. Переименуйте файл copy.yesterday.txt в kim.

9. Создайте директорию с именем

/testbackup и скопируйте все файлы из директории

10. Используйте одну команду для удаления директории

/testbackup и всех файлов из нее.

11. Создайте директорию

/etcbackup и скопируйте файлы с расширением .conf (*.conf) из директории /etc в нее. Проверьте, был ли осуществлен обход всех поддиректорий директории /etc?

12. Используйте утилиту rename для переименования всех файлов с расширением .conf (*.conf) таким образом, чтобы расширения всех этих файлов изменились на .backup. (Если у вас есть возможность работы более чем со одним дистрибутивом, попробуйте выполнить эту операцию во всех этих дистрибутивах!).

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

1. Выведите список файлов директории /bin.

2. Выведите информацию о типах файлов /bin/cat, /etc/passwd и /usr/bin/passwd.

3a. Загрузите файлы wolf.jpg и LinuxFun.pdf с ресурса http://linux-training.be (с помощью команд wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files/books/LinuxFun.pdf)

3b. Выведите информацию о типах файлов wolf.jpg и LinuxFun.pdf.

3c. Переименуйте файл wolf.jpg в wolf.pdf (с помощью команды mv).

3d. Выведите информацию о типах файлов wolf.pdf и LinuxFun.pdf.

4. Создайте директорию

/touched и перейдите в нее.

5. Создайте файлы today.txt и yesterday.txt в директории touched.

6. Измените дату создания файла yesterday.txt таким образом, чтобы она совпадала с датой прошлого дня.

7. Создайте копию файла yesterday.txt с именем copy.yesterday.txt.

Читайте также:  Sftp подключить как диск windows

8. Переименуйте файл copy.yesterday.txt в kim.

9. Создайте директорию с именем

/testbackup и скопируйте все файлы из директории

10. Используйте одну команду для удаления директории

/testbackup и всех файлов из нее.

11. Создайте директорию

/etcbackup и скопируйте файлы с расширением .conf (*.conf) из директории /etc в нее. Проверьте, был ли осуществлен обход всех поддиректорий директории /etc?

Будут скопированы исключительно файлы с расширением .conf (*.conf), находящиеся непосредственно в директории /etc/.

12. Используйте утилиту rename для переименования всех файлов с расширением .conf (*.conf) таким образом, чтобы расширения всех этих файлов изменились на .backup. (Если у вас есть возможность работы более чем со одним дистрибутивом, попробуйте выполнить эту операцию во всех этих дистрибутивах!).

Источник

Работа с файлами и каталогами в Linux

Введение

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

Требования

Cервер с Ubuntu 20.04

Все команды, описанные ниже, будут работать и в других дистрибутивах Linux.

Расположение каталогов в файловой системе

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

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

Результат выполнения команды выглядит следующим образом:

Домашний каталог располагается после имени учетной записи пользователя, в приведенном примере он называется /demo. Этот каталог находится в каталоге с именем /home и в каталоге верхнего уровня, который называется root или корневой каталог, поэтому представлен одной косой чертой /.

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

Для просмотра содержимого каталога используется команда ls. Название этой команды является сокращением слов list files.

Просмотреть содержимое любой директории можно следующими способами:

Либо введя команду:

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

К команде ls можно добавлять дополнительные флаги, например, чтобы показать детализированное представление (права, список владельцев файлов или папок, размер, дату последнего модифицирования) файлов и директорий в текущей директории, можно использовать флаг -l:

Результат выполнения команды:

Для просмотра списка всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a:

Результат выполнения команды:

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

Результат выполнения команды:

Перемещение между каталогами

Для перехода в домашний каталог используется команда cd. Название этой команды является сокращением слов change directory.

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

Для перехода в предыдущую директорию, в которой мы находились до перехода в текущую директорию также используется команда cd.

В Linux-системах каждый файл и каталог находятся в самой верхней директории, которая называется «корневой» и обозначается одним символом слэш /.

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

Каждый абсолютный путь должен начинаться с косой черты — символа слэш /.

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

Для перехода в директорию двумя уровнями выше:

Операции с файлами и каталогами

У каждой команды имеется множество параметров, чтобы узнать их, наберите команду и параметр —help, например:

Далее приведен список основных команд навигации в консоли Linux.

Создание

Создание файлов производится с помощью команды:

Создание каталогов выполняется с помощью команды вида:

Название этой команды является сокращением слов make directory.

Создание двух каталогов одновременно выполняется с помощью команды:

Для создания дерева каталогов используется команда следующего вида:

Удаление

Для удаления директорий используется команда rmdir имя_директории. Название этой команды является сокращением слов remove directory.

Для удаления файлов используется команда rm. Например, для удаления файла с именем file1 используется команда:

Команда rm также позволяет удалять не только файлы, но и каталоги.

Для удаления директории с именем dir1 со всеми подкаталогами и файлами используется опция -r (от слова recursive):

Можно удалить одновременно две директории со всем их содержимым:

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

Команда для удаления файла будет выглядеть так:

Команда для удаления каталога:

Перемещение

Для перемещения и переименования файлов и каталогов используется команда mv. Название этой команды является сокращением слова move.

Переименовать файл можно с помощью команды:

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

Копирование

Для копирования используется команда cp. Название этой команды является сокращением слова copy.

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

Для того чтобы копировать директорию dir1 в директорию dir2, используется команда:

Скопировать файл с именем file1 в директорию с именем dir1, можно с помощью команды:

Редактирование файлов

Мы ознакомились с основными командами для работы с каталогами и файлами.

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

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

В результате ввода в терминал команды nano будет открыт чистый файл.

Интерфейс выглядит следующим образом:

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

Читайте также:  Как изменить букву жесткого диска windows 10

В середине должно располагаться содержимое файла, в настоящее время оно пустое.

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

Для того чтобы открыть справку используйте сочетание клавиш CTRL-G.

Закрывается справка с помощью сочетания клавиш CTRL-X. После закрытия справки мы возвращаемся к редактированию.

Вводить и редактировать можно любой текст, например, можно ввести: “Hello World!”

Для сохранения внесенных изменений следует нажать сочетание клавиш CTRL-O. Внимание! Это буква О, а не ноль.

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

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

После ввода имени файла нажмите клавишу ENTER.

Для того чтобы выйти из тестового редактора нажмите сочетание клавиш CTRL-X.

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

Вы можете нажать клавишу Y, чтобы сохранить изменения, клавишу N для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.

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

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

Заключение

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

Источник

Основы Linux. Работа с файлами и каталогами

Многие пользователи Windows, по разным причинам, задумываются о переходе на Linux. Почему это так, рассуждать не будем, потому что философствовать на эту тему можно до бесконечности. Точно также как и не будем обсуждать что лучше — Windows или Linux, эта тема тоже философская. Одно можно сказать с полной уверенностью, многих людей останавливает стереотип, что Linux это очень сложно и надо быть крутым хацкером. На самом деле это полный бред, ничего сверхъестественного в этой операционной системе нет, и через какое-то время использования ты будешь себя чувствовать не менее комфортно чем в Windows.

И для тех кто всё-таки принял волевое решение, небольшой гайд по основам работы с файлами и каталогами.

Начнём с файловой системы, здесь нет привычных, пользователям Windows, дисков C, D и так далее, файловая система Linux имеет древовидную структуру и в основе её лежит корневой каталог, который обозначается символом «/», а за ним находятся остальные папки.

Конечно же в Linux есть набор стандартных каталогов которые унифицированы согласно стандарту FHS (Filesystem Hierarchy Standard), и среднестатистическому пользователю Windows разобраться где здесь чего, может быть сложновато, поэтому для большего понимания, давай ознакомимся с основными:

  • /bin — основные двоичные модули (стандартные утилиты);
  • /boot — содержит конфигурационные файлы загрузчика GRUB, образы ядра и другие вспомогательные файлы загрузчика;
  • /dev — содержит файлы устройств, тут не лишним будет заметить, что в Linux все подключенные устройства представлены в виде файлов и обращение к ним происходит именно через файлы в этом каталоге;
  • /etc — содержит конфигурационные файлы операционной системы и всех сетевых служб, здесь находятся именно общесистемные конфигурационные файлы, а пользовательские конфигурационные файлы находятся в домашнем каталоге каждого пользователя;
  • /home — здесь находятся домашние каталоги всех пользователей, которые зарегистрированы в системе, а именно хранятся пользовательские данные и конфигурационные файлы конкретного пользователя. Обычный пользователь имеет права записи только в своем домашнем каталоге, а что бы изменять другие файлы в системе нужно иметь права доступа root;
  • /lib – здесь находятся различные библиотеки и модули ядра, именно сюда устанавливаются различные зависимости необходимые для корректной работы приложений;
  • /lost+found — в этот каталог система будет помещать поврежденные файла, в последствии их можно попробовать восстановить;
  • /media — подключаемые носители, когда вставишь в компьютер флешку в этом каталоге создастся подкаталог с именем тома твоего устройства и используя его можно получить доступ к содержимому устройства;
  • /mnt — в этот каталог можно мониторовать внешние или дополнительные файловые системы
  • /opt — каталог содержащий вспомогательные пакеты, туда могут устанавливаться дополнительные пакеты программного обеспечения;
  • /proc — содержит файлы с информацией о системе и процессах;
  • /root – домашний каталог пользователя root;
  • /run — в этом каталоге приложения могут хранить вспомогательные файлы, в том числе идентификаторы процессов;
  • /sbin — содержит двоичные файлы, необходимые для администрирования системы;
  • /srv – хранятся данные сервисных служб;
  • /sys — информация о системе;
  • /tmp – временные файлы;
  • /usr — находятся приложения и файлы, используемые пользователями;
  • /var — содержит наиболее часто изменяющиеся файлы, например, кэши программ, файлы системных журналов, временные файлы и т.д.

Теперь перейдём непосредственно к работе с каталогами и файлами и конечно, же работать с ними мы будем из терминала, потому в Linux без терминала никак, прими это за аксиому, в терминале работать быстро, надёжно и удобно (когда разберёшься). Поэтому давай разберём наиболее часто используемые команды.

И начнем мы с обновления системы. Есть несколько способов, в том числе это можно делать из пункта меню «Центра приложений», но проще это сделать командами:

Читайте также:  Перевод строки windows linux
sudo apt update синхронизирует информацию из репозитория с локальным кэшем, эту команду
необходимо выполнять перед установкой любых пакетов
sudo apt full-upgrade обновит все пакеты, для которых вышли новые версии, в том числе установит
необходимые зависимости и удалит мешающие пакеты, а также обновится
ядро системы, если вышла новая версия

В предыдущем примере, для обновления системы, мы использовали менеджер пакетов — apt, как понятно из названия, он используется для установки, обновления и удаления программных пакетов в системе:

apt-get install program установить/обновить program
apt-get remove program удалить program, сохранив файлы конфигурации
apt-get purge program удалить program и файлы конфигурации
apt-get check проверить зависимости
apt-get autoclean удалить старые архивные файлы пакетов

Одна из команд которую ты будешь применять очень часто это cd. Это команда изменения каталога, она позволяет перемещаться между каталогами:

cd /home/user перейти в указанный каталог
cd / перейти корневой каталог
cd перейти в домашний каталог текущего пользователя
cd ../.. перейти в каталог на два уровня выше
cd — перейти в каталог в котором находился до перехода в текущий

Следующая очень полезная команда: ls. Просмотр содержимого каталога:

ls покажет файлы и каталоги в текущей папке
ls -l покажет содержимое с подробной информацией (дата создания, размер, права доступа и т.д.)
ls -a покажет содержимое включая скрытые файлы (начинаются с символа «.»)

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

Что бы создать новый каталог, нужно воспользоваться командой mkdir и указать название нового каталога (не забывай, что ты можешь создавать новые каталоги только внутри папки в которой у тебя есть права на запись (о правах доступа будет чуть ниже)):

mkdir newfolder создаст каталог с именем newfolder
mkdir new new1 создаст два каталога с именами new и new1
mkdir -p new/new1/new2 создаст указанное дерево директорий

Рассмотрим команды копирования:

cp file1 file2 скопировать файл file1 в файл file2 (если файлы не в текущем каталоге
необходимо указывать полный путь к файлам
cp file1 /home/user1/ скопировать файл file1 в каталог user1
cp -r folder1 folder2 скопировать каталог folder1 в каталог folder2 (если каталога folder2 не
существует он будет создан) (folder1/2 это полный путь к каталогу)

Команды удаления:

rm file1 удалить file1
rm -r folder1 удалить каталог folder1

Команды переименования/перемещения:

mv file1 newname переименовать файл (каталог) file1 в newname
mv file1 folder1 переместить файл file1 в каталог folder2
mv folder1 folder2 переместить каталог folder1 в каталог folder2

Просмотр содержимого файлов:

cat file1 показать содержимое файла file1 в терминале
tac file1 показать содержимое файла file1 в терминале начиная с конца
less file1 показать содержимое файла file1 в терминале, постранично, с возможно листать страницы

Права доступа к файлам и каталогам

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

chmod кому-какие-права-предоставить имя_файла

Права доступа к файлам:
r — право на чтение данных;
w — право на изменение содержимого (но не удаление);
x — право на исполнение файла;

Права доступа к каталогам:
r — право на чтение каталога (можно прочитать содержимое, т.е. получить список объектов, находящихся в каталоге)
w — право на изменение содержимого каталога (можно создавать и удалять объекты)
x — позволяет войти в каталог

Существует три типа пользователей, каждому права задаются отдельно:
uпользователь, который владеет этим файлом;
g — пользователи из группы, владеющей данным файлом;
o — все остальные пользователей

Для того чтобы упростить процесс изменения прав проще использовать такие, наиболее распространённые комбинации;

400 (-r——–) Владелец имеет право чтения; никто другой не имеет права выполнять
никакие действия
644 (-rw-r–r–) Все пользователи имеют право чтения; владелец может
редактировать
660 (-rw-rw—-) Владелец и группа могут читать и редактировать; остальные не имеют
права выполнять никаких действий
664 (-rw-rw-r–) Все пользователи имеют право чтения; владелец и группа могут
редактировать
666 (-rw-rw-rw-) Все пользователи могут читать и редактировать
700 (-rwx——) Владелец может читать, записывать и запускать на выполнение;
никто другой не имеет права выполнять никакие действия
744 (-rwxr–r–) Все пользователи могут читать, владелец имеет право редактировать
и запускать на выполнение
755 (-rwxr-xr-x) Все пользователи имеет право читать и запускать на выполнение;
владелец может редактировать
777 (-rwxrwxrwx) Все пользователи могут читать, редактировать и запускать на
выполнение
1555 (-r-xr-xr-t) Все пользователи имеют право читать и запускать на выполнение;
удалить файл может только владелец этого файла
2555 (-r-xr-sr-x) Все пользователи имеют право читать и запускать на выполнение с
правами группы(user group) владельца файла
4555 (-r-sr-xr-x) Все пользователи имеют право читать и запускать на выполнение с
правами владельца файла
chmod 777 file1 все пользователи могут читать, редактировать и запускать файл file1

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

Источник

Оцените статью