Основные операции с файлами

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать в лабораторную работу «Основные операции с файлами в Linux»! В Linux почти всё рассматривается как файл, поэтому операции с файлами имеют фундаментальное значение для работы с системой. В этой лабораторной работе вы изучите наиболее распространённые команды для управления файлами и каталогами. Это поможет вам лучше ориентироваться в файловой системе Linux и организовывать её содержимое.

Знакомство с рабочей средой

В Linux у каждого пользователя обычно есть «домашний каталог», обозначаемый как ~. Однако в этой лабораторной среде работа начинается в каталоге /home/labex/project, который является рабочим каталогом по умолчанию.

Сначала откройте терминал на рабочем столе или переключитесь на вкладку терминала в лабораторной среде.

Снимок интерфейса терминала

Начнём с проверки текущего расположения:

pwd

pwd означает «print working directory» — «вывести рабочий каталог». Команда показывает ваше текущее расположение в файловой системе. Это важно для ориентации в структуре Linux. В выводе должно появиться /home/labex/project.

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

echo ~

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

Эта команда выведет путь к домашнему каталогу. Он должен быть равен /home/labex.

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

ls

Команда выведет файлы и каталоги из текущего рабочего каталога (/home/labex/project).

Также проверим содержимое домашнего каталога:

ls ~

Эта команда выводит содержимое домашнего каталога. Оно может отличаться от содержимого текущего рабочего каталога.

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

Навигация по файловой системе

В Linux используется так называемая «иерархическая файловая система». Представьте её в виде большого дерева с ветвями. Основной ствол называется «корневым каталогом» и обозначается одной косой чертой /. Все остальные каталоги и файлы находятся в ветвях, исходящих из этого корня.

Рассмотрим, как перемещаться по такой структуре:

  1. Проверьте текущее расположение:
pwd

Команда должна вывести /home/labex/project. Если отображается другой путь, вы находитесь в другом каталоге. Выполните cd /home/labex/project, чтобы вернуться в начальный каталог.

  1. Просмотрите содержимое текущего каталога:
ls

Команда выводит все файлы и каталоги в текущем расположении. Каталог /home/labex/project пуст, поэтому вы ничего не увидите.

  1. Перейдите на один уровень вверх, в родительский каталог:
cd ..

.. означает «каталог уровнем выше». После выполнения команды снова запустите pwd. Теперь текущим каталогом должен быть /home/labex.

  1. Вернитесь в каталог проекта:
cd project

Вы снова окажетесь в /home/labex/project.

  1. Перейдите в домашний каталог:
cd ~

~ — это сокращённое обозначение домашнего каталога. Выполните pwd, чтобы убедиться, что текущий каталог — /home/labex.

  1. Вернитесь в каталог проекта с помощью абсолютного пути:
cd /home/labex/project

Это называется «абсолютным путём», потому что путь начинается с корневого каталога (/) и содержит полный адрес каталога.

Создание файлов и просмотр содержимого каталога

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

Сначала убедитесь, что вы находитесь в каталоге /home/labex/project:

cd /home/labex/project
  1. Создайте несколько файлов:
touch file1.txt

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

echo "Hello, Linux" > file2.txt

Эта команда выполняет две операции:

  • echo — команда, которая выводит текст.
  • Символ > перенаправляет вывод echo в файл с именем file2.txt. Если файла нет, он создаётся. Если файл уже существует, его содержимое заменяется.
echo "Hidden file" > .hiddenfile

Эта команда создаёт скрытый файл. В Linux имя любого файла или каталога, начинающееся с точки (.), считается скрытым.

  1. Создайте каталог:
mkdir testdir

Команда mkdir (сокращение от «make directory») создаёт новый каталог с именем testdir.

  1. Обычный просмотр содержимого:
ls

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

Команда показывает содержимое текущего каталога. В списке должны быть file1.txt, file2.txt и testdir.

  1. Подробный просмотр:
ls -l

Параметр -l (это строчная буква L, а не цифра 1) включает подробный формат списка. Вы увидите дополнительные сведения: права доступа, владельца, размер и дату изменения.

  1. Показать скрытые файлы:
ls -a

Команда покажет все файлы, включая созданный скрытый файл .hiddenfile.

  1. Объединить параметры:
ls -la

Эта команда объединяет подробный формат (-l) с отображением всех файлов (-a).

  1. Просмотреть содержимое определённого каталога:
ls -l testdir

Команда выводит содержимое каталога testdir, который на этом этапе должен быть пустым.

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

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

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

  1. Скопируйте файл:
cp file1.txt file1_copy.txt

Команда создаёт в текущем каталоге копию file1.txt с именем file1_copy.txt.

Проверьте результат:

ls
  1. Скопируйте файл в другой каталог:
cp file2.txt testdir/

Команда копирует file2.txt в каталог testdir.

  1. Скопируйте каталог:
cp -r testdir testdir_copy

Параметр -r означает «рекурсивно». Он необходим при копировании каталогов, чтобы скопировать всё их содержимое.

  1. Проверьте созданные копии:
ls
ls testdir
ls testdir_copy

Терминал с отображением скопированных файлов

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

В Linux команда mv используется как для перемещения, так и для переименования:

  1. Переименуйте файл:
mv file1.txt newname.txt

Команда переименовывает file1.txt в newname.txt.

  1. Переместите файл в каталог:
mv newname.txt testdir/

Команда перемещает newname.txt в каталог testdir.

  1. Переименуйте каталог:
mv testdir_copy new_testdir

Команда переименовывает testdir_copy в new_testdir.

  1. Переместите файл и одновременно переименуйте его:
mv testdir/newname.txt ./original_file1.txt

Команда перемещает newname.txt из каталога testdir в текущий каталог и переименовывает его в original_file1.txt.

  1. Проверьте изменения:
ls
ls testdir

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

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

Удаление файлов и каталогов — мощная операция. В отличие от графических интерфейсов, в командной строке обычно нет «Корзины». Удаление с помощью rm, как правило, необратимо. Всегда внимательно проверяйте команды перед выполнением!

Удалим созданные файлы и каталоги. Убедитесь, что вы находитесь в каталоге /home/labex/project.

pwd
ls -a

В списке должны быть такие файлы, как original_file1.txt, .hiddenfile, file2.txt, а также такие каталоги, как testdir и new_testdir.

.
..
.hiddenfile
file1_copy.txt
file2.txt
new_testdir
original_file1.txt
testdir
  1. Удалите один файл:

    rm original_file1.txt
    

    Команда rm (сокращение от «remove») удаляет файлы. Проверим результат:

    ls
    

    Файла original_file1.txt больше быть не должно.

  2. Удалите файл в интерактивном режиме (более безопасный способ):

    Попробуем удалить file2.txt, но на этот раз используем интерактивный параметр -i:

    rm -i file2.txt
    

    Параметр -i запрашивает подтверждение перед удалением каждого файла. Введите y (ответ «да») и нажмите Enter, чтобы подтвердить удаление. Если ввести n или любой другой символ, файл удалён не будет.

    ls
    

    Если вы подтвердили удаление, файла file2.txt больше не будет.

  3. Проверьте, что происходит с непустым каталогом:

    Помните каталог new_testdir, созданный после переименования testdir_copy? В нём всё ещё находится скопированный file2.txt, поэтому команда rmdir завершится ошибкой. Сначала проверим содержимое каталога:

    ls new_testdir
    

    В выводе должен быть file2.txt. Теперь выполните rmdir:

    rmdir new_testdir
    

    Команда rmdir (remove directory) работает только с пустыми каталогами.

    ls
    

    Каталог new_testdir нельзя удалить, потому что он не пуст. Поэтому он по-прежнему должен отображаться в списке.

  4. Попробуйте удалить непустой каталог:

    Теперь попробуем выполнить rmdir для testdir, в котором всё ещё находится file2.txt (он был скопирован на шаге 4):

    ls testdir
    rmdir testdir
    

    Скорее всего, вы увидите сообщение об ошибке, например rmdir: failed to remove 'testdir': Directory not empty. Это ожидаемо: rmdir не удаляет каталоги, содержащие файлы или другие каталоги.

  5. Удалите каталог вместе с его содержимым (рекурсивно):

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

    rm -r testdir
    

    Команда удаляет каталог testdir и всё его содержимое. Используйте её осторожно.

    ls
    

    Теперь каталога testdir быть не должно.

  6. Принудительное удаление (используйте с особой осторожностью):

    Иногда требуется удалить файлы без запроса подтверждения, даже если они защищены от записи (хотя в этой лабораторной работе таких файлов нет). Для этого используется параметр -f (force, принудительно).

    Удалим скрытый файл:

    rm .hiddenfile
    ls -a
    

    Теперь объединим параметры -r и -f. Команда rm -rf чрезвычайно мощная и потенциально опасная. Она рекурсивно удаляет каталоги (-r) и принудительно удаляет их без запроса подтверждения (-f).

    !!! ОПАСНАЯ ЗОНА !!! Перед выполнением rm -rf вы должны быть АБСОЛЮТНО УВЕРЕНЫ, что знаете, какие данные удаляете. Небольшая опечатка может привести к удалению важных системных файлов или личных данных. Отменить такую операцию нельзя. Например, rm -rf / может попытаться удалить всю систему (если у вас есть соответствующие права). Всегда перепроверяйте путь.

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

    mkdir temp_dir
    touch temp_dir/temp_file.txt
    ls -R temp_dir
    

    Примечание. Вы могли заметить, что для ls мы использовали -R (заглавная буква), а не -r (строчная), как ранее для cp и rm. Это не просто различие регистра — это совершенно разные параметры! Для ls параметр -R означает «рекурсивный просмотр» (вывод содержимого подкаталогов), а -r — «обратный порядок сортировки». Для cp и rm рекурсивным параметром является -r (строчная буква). Всегда сверяйтесь с руководством (man command), чтобы понять параметры конкретной команды.

    Теперь принудительно удалим созданные объекты:

    rm -rf temp_dir
    

    Проверьте результат:

    ls
    

    Каталога temp_dir больше быть не должно.

Помните: в командной строке Linux удалённые файлы обычно исчезают навсегда. Используйте rm осторожно!

Итоги

Поздравляем! Вы изучили основные операции с файлами в Linux:

  • навигацию по файловой системе с помощью cd и pwd;
  • создание файлов и каталогов с помощью touch и mkdir;
  • просмотр содержимого с помощью ls и его параметров;
  • копирование файлов и каталогов с помощью cp;
  • перемещение и переименование с помощью mv;
  • удаление файлов и каталогов с помощью rm и rmdir.

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

Помните об осторожности, особенно при использовании rm: эта команда удаляет файлы и каталоги навсегда, без возможности восстановления.

По мере изучения Linux обращайтесь к man-страницам, например man ls, чтобы узнать больше о каждой команде и её параметрах. Успешного изучения!