Как копировать файлы с помощью команды «установить» в Linux

install — это универсальная команда для копирования файлов в Linux и macOS. Он идеально подходит для опытных пользователей, которым нужна эффективность. Прочтите эту статью, чтобы узнать, как работать умнее, а не усерднее.

Подождите, это не для установки программного обеспечения?

Команда установки может иметь наиболее вводящее в заблуждение имя среди всех команд Linux. На самом деле он не устанавливает никакого программного обеспечения. Если вы пытаетесь установить программный пакет из командной строки в Ubuntu или другом дистрибутиве на основе Debian, используйте команду apt-get. В других дистрибутивах Linux используйте вместо этого инструмент управления пакетами вашего дистрибутива Linux — например, dnf в Fedora или zypper в openSUSE.

Итак, что делает установка?

В двух словах install объединяет элементы из cp (копировать), chown (сменить владельца), chmod (изменить режим), mkdir (сделать каталог) и полосы (полосы символы) команды. Он позволяет вам использовать все функции в одном действии.

Команда установки может:

Скопируйте файлы, как команда cp.
Выберите, следует ли перезаписывать существующие файлы.
Создайте целевой каталог, если он не существует, например mkdir.
Установите флаги разрешений пользователя для файлов, как в команде chmod.
Установите владельца файлов, как в команде chown.
Удалите несущественный багаж из исполняемых файлов, как и команда strip.

Несмотря на всю эту функциональность, команда установки также не имеет много вариантов бороться с.

установить страницу руководства

Когда бы вы это использовали

Команда установки, вероятно, не будет использоваться каждый день. Это полезно, но только в определенных ситуациях. Один из сценариев, в котором установка вступает в силу, — это разработка программного обеспечения. Допустим, вы программируете новую утилиту. Вам нужно будет проводить тестирование вне среды разработки. Для этого вам нужно скопировать новые файлы программы в тестовую директорию. Может потребоваться создать тестовый каталог, и вам нужно будет установить правильные разрешения и права собственности для файлов.

Поскольку разработка — это итеративная деятельность, вы можете выполнять эту последовательность действий много-много раз. Команда установки делает всю тяжелую работу за вас. Наконец, когда ваша новая утилита будет готова к развертыванию, вы можете использовать команду install, чтобы скопировать ее с правильными разрешениями в ее окончательное рабочее место.

  Как интегрировать Thunderbird с Tor в Linux

Пример

Программист работает как раз над такой новой утилитой, которая называется ana. Он состоит из исполняемого двоичного файла и базы данных. После тестирования его необходимо скопировать в / usr / local / bin, чтобы сделать его доступным для всех пользователей системы Linux. Вам нужно будет заменить имена файлов и пути к каталогам в нашем примере для файлов и путей, которые вы используете на своем компьютере при использовании install.

Пока он не будет готов к выпуску, он будет протестирован в каталоге ~ / test / ana. Члены группы компьютерных фанатов будут иметь разрешения на чтение и выполнение. Другие пользователи также будут иметь разрешения на чтение и выполнение. Команда установки использует то же числовое представление разрешений, что и chmod. Наш программист решил, что необходимо установить разрешения:

Владелец: читать, писать и выполнять.
Группа: Прочтите и выполните.
Другое: только выполнение.

Как использовать команду установки

Рабочий каталог нашего вымышленного программиста ~ / work. Он написал программу, скомпилировал ее и создал двоичный файл под названием ana. Он уже создал файл базы данных, с которым работает Ана, Words.db. Итак, оба файла готовы к тестированию. Посмотрим на них:

ls -l ana Words.db

Утилита ana, которую он только что написал, создает анаграммы из фразы, указанной в командной строке. Проверочное тестирование довольно простое.

проверка утилиты ana в рабочем каталоге

Наш программист вызвал Ану с фразой «бисквит», и все вроде нормально. Теперь он хочет скопировать эти два файла в каталог ~ / test / ana, чтобы проверить, правильно ли работает новая утилита вне среды разработки. Он выдает следующую команду:

install -D -v ana Words.db -t ~/test/ana

Установить команду в / test / ana

В командной строке использовались следующие параметры:

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

Мы видим, что при установке создается каталог ~ / test, а затем создается каталог ~ / test / ana. Файлы перечисляются один за другим по мере их копирования в целевой каталог.

Перечисление файлов в ~ / test / ana подтверждает, что они были скопированы правильно.

ls -l

ls в каталоге / test / ana

Следующий шаг — протестировать утилиту ana, вызвав ее в каталоге ~ / test / ana.

тест утилиты ana в каталоге / test / ana

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

  Как транслировать видео на Chromecast в Linux через командную строку

Мы можем решить обе эти проблемы очень просто с помощью следующей команды. Обратите внимание на использование sudo для запуска команды с правами root. Это требуется для параметров -o и -g и. Когда мы введем команду, нас попросят ввести пароль.

sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

команда установки с параметрами резервного копирования и настройками разрешений

Параметр -b (резервное копирование) создает резервные копии файлов перед их перезаписью.
Параметр -S (суффикс) определяет суффикс для файлов резервных копий. Если вы не укажете суффикс, используется ~ (тильда). Мы просим установку использовать суффикс .bak.
Мы устанавливаем владельцем файла dave, используя параметр -o (владелец).
Параметр -g (группа) требует имени группы. Он становится группой владельцев файлов. Группа, которую мы собираемся использовать, называется geek.
Параметр -m (mode) устанавливает режимы файлов для файлов с использованием стандартного числового синтаксиса chmod.

Нам больше не нужно использовать параметр -D (создавать каталоги), потому что мы знаем, что тестовый каталог уже существует. Мы также опустили опцию -v (подробный). Список файлов в нашем каталоге ~ / test / ana показывает нам подробности файла:

ls -l

ls в каталоге / test / ana

Это подтверждает, что все наши требования соблюдены.

Файлы были скопированы в каталог тестирования.
Разрешения установлены правильно.
Дэйв — владелец файлов.
Группа компьютерных пользователей — это группа владельцев двух файлов.
Резервные копии были сделаны для каждого файла, названного ana.bak и Words.db.bak.

Все это было достигнуто с помощью одной команды. Аккуратно.

Наш программист вносит последние изменения в утилиту и повторно компилирует ее. Измененные файлы необходимо скопировать в каталог ~ / test / ana из каталога ~ / work. Мы можем сделать это с помощью опции -C (сравнить). Если исходный файл и целевой файл совпадают, исходный файл не копируется.

sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

установить команду с параметром сравнения -C

Список файлов в целевом каталоге показывает нам, что размер файла ana изменился. Он больше, чем файл ana.bakfile. Отметка времени на Ане также изменилась. Эти изменения вызваны тем, что сюда была скопирована новая версия файла.

ls -l

ls в / test / ana с помощью утилиты test fo ana

Размер файла и отметка времени файла Words.db не изменились. В файл Words.db не было внесено никаких изменений, поэтому он не копировался. В проекте с большим количеством файлов опция -C (сравнить) может сэкономить много времени и уменьшить отток жесткого диска, копируя только те файлы, которые были изменены.

  Как установить SSH в Linux и полезные команды

Программист еще раз проверил, что утилита ana продолжает работать.

Пришло время использовать install для копирования файлов в каталог / usr / local / bin. Это сделает новую утилиту доступной для всех пользователей этого компьютера Linux. Мы знаем, что существует / usr / local / bin, поэтому нам не нужно создавать этот каталог. Мы можем использовать модифицированную версию нашей последней команды.

Мы изменили целевой каталог на / usr / local / bin. Мы удалили опцию -C (сравнение), потому что в целевом каталоге еще нет копий этих файлов, поэтому сравнивать не с чем. Точно так же нечего копировать, поэтому мы можем удалить параметр -b (резервное копирование) и параметр -S (суффикс).

sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin

установить копирование файлов в / usr / local / bin

Мы можем указать, что файлы прибыли в / usr / local / bin:

ls -l

ls из / usr / local / bin

И в качестве последнего теста давайте сменим каталог на наш домашний и посмотрим, сможем ли мы оттуда вызвать нашу новую утилиту.

тест утилиты ana

Обратите внимание, что нам не нужно начинать команду ana с ./, что означает, что она запускается из / usr / local / bin. Миссия выполнена.

Мы упоминали, что при установке можно удалить из двоичного файла избыточные таблицы символов и другой багаж, чтобы уменьшить его размер. Давай сделаем это сейчас. Обратите внимание, что приведенная ниже команда не включает Words.db. Это потому, что Words.db — это файл базы данных, а не исполняемый двоичный файл. Чтобы скопировать и сжать двоичный файл ana, мы можем использовать следующую команду. Мы добавили параметр -s (сокращение) с буквой «s» в нижнем регистре. Мы снова добавили параметр -b (резервное копирование) и параметр -S (суффикс) с заглавной буквой «S».

sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin

параметр установки с параметром -s strip

Перечисление файлов в / usr / local / bin позволяет нам сравнить размер файла ana с его версией резервной копии. Файл ana уменьшен почти до 60% от своего предыдущего размера.

ls -l /usr/local/bin

ls в рабочем каталоге

В итоге

Команда install предназначена для довольно узкой ниши. Многие люди не будут использовать его изо дня в день или, возможно, из месяца в месяц. Несмотря на это, команда install — хороший инструмент, с которым нужно ознакомиться и иметь в своем арсенале уловок. В тех случаях, когда вам это нужно, он вознаграждает вашу кривую обучения повышением эффективности, простоты и просто меньшего количества нажатий клавиш.