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

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

Давайте очистим созданные нами файлы и каталоги. Убедитесь, что вы находитесь в каталоге /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 (для подтверждения) и нажмите Enter. Если вы введете n или что-то другое, файл не будет удален.

    ls
    

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

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

    Помните new_testdir, который мы создали путем переименования testdir_copy? Давайте проверим, пуст ли он:

    ls new_testdir
    

    Если он пуст (файлы не отображаются), мы можем удалить его с помощью 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
    

    Примечание: Вы могли заметить, что мы использовали -R (заглавная) с ls вместо -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 ls), чтобы узнать больше о каждой команде и её опциях. Удачи в исследованиях!