Hvordan kopiere filer ved å bruke «install»-kommandoen på Linux

install er en allsidig filkopieringskommando i Linux og macOS. Den er perfekt for superbrukeren som leter etter effektivitet. Les denne artikkelen for å finne ut hvordan du kan jobbe smartere – ikke hardere.

Vent – det er ikke for å installere programvare?

Installasjonskommandoen kan ha det mest misvisende navnet av noen av Linux-kommandoene. Den installerer faktisk ingen programvare. Hvis du prøver å installere en programvarepakke fra kommandolinjen i Ubuntu eller en annen Debian-basert distribusjon, bruk apt-get-kommandoen. På andre Linux-distribusjoner, bruk Linux-distribusjonens pakkehåndteringsverktøy i stedet – for eksempel dnf på Fedora eller zypper på openSUSE.

Så hva gjør installering?

I et nøtteskall kombinerer installering elementer fra cp (kopiere), chown (bytte eier), chmod (endre modus), mkdir (lage katalog), og strip (stripesymboler) kommandoer. Den lar deg bruke funksjoner fra alle disse i én enkelt handling.

Installasjonskommandoen kan:

Kopier filer som cp-kommandoen.
Velg om du vil overskrive eksisterende filer.
Opprett målkatalogen hvis den ikke eksisterer, som mkdir.
Sett brukertillatelsesflaggene til filene, akkurat som chmod-kommandoen.
Angi eieren av filene, akkurat som chown-kommandoen.
Fjern ikke-essensiell bagasje fra kjørbare filer, akkurat som strip-kommandoen.

Til tross for all den funksjonaliteten, har ikke installeringskommandoen det også mange alternativer å kjempe med.

Når vil du bruke den

Installasjonskommandoen vil sannsynligvis ikke brukes hver dag. Det er nyttig, men bare for visse situasjoner. Et scenario der installasjon kommer til sin rett er programvareutvikling. La oss si at du programmerer et nytt verktøy. Du må gjøre tester utenfor utviklingsmiljøet. For å gjøre det må du kopiere de nye programfilene til en testkatalog. Testkatalogen må kanskje opprettes, og du må angi riktige tillatelser og eierskap for filene.

Fordi utvikling er en iterativ aktivitet, kan du ende opp med å gjøre denne sekvensen av handlinger mange, mange ganger. Installasjonskommandoen gjør alt det tunge løftet for deg. Til slutt, når det nye verktøyet ditt er klart til å distribueres, kan du bruke installer til å kopiere det med de riktige tillatelsene til det endelige arbeidsstedet.

  Hvordan lage en byttefil på Linux

Et eksempel

En programmerer jobber med nettopp et slikt nytt verktøy, kalt ana. Den består av en kjørbar binær fil og en database. Etter testing må den kopieres til /usr/local/bin for å gjøre den tilgjengelig for alle brukere av Linux-systemet. Du må erstatte filnavnene og katalogbanene i eksemplet vårt med filene og banene du bruker på datamaskinen din når du bruker install.

Inntil den er klar for utgivelse vil den bli testet i en katalog kalt ~/test/ana. Medlemmer av geek-gruppen vil ha lese- og utføringstillatelser. Andre brukere vil også ha lese- og utføringstillatelser. Installeringskommandoen bruker den samme numeriske representasjonen for tillatelser som chmod gjør. Vår programmerer har bestemt at tillatelsene må settes til:

Eier: Les, skriv og utfør.
Gruppe: Les og utfør.
Andre: Kun utfør.

Slik bruker du installeringskommandoen

Arbeidskatalogen til vår fiktive programmerer er ~/work. Han har skrevet programmet, kompilert det og produsert en binær som heter ana. Han har allerede laget databasefilen som ana jobber med, Words.db. Så begge filene er klare for testing. La oss ta en titt på dem:

ls -l ana Words.db

Ana-verktøyet han nettopp har skrevet lager anagrammer ut fra en setning som er gitt på kommandolinjen. Verifikasjonstesting er ganske grei.

Programmereren vår har påkalt ana med uttrykket «kjeks» og alt ser bra ut. Han ønsker nå å kopiere disse to filene til ~/test/ana-katalogen for å se om det nye verktøyet fungerer korrekt borte fra utviklingsmiljøet. Han utsteder følgende kommando:

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

Alternativene som ble brukt på kommandolinjen var:

D: Opprett kataloger, inkludert overordnede kataloger, om nødvendig.
v: Utførlig, lister opp hver katalog slik den lages og hver filkopiering etter hvert som den utføres.
t: Målkatalog.

Vi kan se at install oppretter ~/test-katalogen, og deretter oppretter ~/test/ana-katalogen. Filene er listet opp én etter én etter hvert som de kopieres til målkatalogen.

Å liste filene i ~/test/ana bekrefter at de har blitt kopiert over riktig.

ls -l

Det neste trinnet er å teste ana-verktøyet ved å starte det i ~/test/ana-katalogen.

Verktøyet fungerer som forventet, noe som er flott. Tillatelsene er imidlertid ikke korrekte. Kravet er å angi at medlemmer av gruppenerden skal ha lese- og kjøretillatelser, og at andre brukere kun skal ha kjøring.

  37 Viktige Linux-kommandoer du bør kjenne til

Vi kan løse begge disse problemene ganske enkelt med følgende kommando. Legg merke til bruken av sudo for å kjøre kommandoen med root-tillatelser. Alternativene -o og -g og krever dette. Vi blir bedt om passordet vårt når vi utsteder kommandoen.

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

Alternativet -b (backup) lager sikkerhetskopier av filene før de overskrives.
Alternativet -S (suffiks) definerer suffikset for sikkerhetskopifilene. Hvis du ikke oppgir et suffiks, brukes en ~ (tilde). Vi ber install om å bruke suffikset .bak.
Vi angir at eieren av filen skal være dave ved å bruke -o (eier)-alternativet.
Alternativet -g (gruppe) krever navnet på en gruppe. Dette blir eiergruppen til filene. Gruppen vi skal bruke heter geek.
Alternativet -m (modus) setter filmodusene for filene ved å bruke standard chmod numerisk syntaks.

Vi trenger ikke lenger å bruke alternativet -D (opprett kataloger), fordi vi vet at testkatalogen allerede eksisterer. Vi har også utelatt alternativet -v (verbose). Ved å liste filene i ~/test/ana-katalogen vår viser vi fildetaljene:

ls -l

Dette bekrefter at alle våre krav er oppfylt.

Filene har blitt kopiert over til testkatalogen.
Tillatelsene er satt riktig.
dave er eieren av filene.
Geek-gruppen er eiergruppen til de to filene.
Det er laget sikkerhetskopier av hver fil, kalt ana.bak og Words.db.bak.

Alt dette ble oppnådd ved bruk av én kommando. Ryddig.

Programmereren vår gjør noen siste endringer i verktøyet og kompilerer på nytt. Filene som er endret må kopieres over til ~/test/ana-katalogen fra ~/work-katalogen. Vi kan gjøre dette ved å bruke alternativet -C (sammenlign). Hvis kildefilen og målfilen er den samme, kopieres ikke kildefilen.

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

Oppføring av filene i målkatalogen viser oss at filstørrelsen på ana-filen har endret seg. Den er større enn ana.bakfilen. Tidsstemplet på ana har også endret seg. Disse endringene er fordi den nye versjonen av filen har blitt kopiert hit.

ls -l

Filstørrelsen og tidsstemplet til Words.db-filen er ikke endret. Det ble ikke gjort endringer i Words.db-filen, så den ble ikke kopiert over. På et prosjekt med mange filer kan alternativet -C (sammenlign) spare mye tid og harddisk-churn, ved kun å kopiere de filene som er endret.

  Hvordan bruke den siste kommandoen på Linux

Programmereren har igjen testet at ana-verktøyet fortsetter å fungere.

Det er på tide å bruke install for å kopiere filene til katalogen /usr/local/bin. Dette vil gjøre det nye verktøyet tilgjengelig for alle brukere av denne Linux-datamaskinen. Vi vet at /usr/local/bin eksisterer, så vi trenger ikke lage den katalogen. Vi kan bruke en modifisert versjon av vår siste kommando.

Vi har endret målkatalogen til å være /usr/local/bin. Vi har fjernet alternativet -C (sammenlign) fordi det ikke er noen kopier av disse filene i målkatalogen ennå, så det er ingenting å sammenligne med. På samme måte er det ingenting å sikkerhetskopiere, så vi kan fjerne alternativet -b (backup) og -S (suffiks).

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

Vi kan liste at filene har kommet til /usr/local/bin:

ls -l

Og som en siste test, la oss bytte katalog til hjemmekatalogen vår og se om vi kan starte vårt nye verktøy derfra.

Merk at vi ikke trengte å innlede ana-kommandoen med ./ som betyr at den kjører fra /usr/local/bin. Oppdrag utført.

Vi nevnte at installasjon kan fjerne overflødige symboltabeller og annen bagasje fra binærfilen, for å redusere den i størrelse. La oss gjøre det nå. Merk at kommandoen nedenfor ikke inkluderer Words.db. Dette er fordi Words.db er en databasefil, ikke en binær kjørbar fil. For å kopiere og krympe den binære filen ana kan vi bruke følgende kommando. Vi har lagt til alternativet -s (krympe) med små bokstaver «s.» Vi har lagt til alternativet -b (backup) og -S (suffiks), med en stor «S.»

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

Ved å liste filene i /usr/local/bin kan vi sammenligne størrelsen på ana-filen med dens sikkerhetskopiversjon. Ana-filen er redusert til nesten 60 % av den forrige størrelsen.

ls -l /usr/local/bin

Oppsummert

Installeringskommandoen henvender seg til en ganske nisjebruk. For mange mennesker vil den ikke brukes dag ut og dag inn, eller muligens fra måned til måned. Til tross for det er installeringskommandoen et godt verktøy å bli kjent med og ha i arsenalet av triks. For de anledninger du trenger det, belønner den læringskurven din med økt effektivitet, enkelhet og ganske enkelt færre tastetrykk.