Как да копирате файлове с помощта на командата „install“ на Linux

install е универсална команда за копиране на файлове в Linux и macOS. Той е идеален за опитен потребител, който търси ефективност. Прочетете тази статия, за да разберете как да работите по-интелигентно, а не по-трудно.

Изчакайте — не е за инсталиране на софтуер?

Командата за инсталиране може да има най-подвеждащото име от която и да е от командите на Linux. Всъщност не инсталира никакъв софтуер. Ако се опитвате да инсталирате софтуерен пакет от командния ред в Ubuntu или друга базирана на Debian дистрибуция, използвайте командата apt-get. В други дистрибуции на Linux използвайте вместо това инструмента за управление на пакети на вашата Linux дистрибуция — например dnf на Fedora или zypper на openSUSE.

И така, какво прави инсталирането?

Накратко инсталацията комбинира елементи от cp (копие), chown (смени собственика), chmod (промяна на режима), mkdir (направи директория) и лента (ленти символи) команди. Позволява ви да използвате функции от всички в едно действие.

Командата за инсталиране може:

Копирайте файлове като командата cp.
Изберете дали да презапишете съществуващите файлове.
Създайте целевата директория, ако тя не съществува, като mkdir.
Задайте флаговете за потребителски разрешения на файловете, точно като командата chmod.
Задайте собственика на файловете, точно като командата chown.
Премахнете несъществения багаж от изпълними файлове, точно като командата strip.

Въпреки цялата тази функционалност, командата за инсталиране също няма много опции да се бори с.

Кога бихте го използвали

Командата за инсталиране вероятно няма да се използва всеки ден. Полезно е, но само за определени ситуации. Един сценарий, при който инсталацията влиза в сила, е разработката на софтуер. Да приемем, че програмирате нова помощна програма. Ще трябва да направите тестване извън средата за разработка. За да направите това, трябва да копирате новите програмни файлове в тестова директория. Може да се наложи да се създаде тестовата директория и да зададете правилните разрешения и собственост за файловете.

Тъй като разработването е итеративна дейност, в крайна сметка можете да извършите тази последователност от действия много, много пъти. Командата за инсталиране върши цялата тежка работа вместо вас. И накрая, когато новата ви помощна програма е готова за внедряване, можете да използвате install, за да я копирате с правилните разрешения до крайното й работно място.

  Как да инсталирате темата Arrongin на Linux

Пример

Програмист работи точно върху такава нова помощна програма, наречена ana. Състои се от изпълним двоичен файл и база данни. След тестване той трябва да бъде копиран в /usr/local/bin, за да бъде достъпен за всички потребители на системата Linux. Ще трябва да замените имената на файловете и пътищата към директорията в нашия пример за файловете и пътищата, които използвате на вашия компютър, когато използвате install.

Докато не е готов за пускане, той ще бъде тестван в директория, наречена ~/test/ana. Членовете на групата на маниаците ще имат разрешения за четене и изпълнение. Други потребители също ще имат разрешения за четене и изпълнение. Командата за инсталиране използва същото числово представяне за разрешения като chmod. Нашият програмист реши, че разрешенията трябва да бъдат настроени на:

Собственик: Четете, пишете и изпълнявайте.
Група: Прочетете и изпълнете.
Други: Изпълнявайте само.

Как да използвате командата за инсталиране

Работната директория на нашия измислен програмист е ~/work. Той е написал програмата, компилира я и създаде двоичен файл, наречен ana. Той вече е създал файла на базата данни, с който ana работи, Words.db. Така и двата файла са готови за тестване. Нека да ги разгледаме:

ls -l ana Words.db

Помощната програма ana, която току-що е написал, създава анаграми от фраза, предоставена в командния ред. Тестването за проверка е доста лесно.

Нашият програмист извика ana с фразата „бисквита“ и всичко изглежда добре. Сега той иска да копира тези два файла в директорията ~/test/ana, за да види дали новата помощна програма функционира правилно далеч от средата за разработка. Той издава следната команда:

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

Опциите, използвани в командния ред, бяха:

D: Създайте директории, включително родителски директории, ако е необходимо.
v: Подробно, избройте всяка директория, както е направена и всяко копие на файл, както се изпълнява.
t: Целева директория.

Можем да видим, че install създава директорията ~/test и след това създава директорията ~/test/ana. Файловете са изброени един по един, докато се копират в целевата директория.

Изброяването на файловете в ~/test/ana потвърждава, че са копирани правилно.

ls -l

Следващата стъпка е да тествате помощната програма ana, като я извикате в директорията ~/test/ana.

Помощната програма работи според очакванията, което е страхотно. Разрешенията обаче не са правилни. Изискването е да настроите членовете на групата geek да имат разрешения за четене и изпълнение, а други потребители да имат само изпълнение.

  Как да запазите Twitch потоци за по-късно в Linux

Можем да решим и двата проблема съвсем просто със следната команда. Обърнете внимание на използването на sudo за изпълнение на командата с root права. Опциите -o и -g и опциите изискват това. Ще бъдем попитани за нашата парола, когато издадем командата.

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

Опцията -b (backup) създава резервни копия на файловете, преди те да бъдат презаписани.
Опцията -S (суфикс) дефинира суфикса за архивните файлове. Ако не предоставите суфикс, се използва ~ (тилда). Искаме install да използва суфикс от .bak.
Зададохме собственик на файла да бъде Dave, използвайки опцията -o (собственик).
Опцията -g (група) изисква името на група. Това става групата на собствениците на файловете. Групата, която ще използваме, се нарича geek.
Опцията -m (режим) задава файловите режими за файловете, използвайки стандартния цифров синтаксис на chmod.

Вече не е необходимо да използваме опцията -D (създаване на директории), защото знаем, че тестовата директория вече съществува. Ние също така пропуснахме опцията -v (подробно). Изброяването на файловете в нашата директория ~/test/ana ни показва подробностите за файла:

ls -l

Това потвърждава, че всички наши изисквания са изпълнени.

Файловете са копирани в директорията за тестване.
Разрешенията са зададени правилно.
dave е собственикът на файловете.
Групата geek е групата на собствениците на двата файла.
На всеки файл са направени резервни копия, наречени 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

Изброяването на файловете в целевата директория ни показва, че размерът на файла ana се е променил. Той е по-голям от ana.bakfile. Времевата марка на ana също се промени. Тези промени са защото новата версия на файла е копирана тук.

ls -l

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

  Как да почистите и ускорите Arch 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:

ls -l

И като последен тест нека променим директорията към нашата домашна директория и да видим дали можем да извикаме новата ни помощна програма от там.

Имайте предвид, че не е необходимо да предваряваме командата 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

Изброяването на файловете в /usr/local/bin ни позволява да сравним размера на ana файла с неговата резервна версия. Ана файлът е намален до почти 60% от предишния си размер.

ls -l /usr/local/bin

В обобщение

Командата install се грижи за доста нишова употреба. За много хора той няма да се използва ден след ден или евентуално от месец на месец. Въпреки това командата за инсталиране е добър инструмент, с който трябва да сте запознати и да имате в арсенала си от трикове. За случаите, когато имате нужда от него, той възнаграждава вашата крива на обучение с повишена ефективност, простота и просто по-малко натискания на клавиши.