TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #114 710
Как проверить существование файла в скрипте

При написании Bash-скриптов часто возникает необходимость проверить, существует ли файл (или директория), прежде чем продолжить выполнение. Давайте разберём несколько подходов с примерами.

1. Проверка существования файла. Самый простой способ проверить, существует ли файл:


if [ -e "/path/to/file" ]; then
echo "Файл существует."
else
echo "Файл не найден."
fi


2. Проверка, что это обычный файл. Если нужно убедиться, что это именно файл (а не директория или символическая ссылка):


if [ -f "/path/to/file" ]; then
echo "Это файл."
else
echo "Это не файл или его не существует."
fi


3. Проверка существования директории. Чтобы проверить, существует ли директория:


if [ -d "/path/to/directory" ]; then
echo "Директория существует."
else
echo "Директория не найдена."
fi


4. Проверка прав доступа к файлу. Проверить доступ на чтение:


if [ -r "/path/to/file" ]; then
echo "Файл доступен для чтения."
fi
Проверить доступ на запись:
bash
Копировать код
if [ -w "/path/to/file" ]; then
echo "Файл доступен для записи."
fi
Проверить доступ на выполнение:
bash
Копировать код
if [ -x "/path/to/file" ]; then
echo "Файл доступен для выполнения."
fi


5. Проверка нескольких условий. Можно комбинировать проверки:


if [ -f "/path/to/file" ] && [ -w "/path/to/file" ]; then
echo "Файл существует и доступен для записи."
else
echo "Файл не существует или недоступен для записи."
fi


Пример: Реальный сценарий. Предположим, вы пишете скрипт для архивации файла, только если он существует.


#!/bin/bash

FILE="/path/to/file"
ARCHIVE="/path/to/archive"

if [ -f "$FILE" ]; then
tar -czf "$ARCHIVE/archive.tar.gz" "$FILE"
echo "Файл заархивирован."
else
echo "Файл не найден. Архивация не выполнена."
fi


Полезный совет: Для проверки в одном условии часто используют флаг || (или):


[ -f "/path/to/file" ] || echo "Файл не найден."


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

BashTex 📱 #bash
  • 👍 10
  • 🔥 3
More from @bash_tex
  1. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  2. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  3. Oct 9, 2026BashTex 📱 #мем
  4. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  5. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  6. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →