Sådan kopieres filer ved hjælp af “install”-kommandoen på Linux

install er en alsidig filkopieringskommando i Linux og macOS. Det er perfekt til den superbruger, der leder efter effektivitet. Læs denne artikel for at finde ud af, hvordan du arbejder smartere – ikke hårdere.

Vent – det er ikke til at installere software?

Installationskommandoen kan have det mest misvisende navn af nogen af ​​Linux-kommandoerne. Det installerer faktisk ingen software. Hvis du prøver at installere en softwarepakke fra kommandolinjen i Ubuntu eller en anden Debian-baseret distribution, skal du bruge kommandoen apt-get. På andre Linux-distributioner, brug din Linux-distributions pakkehåndteringsværktøj i stedet – for eksempel dnf på Fedora eller zypper på openSUSE.

Så hvad gør installering?

I en nøddeskal installation kombinerer elementer fra cp (kopi), chown (skifte ejer), chmod (skifte tilstand), mkdir (lave mappe), og strip (stribe symboler) kommandoer. Det lader dig bruge funktioner fra alle dem i én enkelt handling.

Installationskommandoen kan:

Kopier filer som cp-kommandoen.
Vælg, om eksisterende filer skal overskrives.
Opret målmappen, hvis den ikke findes, som mkdir.
Indstil brugertilladelsesflag for filerne, ligesom chmod-kommandoen.
Indstil ejeren af ​​filerne, ligesom chown-kommandoen.
Fjern ikke-essentiel bagage fra eksekverbare filer, ligesom kommandoen strip.

På trods af al den funktionalitet har installationskommandoen ikke også mange muligheder at kæmpe med.

Hvornår vil du bruge det

Installationskommandoen vil sandsynligvis ikke blive brugt hver dag. Det er nyttigt, men kun i visse situationer. Et scenarie, hvor installation kommer til sin ret, er softwareudvikling. Lad os sige, at du programmerer et nyt hjælpeprogram. Du skal lave test uden for udviklingsmiljøet. For at gøre det skal du kopiere de nye programfiler til en testmappe. Testmappen skal muligvis oprettes, og du skal indstille de korrekte tilladelser og ejerskab for filerne.

Fordi udvikling er en iterativ aktivitet, kan du ende med at udføre denne rækkefølge af handlinger mange, mange gange. Installationskommandoen udfører alt det tunge løft for dig. Endelig, når dit nye hjælpeprogram er klar til at blive implementeret, kan du bruge installationen til at kopiere det med de korrekte tilladelser til dets endelige arbejdssted.

Et eksempel

En programmør arbejder på netop sådan et nyt hjælpeprogram, kaldet ana. Den består af en eksekverbar binær fil og en database. Efter test skal den kopieres til /usr/local/bin for at gøre den tilgængelig for alle brugere af Linux-systemet. Du skal erstatte filnavnene og mappestierne i vores eksempel med de filer og stier, du bruger på din computer, når du bruger installation.

Indtil den er klar til frigivelse, vil den blive testet i en mappe kaldet ~/test/ana. Medlemmer af nørdegruppen vil have læse- og udførelsestilladelser. Andre brugere vil også have læse- og udførelsestilladelser. Installationskommandoen bruger den samme numeriske repræsentation for tilladelser som chmod gør. Vores programmør har besluttet, at tilladelserne skal indstilles til:

Ejer: Læs, skriv og udfør.
Gruppe: Læs og udfør.
Andre: Udfør kun.

Sådan bruger du installationskommandoen

Vores fiktive programmørs arbejdsmappe er ~/work. Han har skrevet programmet, kompileret det og produceret en binær kaldet ana. Han har allerede oprettet databasefilen, som ana arbejder med, Words.db. Så begge filer er klar til test. Lad os tage et kig på dem:

ls -l ana Words.db

Det ana-værktøj, han lige har skrevet, opretter anagrammer ud fra en sætning, der er angivet på kommandolinjen. Verifikationstest er ret ligetil.

Vores programmør har påberåbt sig ana med sætningen “kiks”, og alt virker godt. Han ønsker nu at kopiere disse to filer til mappen ~/test/ana for at se, om det nye hjælpeprogram fungerer korrekt væk fra udviklingsmiljøet. Han udsteder følgende kommando:

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

Valgmulighederne brugt på kommandolinjen var:

D: Opret mapper, inklusive overordnede mapper, hvis det kræves.
v: Udførligt, skriv hver mappe, som den er lavet, og hver filkopiering, efterhånden som den udføres.
t: Målkatalog.

Vi kan se, at installationen opretter ~/test-mappen og derefter opretter ~/test/ana-mappen. Filerne vises én efter én, efterhånden som de kopieres til målbiblioteket.

Liste over filerne i ~/test/ana bekræfter, at de er blevet kopieret korrekt.

ls -l

Det næste trin er at teste ana-værktøjet ved at starte det i mappen ~/test/ana.

Værket fungerer som forventet, hvilket er fantastisk. Tilladelserne er dog ikke korrekte. Kravet er at indstille medlemmer af gruppens nørd til at have læse- og eksekveringstilladelser, og at andre brugere kun skal have eksekvering.

Vi kan løse begge disse problemer ganske enkelt med følgende kommando. Bemærk brugen af ​​sudo til at køre kommandoen med root-tilladelser. -o og -g og mulighederne kræver dette. Vi bliver bedt om vores adgangskode, når vi udsteder kommandoen.

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

Valgmuligheden -b (backup) opretter sikkerhedskopier af filerne, før de overskrives.
Indstillingen -S (suffiks) definerer suffikset for backupfilerne. Hvis du ikke angiver et suffiks, bruges en ~ (tilde). Vi beder installationen om at bruge suffikset .bak.
Vi indstiller ejeren af ​​filen til at være dave ved hjælp af -o (ejer) mulighed.
Indstillingen -g (gruppe) kræver navnet på en gruppe. Dette bliver ejergruppen af ​​filerne. Gruppen vi skal bruge hedder nørd.
Indstillingen -m (tilstand) indstiller filtilstandene for filerne ved at bruge den numeriske standard chmod-syntaks.

Vi behøver ikke længere bruge muligheden -D (opret mapper), fordi vi ved, at testbiblioteket allerede eksisterer. Vi har også udeladt muligheden -v (verbose). Liste over filerne i vores ~/test/ana bibliotek viser os fildetaljerne:

ls -l

Dette bekræfter, at alle vores krav er opfyldt.

Filerne er blevet kopieret over til testbiblioteket.
Tilladelserne er indstillet korrekt.
dave er ejeren af ​​filerne.
Nørdegruppen er ejergruppen af ​​de to filer.
Der er lavet sikkerhedskopier af hver fil, kaldet ana.bak og Words.db.bak.

Alt dette blev opnået ved brug af én kommando. Pænt.

Vores programmør foretager nogle sidste ændringer i hjælpeprogrammet og re-kompilerer. Filerne, der er ændret, skal kopieres over til mappen ~/test/ana fra mappen ~/work. Vi kan gøre dette ved at bruge -C (sammenlign). Hvis kildefilen og målfilen er den samme, kopieres kildefilen ikke.

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

Liste over filerne i målbiblioteket viser os, at filstørrelsen på ana-filen er ændret. Den er større end ana.bakfilen. Tidsstemplet på ana har også ændret sig. Disse ændringer skyldes, at den nye version af filen er blevet kopieret hertil.

ls -l

Filstørrelsen og tidsstemplet for filen Words.db er ikke ændret. Der blev ikke foretaget ændringer i Words.db-filen, så den blev ikke kopieret over. På et projekt med mange filer kan -C (sammenlign) mulighed spare en masse tid og harddisk churn, ved kun at kopiere de filer, der er blevet ændret.

Programmøren har igen testet, at ana-værktøjet fortsætter med at fungere.

Det er tid til at bruge installationen til at kopiere filerne til mappen /usr/local/bin. Dette vil gøre det nye hjælpeprogram tilgængeligt for alle brugere af denne Linux-computer. Vi ved, at /usr/local/bin eksisterer, så vi behøver ikke oprette den mappe. Vi kan bruge en ændret version af vores sidste kommando.

Vi har ændret målbiblioteket til at være /usr/local/bin. Vi har fjernet muligheden -C (sammenlign), fordi der ikke er nogen kopier af disse filer i målmappen endnu, så der er intet at sammenligne med. Ligeledes er der intet at sikkerhedskopiere, så vi kan fjerne -b (backup) og -S (suffiks).

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

Vi kan liste, at filerne er ankommet i /usr/local/bin:

ls -l

Og som en sidste test, lad os skifte bibliotek til vores hjemmebibliotek og se, om vi kan kalde vores nye hjælpeprogram derfra.

Bemærk, at vi ikke behøvede at indlede kommandoen ana med ./, hvilket betyder, at den kører fra /usr/local/bin. Mission fuldført.

Vi nævnte, at installation kan fjerne overflødige symboltabeller og anden bagage fra den binære fil for at reducere den i størrelse. Lad os gøre det nu. Bemærk, at kommandoen nedenfor ikke inkluderer Words.db. Dette skyldes, at Words.db er en databasefil, ikke en binær eksekverbar. For at kopiere og formindske den binære fil ana kan vi bruge følgende kommando. Vi har tilføjet -s (shrink) mulighed med små bogstaver “s.” Vi har tilføjet tilbage i indstillingen -b (backup) og -S (suffiks) muligheden med et stort “S.”

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

Ved at angive filerne i /usr/local/bin kan vi sammenligne størrelsen på ana-filen med dens backupversion. Ana-filen er blevet reduceret til næsten 60 % af dens tidligere størrelse.

ls -l /usr/local/bin

Sammenfattende

Installationskommandoen henvender sig til en smuk nichebrug. For mange mennesker vil det ikke blive brugt dag ud og dag ind, eller muligvis fra måned til måned. På trods af det er installeringskommandoen et godt værktøj at være bekendt med og have i dit arsenal af tricks. Til de lejligheder, hvor du har brug for det, belønner den din læringskurve med boost i effektivitet, enkelhed og simpelthen færre tastetryk.