Как проверить, существует ли файл или каталог в сценарии оболочки Bash

Как проверить, существует ли файл или каталог в сценарии оболочки Bash

Проверка наличия файла или каталога из сценария Bash

Bash используется для автоматизации регулярно выполняемых команд в Linux. Команды, которые предназначены для операций с файлами / каталогами, используются довольно часто, и обычно, прежде чем мы выполним такую ​​команду, нам нужно проверить, существует ли конкретный файл или каталог. Давайте посмотрим, как выполнить эту проверку.

Синтаксис и использование

Файлы

Чтобы проверить, существует ли файл , используйте следующий синтаксис:

[ -f  ]

Выражение [ -f ]возвращает 0, т. Е. Успех, если он существует, а если он не существует, возвращает ненулевой статус. Обычно это используется в операторе как условие if.

if [ -f  ]
then
  
fi

Чтобы отменить возвращаемое значение , просто поставьте перед -fоператором отрицания ( !).

if [ ! -f  ]
then
  
fi

В этом случае условие будет выполняться, если файл не существует , поскольку возвращенный ненулевой статус (ложь) будет инвертирован и будет рассматриваться как 0 (истина).

Как проверить, существует ли файл или каталог в сценарии оболочки Bash

Как проверить, существует ли файл или каталог в сценарии оболочки Bash

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

Справочники

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

[ -d  ]

Подобно оператору для файлов, этот оператор возвращает 0, т. Е. Успех, если каталог существует, и ненулевое значение, т. Е. Статус отказа возвращается, если он не существует. Это также обычно используется в ifусловии оператора.

if [ -d  ]
then
  
fi

Чтобы отменить возвращаемый статус, перед -dоператором отрицания ( !).

if [ ! -d  ]
then
  
fi

В этом случае условие будет выполняться (статус 0), если каталог не существует, и завершится ошибкой (статус не равен нулю), если каталог существует.

Как проверить, существует ли файл или каталог в сценарии оболочки Bash

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

💡 [...]Используемый здесь синтаксис скобок ( ) на самом деле является командой Linux с именем test. Параметры -fи -dявляются особенностями этой команды. Для получения дополнительной информации см. Справочную страницу test ( man test).

Проверка из сценария Bash

В приведенных выше примерах мы использовали синтаксис непосредственно в терминале. Оболочка всякий раз, когда встречается с циклом или условным оператором ( ifв нашем случае), она продолжает подсказку и позволяет пользователю ввести блок продолжения.

Тот же синтаксис можно использовать внутри сценария Bash.

Как проверить, существует ли файл или каталог в сценарии оболочки Bash

В  #!/bin/bash начале указывается интерпретатор, который будет использоваться при выполнении файла. Хотя Bash является наиболее часто используемой оболочкой в ​​настоящее время, некоторые пользователи предпочитают такие оболочки, как  zsh, которые следует указывать вместо bash в начале этого файла.

Чтобы предоставить разрешения  на выполнение для этого файла, запустите:

chmod +x test.sh

Наконец,  чтобы запустить файл , запустите:

./test.sh

Как включить SSH в Ubuntu 20.04

Как включить SSH в Ubuntu 20.04

Безопасный доступ к вашей машине Ubuntu из любого места

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Настройте собственный VPN с помощью Wireguard

Как установить Git на Ubuntu 20.04 LTS

Как установить Git на Ubuntu 20.04 LTS

Одна из первых вещей, которые вы должны установить на свой Linux-компьютер

Как использовать команду SCP в Linux

Как использовать команду SCP в Linux

Простое руководство, которое поможет вам перенести файлы в удаленную систему из вашей системы Linux с помощью команды scp.

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Предоставьте root-права любому пользователю с sudo в Ubuntu 20.04 LTS

Как добавить ключи SSH в Ubuntu 20.04

Как добавить ключи SSH в Ubuntu 20.04

В этой статье объясняется процесс добавления аутентификации ключей SSH на сервер Ubuntu 20.04 и отключения аутентификации на основе пароля.

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Speedtest.net - это сервис для проверки скорости вашего интернет-соединения. Он использует ближайший сервер speedtest.net для загрузки

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

За исключением всего лишнего, вот список лучших бесплатных видеоредакторов для Ubuntu, которые вы можете использовать для создания потрясающих видеороликов.

7 лучших приложений для динамических обоев Ubuntu

7 лучших приложений для динамических обоев Ubuntu

Хотя вы всегда можете использовать приложение для слайд-шоу собственных обоев Ubuntu, вот несколько приложений для загрузки и динамической установки обоев.

Как установить TensorFlow на CentOS

Как установить TensorFlow на CentOS

Установите TensorFlow с помощью Python (pip) или контейнера Docker