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

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

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

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

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

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

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

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

  1. [ -d "/path/dir/" ] && echo "Directory /path/dir/ exists."

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

  1. [ ! -d "/dir1/" ] && echo "Directory /dir1/ DOES NOT exists."

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




DIR="/etc/httpd/"

if [ -d "$DIR" ]; then

  # Take action if $DIR exists. #

  echo "Installing config files in ${DIR}..."

fi

 

или

DIR="/etc/httpd/"

if [ -d "$DIR" ]; then

  ### Take action if $DIR exists ###

  echo "Installing config files in ${DIR}..."

else

  ###  Control will jump here if $DIR does NOT exists ###

  echo "Error: ${DIR} not found. Can not continue."

  exit 1

fi

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

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

 #!/bin/bash d="$1"   [ "$d" == "" ] && { echo "Usage: $0 directory"; exit 1; } [ -d "${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="${url##*/}"

 

### Check for dir, if not found create it using the mkdir ##

[ ! -d "$dldir" ] && mkdir -p "$dldir"

 

# Now download it

wget -qc "$url" -O "${dldir}/${file}"

 

# 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 можно использовать для проверки типов файлов и сравнения значений.

Например, посмотрите, существует ли 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-подобных системах.

 



2019-05-21T09:30:59
Скрипты