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

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 выводит текст.
  • Символ > перенаправляет этот вывод в файл с именем 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. Отображение скрытых файлов:
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 означает "recursive" (рекурсивно). Она обязательна при копировании папок, чтобы гарантировать, что всё их содержимое также будет скопировано.

  1. Проверим наши копии:
ls
ls testdir
ls testdir_copy

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

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

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

  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 обычно безвозвратно. Всегда внимательно проверяйте команды перед нажатием Enter!

Давайте наведем порядок и удалим созданные нами объекты. Убедитесь, что вы находитесь в /home/labex/project.

pwd
ls -a

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

-rw-rw-r-- 1 labex labex   12 May  3 08:44 .hiddenfile
-rw-rw-r-- 1 labex labex    0 May  3 08:45 file1_copy.txt
-rw-rw-r-- 1 labex labex   13 May  3 08:44 file2.txt
drwxrwxr-x 2 labex labex   23 May  3 08:45 new_testdir
-rw-rw-r-- 1 labex labex    0 May  3 08:44 original_file1.txt
drwxrwxr-x 2 labex labex   23 May  3 08:45 testdir
  1. Удаление одного файла:

    rm original_file1.txt
    

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

    ls
    

    Файл original_file1.txt должен исчезнуть.

  2. Интерактивное удаление (безопасный способ):

    Попробуем удалить file2.txt, используя флаг -i для подтверждения:

    rm -i file2.txt
    

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

    ls
    

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

  3. Удаление пустой директории:

    Помните папку new_testdir? Проверим, пуста ли она:

    ls new_testdir
    

    Если в ней нет файлов, мы можем удалить её командой rmdir:

    rmdir new_testdir
    

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

    ls
    
  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 (заглавную), в то время как с cp и rm-r (строчную). Это не просто разница в регистре — это разные опции! Для ls флаг -R означает рекурсивный вывод (включая подкаталоги), а -r — сортировку в обратном порядке. Для cp и rm рекурсия обозначается строчной -r. Всегда заглядывайте в руководство (man имя_команды), чтобы уточнить значение опций.

    Теперь удалим это принудительно:

    rm -rf temp_dir
    

    Проверим:

    ls
    

    Папка temp_dir удалена.

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

Резюме

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

  • Навигация по файловой системе с помощью cd и pwd.
  • Создание файлов и папок с помощью touch и mkdir.
  • Просмотр содержимого с помощью ls и её различных опций.
  • Копирование объектов с помощью cp.
  • Перемещение и переименование с помощью mv.
  • Удаление файлов и папок с помощью rm и rmdir.

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

Не забывайте проявлять осторожность, особенно с командой rm, так как она удаляет данные безвозвратно.

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