Какова цель команды 'установки'?

bc поддерживает натуральный логарифм, если вызвано с -l флаг. Можно вычислить основу 10 или основывать 2 журнала с ним:

$ bc -l
...
l(100)/l(10)
2.00000000000000000000

l(256)/l(2)
8.00000000000000000007

Я не думаю, что существует встроенный факториал, но это достаточно легко записать себя:

$ bc
...
define fact_rec (n) { 
  if (n < 0) {
    print "oops";
    halt;
  }
  if (n < 2) return 1;
  return n*fact_rec(n-1);
}
fact_rec(5)
120

Или:

define fact_it (n) {
  if (n < 0) {
    print "oops";
    halt;
  }
  res = 1;
  for (; n > 1; n--) {
    res *= n;
  }
  return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000

Чтобы быть совместимым POSIX, необходимо было бы записать это:

define f(n) {
  auto s, m
  if (n <= 0) {
    "Invalid input: "
    n
    return(-1)
  }
  s = scale
  scale = 0
  m = n / 1
  scale = s
  if (n != m) {
    "Invalid input: "
    n
    return(-1)
  }
  if (n < 2) return(1)
  return(n * f(n - 1))
}

Это: односимвольное имя функции, нет print, нет halt, круглая скобка, требуемая в return(x). Если Вам не нужен контроль ввода (здесь для положительных целых чисел), это справедливо:

define f(n) {
  if (n < 2) return(1)
  return(n * f(n - 1))
}
51
11.10.2013, 23:04
4 ответа

install не только копирует файлы, но также и изменяет его владение и полномочия и дополнительно удаляет отладочную информацию из исполняемых файлов. Это объединяется cp с chown, chmod и strip. Это - удобный высокоуровневый инструмент к этому, выполняет общую последовательность элементарных задач.

Преимущество install cp для установки исполняемых файлов то, что, если цель уже существует, она удаляет конечный файл и создает новый. Это избавляется от любых текущих свойств, таких как списки управления доступом и возможности, которые могут рассматриваться и как позитивный аспект и как оборотная сторона. При обновлении исполняемых файлов, если там выполняют экземпляры этого исполняемого файла, они продолжают бежать незатронутый. Напротив, cp обновляет файл на месте, если существует тот. На большинстве вариантов Unix это перестало работать с ошибкой EBUSY ¹, если цель является рабочим исполняемым файлом; на некоторых это может заставить цель отказывать, потому что это загружает секции кода динамично, и изменение файла заставляет бессмысленный код быть загруженным.

install команда BSD (включенный 4.2BSD, т.е. в начале 1980-х). Это не было принято POSIX.

¹ “Занятый текстовый файл”. В этом контексте “текстовый файл” означает “двоичный исполняемый файл” по неясным историческим причинам.

51
27.01.2020, 19:33

Это предоставляет стандартизованный способ управления владением файла или каталога и полномочиями при копировании файла или создании каталога в единственной команде.

10
27.01.2020, 19:33
  • 1
    Это не является атомарным. Атомарные средства там не являются никакими промежуточными состояниями, видимыми к другим процессам. install делает копию, сопровождаемую показанным и chmod, все разделяют syscalls, и не использует rename-place (по крайней мере, с coreutils 8.13, который версия GNU не делает). Если Вы предполагаете, что все это происходит атомарно, Вы могли бы получить противное удивление. –   14.10.2013, 03:55

С install команда мы можем Скопировать файл с полномочиями требования

Пример, которые главным образом используют при установке ldap

install -o ldap -g ldap /etc/openldap/DB_CONFIG_EXAMPLE  /var/lib/ldap/DB_CONFIG

Это сохраняет нас выполнение chown ldap. /var/lib/ldap/DB_CONFIG, если Вы скопировали использование cp затем Вы также должны chown в этом сценарии

3
27.01.2020, 19:33

См. страницу справочника для install:

$ man install

выборка

SYNOPSIS
       install [OPTION]... [-T] SOURCE DEST
       install [OPTION]... SOURCE... DIRECTORY
       install [OPTION]... -t DIRECTORY SOURCE...
       install [OPTION]... -d DIRECTORY...


DESCRIPTION
       This  install  program  copies  files  (often just compiled) into 
       destination locations you choose.  If you want to download and
       install a ready-to-use package on a GNU/Linux system, you should instead 
       be using a package manager like yum(1) or apt-get(1).

       In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to 
       the existing DIRECTORY, while  setting  permission  modes and 
       owner/group.  In the 4th form, create all components of the given 
       DIRECTORY(ies).

       Mandatory arguments to long options are mandatory for short options too.

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

   -g, --group=GROUP
          set group ownership, instead of process' current group

   -m, --mode=MODE
          set permission mode (as in chmod), instead of rwxr-xr-x

   -o, --owner=OWNER
          set ownership (super-user only)

   -p, --preserve-timestamps
          apply access/modification times of SOURCE files to corresponding 
          destination files

Ссылки

0
27.01.2020, 19:33
  • 1
    Как я сказал в вопросе, я прочитал основную страницу; это оставило меня неосведомленным относительно того, что это добавляет к функциональности CP. –  azernik 13.10.2013, 01:01
  • 2
    slm, выделил определенную функциональность, которая отделяет два: можно установить определенного владельца, группу и режим для целевого файла с install, вместо того, чтобы просто сохранять существующие полномочия как с cp –  Joshua Miller 13.10.2013, 06:33

Теги

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