Power 7 - это не то же самое, что PowerPC. Если ваш конкретный компьютер явно не указан как поддерживаемый в одном из портов powerpc - см. http://www.netbsd.org/ports/ внизу - вы, скорее всего, не сможете успешно установить NetBSD.
Для неспециалистов по оборудованию, отличному от x86, лучше всего использовать то, что рекомендует производитель.
Выполнение chdir
в каталоге, а затем использование коротких имен для доступа к файлам в этом каталоге намного быстрее, чем использование абсолютных путей к файлам.
С другой стороны, :если вы находитесь в определенном каталоге и хотите вызвать команду с большим количеством аргументов имени файла, которые находятся в разных каталогах, использование абсолютных имен путей более безопасно и понятно.
Кстати, :Если вы хотите создать более длинный путь к каталогам(a/b/c/...
)и хотите убедиться, что каждый каталог в этом списке будет существовать после того, как команда будет готова, рекомендуется создать один каталог, chdir в этот каталог, а затем перейдите к следующему каталогу. Это позволяет создать такой длинный путь к каталогу, даже если путь длиннее PATH_MAX
.
Это действительно то, что вам решать. То, что может повлиять на это решение, может быть связано с тем, хорошо ли оно выглядит или читабельно. С точки зрения скорости выполнения, это не имело бы большого значения.
Возможность создания трех подкаталогов в уже существующем каталоге/path/to/dir
:
mkdir /path/to/dir/a \
/path/to/dir/b \
/path/to/dir/b
( cd /path/to/dir && mkdir a b c )
(подоболочка позволяет пропустить cd
обратно в исходный рабочий каталог)
С оболочкой, которая знает раскрытие фигурных скобок (, это по существу то же самое, что и версияcd
-без вышеизложенного, поскольку оболочка расширит раскрытие фигурных скобок перед вызовомmkdir
):
mkdir /path/to/dir/{a,b,c}
Утилита mkdir
, скорее всего, будет использовать функцию mkdir()
библиотеки C. Эта функция не изменяет рабочие каталоги перед созданием каталога, для создания которого она предназначена 1 .
Другое дело, когда вы запускаете скрипты, которым важно выполняться в определенном рабочем каталоге. Если скрипт ожидает найти файлы, используя относительные пути из своего текущего рабочего каталога, то, очевидно, вам придется убедиться, что рабочий каталог правильный, прежде чем запускать команду, возможно, с помощью
( cd directory && thescript )
... если скрипт не сделает это сам.
1 Небольшое исправление :В Linux командаmkdir -p a/b/c
будет вызывать mkdir("a")
,chdir("a")
, mkdir("b")
, chdir("b")
, mkdir("c")
, а в OpenBSD будет просто вызывать mkdir("a")
, mkdir("a/b")
, mkdir("a/b/c")
. В Linux создание дополнительного одиночного каталога a/b/c/d
с mkdir a/b/c/d
вызовет просто mkdir("a/b/c/d")
.
Таким образом, в Linux mkdir -p
действительно будет внутренне "выполнять cd
" для каждого промежуточного пути при создании каталогов (, тогда как mkdir
без -p
этого не делает ).
Флаг -p
для утилиты mkdir
заставляет ее создавать любой отсутствующий промежуточный каталог, и очевидно, что разработчики BSD и Linux делают это немного по-разному.