Kopier liste over filer ved hjelp av bash -skript

Kopier liste over filer ved hjelp av bash -skript
Bash (Bourne Again Shell) er den typen skall som er for å utføre kommandoer og skript. Bash var en utviklet versjon av SH -skallet. Bash -skript er en fil der flere skallkommandoer er skrevet for å utføre en bestemt oppgave. I denne artikkelen vil vi se hvordan vi kan kopiere flere filer ved hjelp av et bash -skript. For denne artikkelen bruker jeg Ubuntu 20.04 for å demonstrere eksemplet.

Merk: - $ bruker vil skrive ut gjeldende påloggingsbrukernes brukernavn.

Hvis du er nysgjerrig på hvilken versjon av bash shell som er installert i systemet, kan vi sjekke den ved hjelp av følgende kommando.

$ Bash -Versjon

Bashversjonsutgang.

Opprette og utføre bashskript

La oss begynne med å lage en enkel fil ved hjelp av en hvilken som helst redaktør etter eget valg. For meg er VI -redaktøren mer komfortabel. For å gjøre filen kjørbar, må vi legge til Shebang (!#) og bash -tolk plassering i begynnelsen av manuset. Jeg har laget en tekst.TXT -filen og legg den til Bash_Demo Dir i hjemmet mitt som inneholder litt tekst for demoformål.

$ Touch Bash_Demo.sh
$ vi Bash_demo.sh

Legg til følgende linjer i tekstredigereren din for en eksempeldemo etter å ha opprettet en fil; Hvis du ikke har det, vil redaktøren opprette en ny fil på skriving og slutte.

#!/bin/bash
CP -tekst.txt /tmp /
ekko “Fil kopiert.”

Vi kan utføre skriptet ved hjelp av ./ før skriptfilen, som bestemmer gjeldende DIR -filen.

$ ./bash_demo.sh

Når vi utfører skriptet, blir følgende feil kastet i terminalen vår.

Opprinnelig utførelse av bash -fil.

Når vi oppretter en fil som standard, har ikke brukeren utførelsestillatelse for filen. For å gi utførelsestillatelse til brukeren, må følgende kommando utføres.

$ chmod +x bash_demo.sh

Output etter tillatelse gitt.

Kopier bare filer fra en spesifikk katalog

For å hente alle filene og DIR fra en bestemt ban. I eksemplet nedenfor utfører vi CP -kommandoen bare utført hvis iteratoren var en fil som er bestemt -F -flagget.

#!/bin/bash
dpath =/var/log/nginx/*
for fil i $ dpath
gjøre
hvis [[-f $ fil]]
deretter
cp $ fil/home/$ bruker/
ellers
ekko “Det er ingen filer på den gitte banen.”
fi
Ferdig

Kopier alle filer med spesifikke utvidelser

I dette eksemplet vil vi kopiere alle filene med .loggutvidelse. Vi må legge til *.logg til banen slik at itererer den eneste filen med .Loggforlengelse for bare loop.

#!/bin/bash
for fil i/var/log/nginx/*.Logg
gjøre
cp $ fil/home/$ bruker/
Ferdig

Kopier alle filer, inkludert katalog

I dette eksemplet vil vi kopiere alle filene, inkludert kataloger, rekursivt. For det trenger vi ganske enkelt å legge til -r CP -kommandoen der -r bestemmer rekursivt henter katalogen.

#!/bin/bash
for fil i/var/log/*
gjøre
cp -r $ fil/home/$ bruker/
Ferdig

Kopier filer fra den brukerspesifiserte banen

I dette eksemplet vil vi kopiere filer fra brukerspesifisert dir. For å gjøre det, vil vi bruke lesekommandoen for å be om banen fra brukeren, og sjekk om brukeren gir banen til DIR eller ikke, noe som gjøres av -D -flagget i tilstanden. Etter å ha bekreftet DIR, vil vi bruke en for loop for å iterere alle filene og dir innen den gitte banen, og filtrer deretter ut de eneste filene ved hjelp av IF -tilstanden. Hvis tilstanden samsvarer, blir følgende CP -kommando utført.

#!/bin/bash
ekko “Vennligst gi en vei til DIR.”
Les sti
if [[-d $ bane]]
deretter
for fil i $ bane/*
gjøre
hvis [[-f $ fil]]
deretter
cp $ fil/home/$ bruker/
ellers
ekko “Det er ingen filer på den gitte banen.”
fi
Ferdig
ellers
ekko "vei til DIR er påkrevd"
fi

I hjemmet mitt har jeg følgende filer og dir.

Utgang når du gir banen til en fil.

Utgang når du gir DIR -plasseringssti.

Etter å ha utført skriptfilen, kan vi sjekke utdataene i den forhåndsdefinerte DIR i skriptet. I mitt tilfelle har jeg kopiert filen i hjemmet mitt, og følgende er resultatet.

Konklusjon

I denne artikkelen lærer vi om hvordan du kopierer filer ved hjelp av bash scripting. Vi kan bruke mange andre operasjoner som en sløyfe, if-else, etc. Bash -skripting er mer effektivt når du jobber med flere kommandoer for å utføre spesifikke oppgaver. Jeg håper du liker denne artikkelen om kopiering av filer ved hjelp av et bash -skript.