Команда install
је веома корисна алатка за копирање фајлова на Линукс и macOS оперативним системима. Намењена је напредним корисницима који траже ефикасан начин управљања датотекама. У овом чланку ћете открити како да радите паметније, а не напорније.
Чекајте, зар није за инсталирање софтвера?
Име команде install
може бити обмањујуће, јер она заправо не служи за инсталирање софтвера. Ако желите да инсталирате софтверски пакет преко командне линије на Ubuntu или некој другој дистрибуцији заснованој на Debian-у, користите команду apt-get
. У другим дистрибуцијама користите одговарајући менаџер пакета, као што је dnf
на Fedora или zypper
на openSUSE.
Дакле, шта ради команда install?
Укратко, команда install
обједињује функције неколико других команди: cp
(копирање), chown
(промена власника), chmod
(промена режима приступа), mkdir
(креирање директоријума) и strip
(уклањање симбола). Она вам омогућава да све ове операције обавите једном акцијом.
Команда install
може:
- Копирати датотеке слично команди
cp
. - Одабрати да ли да препише постојеће датотеке.
- Креирати циљни директоријум ако не постоји, као команда
mkdir
. - Подесити дозволе приступа датотекама, као команда
chmod
. - Променити власника датотека, као команда
chown
. - Уклонити непотребне симболе из извршних датотека, као команда
strip
.
И поред свих ових могућности, команда install
нема много опција са којима треба да се бавите.
Када је треба користити?
Вероватно нећете користити команду install
сваки дан. Она је корисна, али само у одређеним ситуацијама. Један од примера где се команда install
посебно истиче је развој софтвера. Рецимо да програмирате нови алат. Требаће вам тестирање ван вашег развојног окружења. Да бисте то урадили, морате да копирате нове програмске датотеке у тестни директоријум. Можда ћете морати да креирате тај директоријум, а такође је потребно да подесите исправне дозволе и власништво над фајловима.
Пошто је развој итеративан процес, вероватно ћете морати да поновите ову серију акција много пута. Команда install
обавља све те послове уместо вас. На крају, када ваш нови алат буде спреман за употребу, можете користити install
да га копирате са одговарајућим дозволама на његову крајњу радну локацију.
Пример
Замислимо програмера који ради на новом алату по имену ana
. Он се састоји од извршног бинарног фајла и базе података. Након тестирања, потребно је да се копира у /usr/local/bin
како би био доступан свим корисницима Linux система. Када користите install
, замените имена датотека и путање директоријума у нашем примеру са онима које користите на свом рачунару.
Док не буде спреман за објављивање, програм се тестира у директоријуму ~/test/ana
. Чланови групе geek
ће имати дозволе за читање и извршавање, а остали корисници ће имати само дозволе за читање и извршавање. Команда install
користи исту нумеричку репрезентацију за дозволе као и chmod
. Наш програмер је одлучио да дозволе морају бити подешене на:
- Власник: Читање, писање и извршавање.
- Група: Читање и извршавање.
- Остали: Само извршавање.
Како користити команду install
Радни директоријум нашег програмера је ~/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
имају дозволе за читање и извршавање, а да други корисници имају само дозволу за извршавање.
Оба ова проблема можемо једноставно решити следећом командом. Обратите пажњу на употребу sudo
за покретање команде са root дозволама, јер опције -o
и -g
то захтевају. Биће нам затражена лозинка када покренемо команду.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Објашњење опција:
-b
(backup): Прави резервне копије датотека пре него што их препише.-S
(suffix): Дефинише суфикс за датотеке резервне копије. Ако не наведете суфикс, користи се~
(тилда). Тражимо одinstall
да користи суфикс.bak
.-o
(owner): Поставља власника датотеке наdave
.-g
(group): Захтева име групе. Ово постаје власничка група датотека. Група коју ћемо користити се зовеgeek
.-m
(mode): Поставља дозволе приступа датотекама, користећи стандардну нумеричку синтаксуchmod
.
Више не морамо да користимо опцију -D
(креирај директоријуме) јер знамо да тестни директоријум већ постоји. Такође смо изоставили опцију -v
(вербосе). Провера датотека у нашем ~/test/ana
директоријуму показује нам детаље:
ls -l
Ово потврђује да су сви наши захтеви испуњени.
- Датотеке су копиране у директоријум за тестирање.
- Дозволе су исправно постављене.
dave
је власник датотека.- Група
geek
је власничка група обе датотеке. - Направљене су резервне копије сваке датотеке, назване
ana.bak
иWords.db.bak
.
Све ово је постигнуто употребом једне команде. Одлично!
Наш програмер прави неке завршне измене у алату и поново га компајлира. Датотеке које су промењене треба да се копирају у директоријум ~/test/ana
из директоријума ~/work
. То можемо учинити користећи опцију -C
(compare). Ако су изворна и циљна датотека исте, изворна датотека се не копира.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Провера датотека у циљном директоријуму нам показује да се величина датотеке ana
променила. Она је већа од ana.bak
датотеке. Временска ознака на ana
се такође променила. Ове промене су зато што је нова верзија датотеке копирана овде.
ls -l
Величина датотеке и временска ознака датотеке Words.db
се нису промениле. Нису направљене никакве измене у Words.db
датотеци, тако да није копирана. На пројекту са много датотека, опција -C
(compare) може уштедети много времена и простора на чврстом диску тако што ће копирати само оне датотеке које су се промениле.
Програмер је поново тестирао и утврдио да алат ana
наставља да ради.
Време је да се користи install
за копирање датотека у директоријум /usr/local/bin
. Ово ће учинити нови алат доступним свим корисницима овог Linux рачунара. Знамо да /usr/local/bin
постоји, тако да не морамо да креирамо тај директоријум. Можемо користити модификовану верзију наше последње команде.
Променили смо циљни директоријум у /usr/local/bin
. Уклонили смо опцију -C
(compare) јер још увек нема копија ових датотека у циљном директоријуму, па нема шта да се пореди. Исто тако, нема ништа за прављење резервне копије, тако да можемо уклонити опцију -b
(backup) и -S
(suffix).
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Можемо проверити да су датотеке стигле у /usr/local/bin
:
ls -l
И као последњи тест, хајде да променимо директоријум у наш кућни директоријум и видимо да ли можемо да покренемо наш нови алат одатле.
Приметите да нисмо морали да покрећемо команду ana
са ./
, што значи да се извршава из /usr/local/bin
. Мисија је остварена.
Поменули смо да install
може уклонити непотребне симболе и друге податке из бинарне датотеке, како би је смањио. Урадимо то сада. Имајте на уму да наредна команда не укључује Words.db
. То је зато што је Words.db
база података, а не извршна бинарна датотека. Да бисмо копирали и смањили бинарну датотеку ana
, можемо користити следећу команду. Додали смо опцију -s
(strip) са малим словом „s“. Поново смо додали опцију -b
(backup) и опцију -S
(suffix), са великим словима „S“.
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
Провера датотека у /usr/local/bin
омогућава нам да упоредимо величину ana
датотеке са њеном верзијом резервне копије. Ana
датотека је смањена на скоро 60% своје претходне величине.
ls -l /usr/local/bin
Укратко
Команда install
се не користи тако често. Многи је неће користити свакодневно, или можда месецима. Упркос томе, install
је користан алат који је добро знати и имати при руци. Када вам затреба, наградиће вас за ваше време учења повећањем ефикасности, једноставности и смањеним бројем потребних притисака на тастере.