Hur man kopierar filer med kommandot ”installera” på Linux

install är ett mångsidigt filkopieringskommando i Linux och macOS. Det är perfekt för den kraftanvändare som letar efter effektivitet. Läs den här artikeln för att upptäcka hur du arbetar smartare – inte hårdare.

Vänta — det är inte för att installera programvara?

Installationskommandot kan ha det mest missvisande namnet av något av Linux-kommandona. Den installerar faktiskt ingen programvara. Om du försöker installera ett programpaket från kommandoraden i Ubuntu eller en annan Debian-baserad distribution, använd kommandot apt-get. På andra Linux-distributioner, använd din Linux-distributions pakethanteringsverktyg istället – till exempel dnf på Fedora eller zypper på openSUSE.

Så vad gör installationen?

I ett nötskal installerar kombinerar element från cp (kopiera), chown (byta ägare), chmod (ändra läge), mkdir (skapa katalog), och strippa (remsa symboler) kommandon. Det låter dig använda funktioner från alla dessa i en enda åtgärd.

Installationskommandot kan:

Kopiera filer som kommandot cp.
Välj om du vill skriva över befintliga filer.
Skapa målkatalogen om den inte finns, som mkdir.
Ställ in användarbehörighetsflaggor för filerna, precis som kommandot chmod.
Ställ in ägaren till filerna, precis som kommandot chown.
Ta bort icke-nödvändigt bagage från körbara filer, precis som kommandot strip.

Trots all den funktionaliteten har inte installationskommandot också många alternativ att kämpa med.

När skulle du använda den

Installationskommandot kommer förmodligen inte att användas varje dag. Det är användbart, men bara för vissa situationer. Ett scenario där installationen kommer till sin rätt är mjukvaruutveckling. Låt oss säga att du programmerar ett nytt verktyg. Du måste göra tester utanför utvecklingsmiljön. För att göra det måste du kopiera de nya programfilerna till en testkatalog. Testkatalogen kan behöva skapas och du måste ställa in rätt behörigheter och äganderätt för filerna.

Eftersom utveckling är en iterativ aktivitet kan det sluta med att du gör denna sekvens av åtgärder många, många gånger. Installationskommandot gör allt det tunga arbetet åt dig. Slutligen, när ditt nya verktyg är redo att distribueras, kan du använda installationen för att kopiera det med rätt behörigheter till dess slutliga arbetsplats.

Ett exempel

En programmerare arbetar på just ett sådant nytt verktyg, kallat ana. Den består av en körbar binär fil och en databas. Efter testning måste den kopieras till /usr/local/bin för att göra den tillgänglig för alla användare av Linux-systemet. Du måste ersätta filnamnen och katalogsökvägarna i vårt exempel med de filer och sökvägar du använder på din dator när du använder installation.

Tills den är redo att släppas kommer den att testas i en katalog som heter ~/test/ana. Medlemmar i nördgruppen kommer att ha läs- och körrättigheter. Andra användare kommer också att ha läs- och körrättigheter. Installationskommandot använder samma numeriska representation för behörigheter som chmod gör. Vår programmerare har beslutat att behörigheterna måste ställas in på:

Ägare: Läs, skriv och kör.
Grupp: Läs och kör.
Övrigt: Endast exekvera.

Hur man använder installationskommandot

Vår fiktiva programmerares arbetskatalog är ~/work. Han har skrivit programmet, sammanställt det och producerat en binär som kallas ana. Han har redan skapat databasfilen som ana arbetar med, Words.db. Så båda filerna är redo för testning. Låt oss ta en titt på dem:

ls -l ana Words.db

Ana-verktyget han just har skrivit skapar anagram av en fras som finns på kommandoraden. Verifieringstestning är ganska enkel.

Vår programmerare har åberopat ana med frasen ”kex” och allt verkar bra. Han vill nu kopiera dessa två filer till ~/test/ana-katalogen för att se om det nya verktyget fungerar korrekt borta från utvecklingsmiljön. Han utfärdar följande kommando:

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

Alternativen som användes på kommandoraden var:

D: Skapa kataloger, inklusive överordnade kataloger, om det behövs.
v: Utförlig, lista varje katalog som den görs och varje filkopiering när den utförs.
t: Målkatalog.

Vi kan se att installationen skapar ~/test-katalogen och sedan skapar ~/test/ana-katalogen. Filerna listas en efter en när de kopieras till målkatalogen.

Att lista filerna i ~/test/ana bekräftar att de har kopierats över korrekt.

ls -l

Nästa steg är att testa ana-verktyget genom att anropa det i ~/test/ana-katalogen.

Verktyget fungerar som förväntat, vilket är jättebra. Däremot är behörigheterna inte korrekta. Kravet är att ställa in medlemmar i gruppnörden att ha läs- och exekveringsbehörigheter och att andra användare endast ska ha exekvering.

Vi kan ta itu med båda dessa problem helt enkelt med följande kommando. Notera användningen av sudo för att köra kommandot med root-behörigheter. Alternativen -o och -g och kräver detta. Vi kommer att bli tillfrågade om vårt lösenord när vi utfärdar kommandot.

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

Alternativet -b (säkerhetskopiering) skapar säkerhetskopior av filerna innan de skrivs över.
Alternativet -S (suffix) definierar suffixet för säkerhetskopieringsfilerna. Om du inte anger ett suffix används en ~ (tilde). Vi ber installationen att använda suffixet .bak.
Vi ställer in ägaren av filen till dave med alternativet -o (ägare).
Alternativet -g (grupp) kräver namnet på en grupp. Detta blir ägargruppen för filerna. Gruppen vi ska använda heter geek.
Alternativet -m (läge) ställer in fillägen för filerna med den numeriska standardsyntaxen chmod.

Vi behöver inte längre använda alternativet -D (skapa kataloger), eftersom vi vet att testkatalogen redan finns. Vi har också utelämnat alternativet -v (verbose). Lista filerna i vår ~/test/ana-katalog visar oss fildetaljerna:

ls -l

Detta bekräftar att alla våra krav har uppfyllts.

Filerna har kopierats över till testkatalogen.
Behörigheterna har ställts in korrekt.
dave är ägaren till filerna.
Nördgruppen är ägargruppen för de två filerna.
Säkerhetskopior har gjorts av varje fil, kallad ana.bak och Words.db.bak.

Allt detta uppnåddes genom att använda ett kommando. Propert.

Vår programmerare gör några sista ändringar i verktyget och kompilerar om. Filerna som har ändrats måste kopieras över till ~/test/ana-katalogen från ~/work-katalogen. Vi kan göra detta genom att använda alternativet -C (jämför). Om källfilen och målfilen är samma, kopieras inte källfilen.

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

Lista filerna i målkatalogen visar oss att filstorleken på ana-filen har ändrats. Den är större än ana.bakfilen. Tidsstämpeln på ana har också ändrats. Dessa ändringar beror på att den nya versionen av filen har kopierats hit.

ls -l

Filstorleken och tidsstämpeln för filen Words.db har inte ändrats. Inga ändringar gjordes i Words.db-filen, så den kopierades inte över. På ett projekt med många filer kan alternativet -C (jämföra) spara mycket tid och hårddiskavfall genom att bara kopiera de filer som har ändrats.

Programmeraren har återigen testat att ana-verktyget fortsätter att fungera.

Det är dags att använda installationen för att kopiera filerna till katalogen /usr/local/bin. Detta kommer att göra det nya verktyget tillgängligt för alla användare av denna Linux-dator. Vi vet att /usr/local/bin finns, så vi behöver inte skapa den katalogen. Vi kan använda en modifierad version av vårt senaste kommando.

Vi har ändrat målkatalogen till /usr/local/bin. Vi har tagit bort alternativet -C (jämför) eftersom det inte finns några kopior av dessa filer i målkatalogen ännu, så det finns inget att jämföra med. På samma sätt finns det inget att säkerhetskopiera, så vi kan ta bort alternativen -b (säkerhetskopiering) och -S (suffix).

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

Vi kan lista att filerna har kommit till /usr/local/bin:

ls -l

Och som ett sista test, låt oss byta katalog till vår hemkatalog och se om vi kan anropa vårt nya verktyg därifrån.

Observera att vi inte behövde inleda ana-kommandot med ./ vilket betyder att det körs från /usr/local/bin. Uppdrag slutfört.

Vi nämnde att installation kan ta bort redundanta symboltabeller och annat bagage från den binära filen, för att minska den i storlek. Låt oss göra det nu. Observera att kommandot nedan inte inkluderar Words.db. Detta beror på att Words.db är en databasfil, inte en binär körbar fil. För att kopiera och krympa den binära filen ana kan vi använda följande kommando. Vi har lagt till alternativet -s (krympa) med små bokstäver ”s.” Vi har lagt till tillbaka i alternativet -b (backup) och alternativet -S (suffix), med ett versaler ”S.”

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

Genom att lista filerna i /usr/local/bin kan vi jämföra storleken på ana-filen med dess backupversion. Ana-filen har reducerats till nästan 60 % av sin tidigare storlek.

ls -l /usr/local/bin

Sammanfattningsvis

Installationskommandot vänder sig till en ganska nischad användning. För många människor kommer den inte att användas dag ut och dag in, eller möjligen från månad till månad. Trots det är installationskommandot ett bra verktyg att vara bekant med och att ha i din arsenal av trick. För de tillfällen när du behöver det belönar den din inlärningskurva med ökad effektivitet, enkelhet och helt enkelt färre tangenttryckningar.