Введение
В этой лабораторной работе вы научитесь выполнять различные проверки файлов в командной оболочке. Проверка файлов — это важнейший инструмент для анализа свойств объектов в файловой системе. К концу занятия вы освоите основные команды проверки и способы их применения, что является базовым навыком для работы в среде Linux.
Создание тестового файла
Прежде чем приступать к операциям, важно понимать контекст рабочей среды. В Linux вы всегда находитесь в определенной директории, и крайне важно знать свое текущее местоположение в файловой системе.
Откройте терминал в WebIDE. Именно здесь вы будете вводить все команды.
Создайте новый файл с именем
test_file.txt:touch test_file.txtКоманда
touchиспользуется для создания пустого файла. Если файл уже существует, она просто обновит время его последнего изменения, не затрагивая содержимое.Добавьте в файл текст:
echo "This is a test file for our lab." > test_file.txtЭта команда использует
echoдля вывода строки и оператор>для перенаправления этого вывода в файл. Будьте осторожны с>: этот оператор перезаписывает любое существующее содержимое файла.Проверьте содержимое файла:
cat test_file.txtКоманда
cat(сокращение от "concatenate") часто используется для быстрого просмотра содержимого файлов. Вы должны увидеть сообщение: "This is a test file for our lab."
Если вы допустили ошибку или хотите начать заново, вы всегда можете удалить файл командой rm test_file.txt и повторить шаги.
Проверка существования файла
Теперь, когда файл создан, давайте научимся проверять его наличие. Это стандартная задача для shell-скриптов, особенно когда нужно выполнить действия над файлом только в том случае, если он на месте.
Создайте новый файл скрипта
file_exists.sh:touch file_exists.shДобавьте в него следующее содержимое:
#!/bin/bash filename="test_file.txt" if [ -e "$filename" ]; then echo "$filename exists" else echo "$filename does not exist" fiРазберем код:
#!/bin/bash— это шебанг (shebang). Он указывает системе, что скрипт должен исполняться интерпретатором bash.- Мы присваиваем переменной
filenameзначение "test_file.txt". - Оператор
ifпроверяет условие. Флаг-eвозвращает истину, если файл существует. - Команда
echoвыводит соответствующее сообщение в зависимости от результата проверки.
Сохраните файл и закройте редактор.
Сделайте скрипт исполняемым:
chmod +x file_exists.shЗапустите скрипт:
./file_exists.shВы должны увидеть: "test_file.txt exists"
Теперь проверим работу скрипта на отсутствующем файле. Сначала переименуем наш тестовый файл:
mv test_file.txt non_existent.txtКоманда
mvпереименовываетtest_file.txtвnon_existent.txt.Убедитесь, что в скрипте
file_exists.shпеременнаяfilenameпо-прежнему ссылается на "test_file.txt":nano file_exists.shСнова запустите скрипт:
./file_exists.shТеперь результат будет: "test_file.txt does not exist"
Этот пример наглядно показывает, как автоматизировать проверку наличия файлов, что критически важно для стабильной работы скриптов.
Проверка существования директории
Аналогично проверке файлов, мы можем проверять наличие папок (директорий). Это полезно, если скрипту нужно сохранить данные в определенное место или перейти в нужную папку.
Создайте новый файл скрипта
dir_exists.sh:touch dir_exists.shДобавьте в него следующий код:
#!/bin/bash dirname="test_directory" if [ -d "$dirname" ]; then echo "$dirname exists" else echo "$dirname does not exist" fiЭтот скрипт почти идентичен предыдущему, но вместо
-eиспользуется флаг-d. Он проверяет, существует ли объект и является ли он именно директорией.Сохраните файл и закройте редактор.
Сделайте скрипт исполняемым:
chmod +x dir_exists.shЗапустите скрипт:
./dir_exists.shВы увидите: "test_directory does not exist"
Теперь создадим эту директорию и запустим скрипт снова:
mkdir test_directory ./dir_exists.shТеперь результат изменится на: "test_directory exists"
Команда
mkdirиспользуется для создания новых папок.
Этот навык пригодится вам при написании скриптов, которые создают структуру папок, изменяют или удаляют их.
Проверка прав доступа к файлу
В Linux у каждого файла и директории есть права доступа, которые определяют, кто может их читать, изменять или запускать. На этом этапе мы научимся проверять, доступен ли файл для чтения.
Сначала вернем нашему файлу исходное имя:
mv non_existent.txt test_file.txtСоздайте скрипт
file_readable.sh:touch file_readable.shДобавьте в него следующее содержимое:
#!/bin/bash filename="test_file.txt" if [ -r "$filename" ]; then echo "You have read permission for $filename" else echo "You do not have read permission for $filename" fiЗдесь используется флаг
-r, который проверяет, есть ли у текущего пользователя права на чтение данного файла.Сохраните файл и закройте редактор.
Сделайте скрипт исполняемым:
chmod +x file_readable.shЗапустите скрипт:
./file_readable.shВы должны увидеть: "You have read permission for test_file.txt"
Теперь лишим себя прав на чтение и проверим результат:
chmod -r test_file.txt ./file_readable.shТеперь скрипт сообщит: "You do not have read permission for test_file.txt"
Команда
chmod -rотзывает права на чтение.Восстановите права доступа:
chmod +r test_file.txtВсегда полезно возвращать настройки в исходное состояние, чтобы не оставить важные файлы недоступными.
Этот пример демонстрирует основы управления безопасностью. Понимание прав доступа критически важно для системного администрирования и корректной работы автоматизации.
Резюме
В этой лабораторной работе вы освоили базовые операции с файловой системой через командную оболочку. Вы научились создавать скрипты для проверки существования файлов и папок, а также для анализа прав доступа. Эти навыки являются фундаментом для работы в Linux и необходимы для написания сложных сценариев автоматизации.
Вы закрепили на практике:
- Навигацию и понимание рабочей среды.
- Создание и манипулирование файлами.
- Написание и запуск shell-скриптов.
- Проверку наличия файлов и директорий.
- Анализ прав доступа.
Эти знания станут вашим подспорьем в дальнейшем изучении систем Linux. Помните: всегда проверяйте наличие объектов перед выполнением операций с ними — это поможет избежать ошибок в ваших программах. Также всегда учитывайте права доступа при работе с системными или конфиденциальными данными.
В будущем вы сможете изучить более сложные тесты файлов, циклы, функции и научитесь комбинировать эти концепции для создания мощных инструментов автоматизации.



