Mester install-kommandoen: Kopier filer som en proff i Linux/macOS!

install er en allsidig filkopieringskommando tilgjengelig i Linux og macOS. Den er spesielt nyttig for erfarne brukere som ønsker å strømlinjeforme sine oppgaver. Denne artikkelen utforsker hvordan du kan utnytte denne kommandoen for å jobbe mer effektivt.

Men vent, er dette ikke for å installere programvare?

Kommandoen install har et av de mest misvisende navnene blant Linux-kommandoer. Den brukes faktisk ikke til å installere programvare. For å installere en programvarepakke fra kommandolinjen i Ubuntu eller andre Debian-baserte distribusjoner, må du bruke apt-get. På andre Linux-distribusjoner, bør du bruke pakkebehandleren som følger med distribusjonen, som for eksempel dnf på Fedora eller zypper på openSUSE.

Hva gjør install egentlig?

I hovedsak kombinerer install funksjoner fra flere andre kommandoer, inkludert cp (for kopiering), chown (for å endre eierskap), chmod (for å endre filrettigheter), mkdir (for å lage mapper), og strip (for å fjerne symboler). Dette gir deg muligheten til å utføre operasjoner fra alle disse kommandoene i en enkelt operasjon.

Kommandoen install kan:

  • Kopiere filer, akkurat som cp.
  • Bestemme om eksisterende filer skal overskrives.
  • Opprette målmappen hvis den ikke finnes, som med mkdir.
  • Angi filrettigheter, på samme måte som chmod.
  • Endre eier av filene, som med chown.
  • Fjerne unødvendig informasjon fra kjørbar kode, som strip gjør.

Til tross for sin omfattende funksjonalitet, har ikke install-kommandoen et overveldende antall alternativer å forholde seg til.

Når bør du bruke denne kommandoen?

Du vil sannsynligvis ikke bruke install hver eneste dag. Den er nyttig, men mest i spesifikke situasjoner. Et godt eksempel er innen programvareutvikling. Tenk deg at du utvikler et nytt verktøy. Du trenger å teste det utenfor utviklingsmiljøet. Dette krever at du kopierer de nye programfilene til en testmappe. Det kan også hende at testmappen må opprettes, og du må sette riktige tillatelser og eierskap for filene.

Siden utvikling ofte er en gjentakende prosess, kan det hende du må utføre disse handlingene mange ganger. Kommandoen install forenkler denne prosessen betydelig. Når det nye verktøyet er klart for distribusjon, kan du bruke install til å kopiere det med korrekte tillatelser til det endelige arbeidsområdet.

Et praktisk eksempel

La oss si en utvikler arbeider på et nytt verktøy kalt ana. Verktøyet består av en kjørbar binærfil og en database. Etter testing må disse filene kopieres til /usr/local/bin for å gjøre dem tilgjengelige for alle brukere. I eksemplet må du erstatte filnavn og mapper med de som er relevante for din datamaskin.

Før utgivelse blir verktøyet testet i en mappe ~/test/ana. Medlemmer av gruppen geek skal ha lese- og utførelsesrettigheter, og andre brukere skal også ha leserettigheter. install bruker den samme numeriske representasjonen for rettigheter som chmod. Utvikleren bestemmer at rettighetene skal være:

  • Eier: Lese, skrive og utføre.
  • Gruppe: Lese og utføre.
  • Andre: Kun utføre.

Hvordan bruker vi install kommandoen?

Utviklerens arbeidsmappe er ~/work. Han har skrevet programmet, kompilert det og skapt en binærfil med navnet ana. Han har også opprettet databasefilen Words.db. Begge filene er klare for testing. La oss se på dem:

ls -l ana Words.db

Verktøyet ana genererer anagrammer fra en gitt setning. En enkel test utføres:

Utvikleren kaller ana med uttrykket «kjeks», og alt fungerer som forventet. Nå skal de to filene kopieres til ~/test/ana for å teste verktøyet utenfor utviklingsmiljøet. Han bruker følgende kommando:

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

De brukte alternativene er:

  • -D: Opprett mapper, inkludert overordnede mapper, om nødvendig.
  • -v: Utførlig modus som lister opp opprettede mapper og kopierte filer.
  • -t: Spesifiserer målmappen.

Vi ser at install oppretter mappen ~/test, og deretter ~/test/ana. Deretter listes filene opp mens de kopieres til målmappen.

En liste over filene i ~/test/ana bekrefter at de er kopiert korrekt:

ls -l

Neste trinn er å teste ana ved å kjøre det i ~/test/ana.

Verktøyet fungerer som forventet. Imidlertid er ikke tillatelsene korrekte. Gruppen geek skal ha lese- og utførelsesrettigheter, og andre brukere skal kun ha utførelsesrettigheter.

Dette løses enkelt med følgende kommando. Merk at sudo brukes for å kjøre kommandoen med administratorrettigheter. Alternativene -o og -g krever dette.

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

Alternativene som er brukt er:

  • -b (backup): Lager sikkerhetskopier før filer overskrives.
  • -S (suffiks): Definerer suffikset for sikkerhetskopifilene, her «.bak».
  • -o (eier): Spesifiserer at filene skal eies av brukeren «dave».
  • -g (gruppe): Angir at gruppen «geek» skal være eiergruppen for filene.
  • -m (modus): Setter filrettighetene med numerisk syntaks som i chmod.

Vi trenger ikke lenger -D (opprett mapper), fordi testmappen allerede finnes. Vi har også utelatt -v (utskrift). En liste over filene i ~/test/ana viser nå filinformasjonen:

ls -l

Dette bekrefter at alle kravene er oppfylt:

  • Filene er kopiert til testmappen.
  • Tillatelsene er satt korrekt.
  • «dave» er eieren av filene.
  • Gruppen «geek» er eiergruppen.
  • Sikkerhetskopier av filene er laget, kalt ana.bak og Words.db.bak.

Alt dette oppnås med én enkelt kommando.

Utvikleren gjør noen endringer i verktøyet og kompilerer på nytt. De endrede filene må kopieres fra ~/work til ~/test/ana. Dette gjøres med alternativet -C (sammenlign). Hvis kildefilen og målfilen er identiske, kopieres ikke kildefilen.

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

En liste av filene i målmappen viser at størrelsen på ana-filen har endret seg. Den er større enn ana.bak. Tidsstempelet på ana er også endret, som viser at den nye versjonen er kopiert.

ls -l

Filstørrelsen og tidsstempelet på Words.db er ikke endret. Det er fordi filen ikke er endret, og derfor ikke kopiert. Med mange filer kan -C-alternativet spare mye tid ved å kun kopiere de filene som er endret.

Utvikleren har igjen testet ana og funnet at det fungerer som det skal.

Nå er tiden inne for å bruke install for å kopiere filene til /usr/local/bin, for å gjøre verktøyet tilgjengelig for alle brukere. Mappen finnes allerede, så vi trenger ikke å opprette den. Vi kan bruke en modifisert versjon av den siste kommandoen.

Vi har endret målmappen til /usr/local/bin. Vi har fjernet -C fordi det ikke er noen kopier av filene der ennå, og dermed ingenting å sammenligne med. Vi har også fjernet -b og -S siden det ikke er noe å sikkerhetskopiere.

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

Vi lister opp filene for å se at de finnes i /usr/local/bin:

ls -l

Som en siste test, bytter vi til hjemmemappen og tester om vi kan kjøre det nye verktøyet derfra.

Merk at vi ikke trenger å bruke ./ foran ana, noe som betyr at den kjøres fra /usr/local/bin. Oppdrag utført.

Vi nevnte at install kan fjerne unødvendige symboltabeller og annet fra binærfiler for å redusere størrelsen. La oss gjøre det. Merk at kommandoen nedenfor ikke inkluderer Words.db. Det er fordi Words.db er en databasefil, ikke en binær kjørbar fil. For å kopiere og redusere størrelsen på den binære filen ana kan vi bruke denne kommandoen. Vi har lagt til -s (strip) og -b (backup) og -S (suffiks).

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 med sikkerhetskopien. ana er nå redusert til ca. 60% av den opprinnelige størrelsen.

ls -l /usr/local/bin

Oppsummering

Kommandoen install dekker et nisjebehov. For mange vil den ikke være et daglig verktøy, eller kanskje brukes fra måned til måned. Likevel er install nyttig å kjenne til. De gangene du trenger det, vil du sette pris på hvor mye tid og innsats du sparer.