2017-02-21 5 views
0

У меня есть Linux-ящик, который я установил с общей папкой cifs на мой компьютер с Windows. Там нет проблем, он работает точно так, как предполагалось. Тем не менее, я думал о запуске некоторых скриптов bash, используя тот же каталог, и кажется, что он не находит мой корень.mkdir: невозможно создать каталог: нет такого файла или каталога - cifs общая папка Windows

now=$(date +"%Y-%m-%d") 
#or: `now=$(date +%s)` if you back up more than once a day 

mkdir /__backup/"$now" 

Выполнение этого из общей папки вызывает, что он не может найти каталог runningthese команды:

echo "$0" 
dirname "$0" 

показывает адрес как «»

Есть ли у кого-нибудь идеи о том, как это сделать?

+0

Определенно нет. Вместо этого он выводит строку. –

+0

Проверено только ** [Подсистема Windows для Linux] (https://msdn.microsoft.com/en-us/commandline/wsl/install_guide) **, они делают то же самое AFAICT – Blacksilver

+0

А ... это немного другой. Я ищу, чтобы запустить сценарий, автоматизированный с Linux. Не окна. –

ответ

0

Вы делаете:

#!/bin/bash 
now=`date "+%Y-%m-%d"` 
mkdir "/__backup/$now" 

Так что это работает только если /__backup/ существует. У:

#!/bin/bash 
now=`date "+%Y-%m-%d"` 
mkdir -p "/__backup/$now" # -p creates parent directories as needed (see man mkdir) 

#Optional: change directory to the one you just created: 
cd /__backup/$now 

Конечно, вы будете нуждаться в корень, чтобы сделать каталог в /, так что вы можете проверить это.

if [ `whoami` = "root" ]; then 
    # You are root... 
else 
    echo "Error: Only root can do that." 
    exit 1 
fi 

Вы можете избежать всей проблемы необходимости корня, если вы создаете __backup в ~. Вы также можете скрыть __backup, переименовав его в .backup.

+1

Или используйте 'mkdir -p ...' –

+0

Ну, вы каждый день узнаете новую вещь. Редактирование ... – Blacksilver

+0

'mkdir: невозможно создать каталог '/ __ Резервное копирование/02_21_17 \ r \ r': Нет такого файла или каталога' Это все еще не работает для меня. –