CD VS Полный путь к команде

Power 7 - это не то же самое, что PowerPC. Если ваш конкретный компьютер явно не указан как поддерживаемый в одном из портов powerpc - см. http://www.netbsd.org/ports/ внизу - вы, скорее всего, не сможете успешно установить NetBSD.

Для неспециалистов по оборудованию, отличному от x86, лучше всего использовать то, что рекомендует производитель.

-1
17.10.2018, 00:43
2 ответа

Выполнение chdirв каталоге, а затем использование коротких имен для доступа к файлам в этом каталоге намного быстрее, чем использование абсолютных путей к файлам.

С другой стороны, :если вы находитесь в определенном каталоге и хотите вызвать команду с большим количеством аргументов имени файла, которые находятся в разных каталогах, использование абсолютных имен путей более безопасно и понятно.

Кстати, :Если вы хотите создать более длинный путь к каталогам(a/b/c/...)и хотите убедиться, что каждый каталог в этом списке будет существовать после того, как команда будет готова, рекомендуется создать один каталог, chdir в этот каталог, а затем перейдите к следующему каталогу. Это позволяет создать такой длинный путь к каталогу, даже если путь длиннее PATH_MAX.

-1
28.01.2020, 05:08

Это действительно то, что вам решать. То, что может повлиять на это решение, может быть связано с тем, хорошо ли оно выглядит или читабельно. С точки зрения скорости выполнения, это не имело бы большого значения.

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

3
28.01.2020, 05:08

Теги

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