Что делает 'mkdir../../$something/$something_else', средний?

Я только что прочитал некоторый код, который включает строку:

mkdir ../../$something/$something_else

Я не знаю, как интерпретировать это.

-2
задан 15 December 2019 в 00:48

2 ответа

Это, как предполагается, понято как конвенция, которая используется для обращения к чему-то, что записано, не давая фактические слова, потому что это думало, что они являются скучными или неважными. Поскольку $something_else является заполнителем как и тому подобное mkdir -p ../../$something/$something_else, создает каталог, который имеет любое имя, с которым Вы заменяете $something_else . Если переменная $something_else был установлен на myDirectory (который является строкой), то mkdir -p ../../$something/$something_else создает новый каталог, названный myDirectory.

0
ответ дан 21 December 2019 в 23:32

Самый легкий способ объяснить, что это делает, показывает то, что он делает.

Рассматривают эти команды оболочки:

$ 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
0
ответ дан 21 December 2019 в 23:32

Другие вопросы по тегам:

Похожие вопросы: