Я только что прочитал некоторый код, который включает строку:
mkdir ../../$something/$something_else
Я не знаю, как интерпретировать это.
Это, как предполагается, понято как конвенция, которая используется для обращения к чему-то, что записано, не давая фактические слова, потому что это думало, что они являются скучными или неважными. Поскольку $something_else является заполнителем как и тому подобное mkdir -p ../../$something/$something_else
, создает каталог, который имеет любое имя, с которым Вы заменяете $something_else . Если переменная $something_else был установлен на myDirectory (который является строкой), то mkdir -p ../../$something/$something_else
создает новый каталог, названный myDirectory.
Самый легкий способ объяснить, что это делает, показывает то, что он делает.
Рассматривают эти команды оболочки:
$ echo $PWD
/home/rick/askubuntu/subdir-A/JSON
echo $PWD
выше дисплеев наш текущий каталог.
$ cd ../../; echo $PWD
/home/rick/askubuntu
Выше мы изменились на наш каталог прародителя и отобразились, это - имя. Теперь позволяет, возвращаются к нашему исходному каталогу и дисплею, это - имя:
$ cd /home/rick/askubuntu/subdir-A/JSON
$ echo $PWD
/home/rick/askubuntu/subdir-A/JSON
Теперь, когда Вы видите то, что ../../
действительно позволяет нам связать все это:
$ something=subdir-A
$ something_else=JSON2
$ mkdir ../../"$something"/"$something_else"
$ ls ../
JSON JSON2
, поскольку something=subdir-A
совпадает с нашим текущим родительским каталогом, эти две строки эквивалентны:
$ mkdir ../../"$something"/"$something_else"
$ mkdir ../"$something_else"
, Что, если something=subdir-C
, который является совершенно новым родительским каталогом? Затем команда, которую мы использовали, перестанет работать:
$ mkdir ../../"$something"/"$something_else"
mkdir: cannot create directory ‘../../subdir-C/JSON2’: No such file or directory
Мы должны были бы использовать -p
аргумент, чтобы сказать mkdir
создавать недостающий родительский каталог:
$ something=subdir-C
$ something_else=JSON2
$ mkdir -p ../../"$something"/"$something_else"
$ ls ../../subdir-C
JSON2