Linux check if folder exist

check if directory exists and delete in one command unix

Is it possible to check if a directory exists and delete if it does,in Unix using a single command? I have situation where I use ANT ‘sshexec’ task where I can run only a single command in the remote machine. And I need to check if directory exists and delete it.

@Ferruccio- using rm -rf /dir_name does not throw a error but rm -rf /dir_name throws says No such file or directory found. ( Just tested)

5 Answers 5

Why not just use rm -rf /some/dir ? That will remove the directory if it’s present, otherwise do nothing. Unlike rm -r /some/dir this flavor of the command won’t crash if the folder doesn’t exist.

I think the original question was intended to mean: perform the delete only when file/directory exists or not. This command may work and produce similar results but actually doing a test before the command makes more sense.

As stated above this isn’t the answer. One reason for testing before deleting would be inside a Jenkins job. If the directory doesn’t exist and you try to delete it, that will fail the job. Checking beforehand is the better option.

I think this is the correct answer. it does what @remo needs, i.e. deleting a directory only if it exists and not giving an error if it doesn’t. Maybe the question is not quite well put because why would you need to check the existence when this command won’t care?!

Assuming $WORKING_DIR is set to the directory. this one-liner should do it:

if [ -d "$WORKING_DIR" ]; then rm -Rf $WORKING_DIR; fi 

(otherwise just replace with your directory)

bash -c '[ -d my_mystery_dirname ] && run_this_command' 

This will work if you can run bash on the remote machine.

In bash, [ -d something ] checks if there is directory called ‘something’, returning a success code if it exists and is a directory. Chaining commands with && runs the second command only if the first one succeeded. So [ -d somedir ] && command runs the command only if the directory exists.

Источник

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

Скрипты

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

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

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

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

Читайте также:  Mint linux firefox нет звука

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

Например, посмотрите, существует ли 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)
Читайте также:  Fedora linux установка пакетов

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” – это команда, которая должна […]

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

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

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

Источник

How To Check If File or Directory Exists in Bash

Introductory image to check file or directory in Bash.

Note: You may encounter the term bash script. This is a sequence of several commands to the shell. A script can be saved as a file and is often used to automate multiple system commands into a single action.

How to Check if a File Exists

To test for the file /tmp/test.log, enter the following from the command line:

The first line executes the test to see if the file exists. The second command, echo, displays the results 0 meaning that the file exists, 1 means no file was found.

In our example, the result was 1.

The result 1 indicates that no file was found ehan using echo command.

Now try creating a file, then testing for it:

As we have created the file beforehand, the result now is 0:

The result 0 indicates that the file is found.

You can also use square brackets instead of the test command:

How to Check if a Directory Exists

To check if a directory exists, switch out the –f option on the test command for –d (for directory):

Create that directory, and rerun the test:

This command works the same as it does for files, so using brackets instead of the test command works here also.

Читайте также:  Linux mint стиль windows

Note: If you are searching for a file or directory because you need to delete it, refer to our guide on removing files and directories with Linux command line.

How to Check if a File Does not Exist

Typically, testing for a file returns 0 (true) if the file exists, and 1 (false) if the file does not exist. For some operations, you may want to reverse the logic. It is helpful if you write a script to create a particular file only if it doesn’t already exist.

To create a file if one doesn’t already exist, enter the following at a command line:

[ ! –f /tmp/test.txt ] && touch /tmp/test.txt

The exclamation point ! stands for not. This command makes sure there is not a file named test.txt in the /tmp directory. You won’t see anything happen.

To see if the system created the file, enter the following:

You should see test.txt listed. You can use a similar command for a directory – replace the –f option with –d:

[ ! –d /tmp/test ] && touch /tmp/test 

How to Check for Multiple Files

To test for two files at the same time use the && option to add a second file:

[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”

To test for multiple files with a wildcard, like an asterisk * to stand for various characters:

[ -f /tmp/*.jpg ] && echo “Files were found”

As usual, changing the –f option to –d lets you run the same test for multiple directories.

File Test Operators to Find Prticular Types of Files

Here are several commands to test to find specific types of files:

There are many other options available. Please consult the main page (test ––help) for additional options.

Working with Code Snippets

The previous commands work well for a simple two-line command at a command prompt. You can also use bash with multiple commands. When several commands are strung together, they are called a script.

A script is usually saved as a file and executed. Scripting also uses logical operators to test for a condition, then takes action based on the results of the test.

To create a script file, use the Nano editor to open a new file:

Enter one of the snippets from below, including the #!/bin/bash identifier. Use Ctrl-o to save the file, then Ctrl-x to exit Nano. Then, run the script by entering:

The following code snippet tests for the presence of a particular file. If the file exists, the script displays File exists on the screen.

#!/bin/bash if [ -f /tmp/test.txt ] then echo “File exists” fi

This works the same if you’re checking for a directory. Just replace the –f option with –d:

#!/bin/bash if [ -d /tmp/test ] then echo “File exists” fi

This command checks for the directory /tmp/test. If it exists, the system displays File exists.

You can now use bash to check if a file and directory exist. You can also create simple test scripts as you now understand the functions of a basic bash script file. Next, you should check out our post on Bash Function.

Источник

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