Почему установка использования, а не CP и mkdir?

Можно использовать find. В Вашем случае:

find /dev/ -name log4j.jar

Можно также использовать подстановочные знаки, например

find /dev/ -name \*.jar

нашел бы все .jar файлы под /dev.

Обратите внимание, что находят, делает поиск resursively, т.е. ищет все подпапки /dev, также. Можно скорректировать максимальную глубину поиска с помощью -maxdepth параметр, посмотрите man find для получения дополнительной информации.

Обратите внимание также, что в Вашем случае Вы должны, возможно, иметь root полномочия, потому что не все подпапки в /dev читаемы всеми пользователями. В debian/ubuntu системе Вы могли просто добавить a sudo перед find команда.


Если Вы не хотите искать resursively, Вы могли бы просто использовать ls например,

ls /dev/*jar

перечислит все jar файлы под /dev.

68
19.05.2016, 10:53
4 ответа

Это зависит от того, что Вы делаете.

install команда обычно используется в сценариях установки, которые идут с пакетами и исходным кодом для установки двоичного файла к Вашей системе. Это может также использоваться для установки любого другого файла или каталога. В дополнение к -d и -c опции Вы имеете -m для определения новых полномочий файла, который будет установлен, таким образом, Вы не должны делать a cp и a chmod получить тот же результат. Например:

install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"

У Вас также есть опции -g и -o для установки целевой группы и владельца, соответственно. Это избегает отдельных вызовов к chown. В целом, использование install сокращает Ваш сценарий и делает это более кратким путем выполнения создания файла, копирования, установки режима и связанного материала в одной команде вместо многих.

Для ссылки посмотрите man install. Для использования просто смотрите на любой сценарий установки, поставленный с некоторым исходным кодом пакета.

60
27.01.2020, 19:31

"установите" обычно комбинирует следующие действия:

  • Копирование указанного файла к целевому месту, которое делается относительно процессов, которые используют старую копию. В отличие от "CP", "установка" или удаляет связь с файлом, прежде чем создание нового, или (в системах BSD, с переключателем-S) создаст новый и переименует к целевому имени атомарно, которое избегает состояния состязания между установкой и повторным открытием. Если не использовать это, копирование могло бы перестать работать (с ETXTBSY) для рабочего двоичного файла или вызвать катастрофический отказ, если файл библиотеки или данные каждый заменяется.
  • Установите надлежащие учетные данные на новый файл без потребности в отдельных командах.
  • Сделайте промежуточные каталоги, если требуется.
  • Постарайтесь не изменять конечного файла, если это идентично новой версии (-C переключатель).

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

Полное понятие, как я описал, реализовано в системах BSD (в так называемой "xinstall" версии); я рассматриваю здесь "безопасную копию" режим (новая версия с атомарным переименованием) как жизненно важную для этого. Системы Linux (от coreutils) пропускают эту важную часть и подвержены гонкам между удалением и повторным открытием процессом свидетеля; но это, возможно, было покрыто диспетчерами пакетов.

22
27.01.2020, 19:31
  • 1
    Использование install или $(INSTALL) в make-файлах также отмечает те шаги, как являющиеся шагами копирования установки и не некоторыми обычными шагами копирования. Это могло быть полезно. –  Kaz 17.07.2017, 19:01

Если рассматриваемый каталог уже существует:

  • mkdir -p попытается установить биты владения и режима файла
  • установить - d не будет пытаться установить биты владения и режима файла

Это для mkdir и установки из GNU coreutils . Оба они используют одну и ту же функцию make_dir_parents , но с параметром preserve_existing устанавливается значение false или true , соответственно.

4
27.01.2020, 19:31

Я часто использую:

rsync --archive --no-owner --no-group "${element}"

Он имеет возможности «установить» для рекурсивного создания ведущих каталогов и установки разрешений. Но применимо как к файлам и папкам, так и с более простой лингвистикой.

0
07.12.2020, 09:09

Теги

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