Linux test if directory exist

⛱ Проверьте, существует ли каталог в оболочке Linux или Unix

Скрипты

Нужно проверить, существует ли каталог в скрипте оболочки, работающем в Linux или Unix-подобной системе?

Как проверить, существует ли каталог в скрипте оболочки?

Каталог – это не что иное, как место для хранения файлов в системе Linux в иерархическом формате.

Например, $HOME/Downloads/ будет хранить все загруженные файлы или /tmp/ будет хранить временные файлы.

В этой статье показано, как узнать, существует ли каталог в Linux или Unix-подобных системах.

Как проверить, существует ли каталог в Linux

Можно проверить, существует ли каталог в скрипте оболочки Linux, используя следующий синтаксис:

Вы можете использовать ! чтобы проверить, существует ли каталог в Unix:

Можно проверить, существует ли каталог в скрипте Linux следующим образом:

DIR="/etc/httpd/" if [ -d "$DIR" ]; then # Take action if $DIR exists. # echo "Installing config files in $. " fi
DIR="/etc/httpd/" if [ -d "$DIR" ]; then ### Take action if $DIR exists ### echo "Installing config files in $. " else ### Control will jump here if $DIR does NOT exists ### echo "Error: $ not found. Can not continue." exit 1 fi

Linux проверяет, существует ли каталог, и предпринимает какие-то действия

Вот пример скрипта оболочки, чтобы увидеть, существует ли папка в Linux:

#!/bin/bash d="$1"   [ "$d" == "" ] && < echo "Usage: $0 directory"; exit 1; >[ -d "$" ] && echo "Directory $d found." || echo "Directory $d not found."

Запустите его следующим образом:

./test.sh
./test.sh /tmp/
./test.sh /itsecforu

Проверьте, существует ли каталог в bash, и если нет, то создайте его.

Вот пример скрипта оболочки, чтобы проверить, не существует ли каталог, и создать его в соответствии с нашими потребностями:

#!/bin/bash dldir="$HOME/linux/5.x" _out="/tmp/out.$$" # Build urls url="some_url/file.tar.gz" file="$" ### Check for dir, if not found create it using the mkdir ## [ ! -d "$dldir" ] && mkdir -p "$dldir" # Now download it wget -qc "$url" -O "$/$" # Do something else below #

Убедитесь, что вы всегда заключаете переменные оболочки, такие как $DIR, в двойные кавычки («$DIR», чтобы избежать неожиданностей в ваших скриптах:

DIR="foo" [ -d "$DIR" ] && echo "Found" ## ## this will fail as DIR will only expand to "foo" and not to "foo bar stuff" ## hence wrap it ## DIR="foo bar stuff" [ -d $DIR ] && echo "Found"

Использование команды test

Команду test можно использовать для проверки типов файлов и сравнения значений.

Читайте также:  Alt linux драйвер intel

Например, посмотрите, существует ли FILE и является ли он каталогом. Синтаксис:

test -d "DIRECTORY" && echo "Found/Exists" || echo "Does not exist"

Команда test аналогична [условному выражению. Следовательно, вы также можете использовать следующий синтаксис:

[ -d «DIR» ] && echo «yes» || echo «noop»

Помощь

man bash help [ help [[ man test

Заключение

В этой статье описаны различные команды, которые можно использовать для проверки существования каталога в скриптов оболочки, работающем в Linux или Unix-подобных системах.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

Админ, спасай, выручай! В общем, в /mnt надо создать каталоги. Кусок скрипта: #!/bin/bash if[ ! -d “/mnt/1” -a ! -d “/mnt/2” -a ! -d “/mnt/4” -a ! -d “/mnt/5” -a ! -d “/mnt/6” -a ! -d “/mnt/7” -a ! -d “/mnt/8” -a ! -d “/mnt/9” -a ! -d “/mnt/10” -a ! -d “/mnt/11” ] ; then
sudo mkdir /mnt/
sudo chmod 777 -R
mnt/ ;
fi идет ругань на синтаксическую ошибку “then” если убрать ; то идет ругань на “fi”
проблема в ;. В примерах ее нужно писать. Подскажи как правильно написать скрипт, всю голову сломал.
Идет проверка, что этих каталогов не существует и он их создает и дает права. Спасибо

  • Аудит ИБ (49)
  • Вакансии (12)
  • Закрытие уязвимостей (105)
  • Книги (27)
  • Мануал (2 306)
  • Медиа (66)
  • Мероприятия (39)
  • Мошенники (23)
  • Обзоры (820)
  • Обход запретов (34)
  • Опросы (3)
  • Скрипты (114)
  • Статьи (352)
  • Философия (114)
  • Юмор (18)

Anything in here will be replaced on browsers that support the canvas element

OpenVPN Community Edition (CE) – это проект виртуальной частной сети (VPN) с открытым исходным кодом. Он создает защищенные соединения через Интернет с помощью собственного протокола безопасности, использующего протокол SSL/TLS. Этот поддерживаемый сообществом проект OSS (Open Source Software), использующий лицензию GPL, поддерживается многими разработчиками и соавторами OpenVPN Inc. и расширенным сообществом OpenVPN. CE является бесплатным для […]

Что такое 404 Frame? Большинство инструментов для взлома веб-сайта находятся в 404 Frame. Итак, что же представляют собой команды? Вы можете отдавать команды, используя повседневный разговорный язык, поскольку разработчики не хотели выбирать очень сложную систему команд. Команды Команды “help” / “commands” показывают все команды и их назначение. Команда “set target” – это команда, которая должна […]

Читайте также:  Access usb device on linux

В этой заметке вы узнаете о блокировке IP-адресов в Nginx. Это позволяет контролировать доступ к серверу. Nginx является одним из лучших веб-сервисов на сегодняшний день. Скорость обработки запросов делает его очень популярным среди системных администраторов. Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях. Наступает момент, когда необходимо ограничить доступ к […]

Знаете ли вы, что выполняется в ваших контейнерах? Проведите аудит своих образов, чтобы исключить пакеты, которые делают вас уязвимыми для эксплуатации Насколько хорошо вы знаете базовые образы контейнеров, в которых работают ваши службы и инструменты? Этот вопрос часто игнорируется, поскольку мы очень доверяем им. Однако для обеспечения безопасности рабочих нагрузок и базовой инфраструктуры необходимо ответить […]

Одной из важнейших задач администратора является обеспечение обновления системы и всех доступных пакетов до последних версий. Даже после добавления нод в кластер Kubernetes нам все равно необходимо управлять обновлениями. В большинстве случаев после получения обновлений (например, обновлений ядра, системного обслуживания или аппаратных изменений) необходимо перезагрузить хост, чтобы изменения были применены. Для Kubernetes это может быть […]

Источник

How to Check if File or Directory Exists in Bash Shell

Here are several ways you can check if file or directory exists in bash shell script. You’ll also learn to check if file doesn’t exist.

If you are working on a Bash script that interacts with files and directories, you might encounter a situation where you need to make sure that the file or directory exists. This helps avoiding possible errors for performing certain actions on a file that doesn’t exist.

In this tutorial, I’ll show you a couple of ways to check if file or directory exists in bash script or not. Let’s start with file first.

Check if file exists in bash script

Check If File Exists In Bash

The idea here is to use the -f operator that returns true only when it is a regular file (not directory).

Let’s say you want to check if file /home/user/my_file exists or not. Here’s how you can check with square brackets

#!/bin/bash if [ -f /home/user/my_file ] then echo "My file exists" fi

But you won’t always get the file name before hand, will you? You can have it in a variable and if that’s the case, you can use it in this fashion.

#!/bin/bash FILE=/home/user/my_file if [ -f "$FILE" ] then echo "My file exists" else echo "My file doesn't exist" fi

Basically, what matters is the condition you use in the if command. It’s up to you how you want to use the if statement.

Читайте также:  Linux обрезать файл до строки

For example, you can write it with two square brackets, keep ‘then’ in the same line as ‘if’ with the help of semicolon like this:

#!/bin/bash FILE=/home/user/my_file if [ -f "$FILE" ]; then echo "My file exists" else echo "My file doesn't exist" fi

or put the entire statement together like this:

[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"

Check file exists in bash with test

You can also use test in bash to see if file exists or not. It’s pretty much the same thing only that you don’t use the square brackets in the if statement:

#!/bin/bash FILE=/home/user/my_file if test -f "$FILE" then echo "My file exists" else echo "My file doesn't exist" fi

You can also use the above code in single line like this:

test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"

Check if file doesn’t exist in bash script

What if it’s the other way round and you want to check if file does not exist in bash? You can use pretty much the same code as above by using the negation operator:

#!/bin/bash FILE=/home/user/my_file if [ ! -f "$FILE" ] then echo "My file doesn't exist" fi

Now that you know how to deal with files, let’s move on to directories.

Check if directory exists in bash script

The code for checking directory is the same as the one you saw in the previous section. The only difference is that you’ll be using -d instead of -f. -d returns true only for directories.

#!/bin/bash if [ -d /home/user/my_dir ] then echo "My directory exists" fi

You can also use test here:

#!/bin/bash DIR=/home/user/my_dir if test -d "$DIR" then echo "My directory exists" else echo "My directory doesn't exist" fi

Check if directory doesn’t exist in bash

You can use the negation again to check if directory doesn’t exist:

#!/bin/bash DIR=/home/user/my_dir if [ ! -d "$DIR" ] then echo "My directory doesn't exist" fi

That’s it. That’s all you need to do for checking if a directory of file exists in bash shell or not.

I hope you find this bash tip useful. If you have any questions or suggestions, please feel free to leave a comment below.

Источник

Оцените статью
Adblock
detector