BASH-programmering

Kopier liste over filer ved hjelp av Bash Script

Kopier liste over filer ved hjelp av Bash Script
Bash (Bourne Again Shell) er den typen skall som er til å utføre kommandoer og skript. Bash var en utviklet versjon av sh shell. Bash Script er en fil der flere skallkommandoer er skriptet 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: - $ USER vil skrive ut brukernavn for nåværende påloggingsbrukere.

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

$ bash --versjon

Utgang for Bash-versjon.

Opprette og utføre Bash Script

La oss starte med å lage en enkel fil ved hjelp av hvilken som helst redaktør du ønsker. For meg er vi-redaktøren mer komfortabel. For å gjøre filen kjørbar, må vi legge til shebang (!#) og bash tolkplassering i begynnelsen av skriptet. Jeg har laget en tekst.txt-fil og legg den til bash_demo dir i hjemmet mitt dir som inneholder litt tekst for demo formål.

$ touch bash_demo.sh
$ vi bash_demo.sh

Legg til følgende linjer i teksteditoren din for en eksempeldemonstrasjon etter at du har opprettet en fil; Hvis du ikke har det, vil redaktøren opprette en ny fil når du skriver og avslutter.

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

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

$ ./ bash_demo.sh

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

Første utførelse av bash-filen.

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

$ chmod + x bash_demo.sh

Produksjon etter tillatelse gitt.

Kopier bare filer fra en bestemt katalog

For å hente alle filene og dir fra en bestemt bane, vil vi bruke for loop i skriptet og deretter filtrere ut den eneste filen ved bruk av if-tilstand. I eksemplet nedenfor kjører vi bare cp-kommandoen hvis iteratoren var en fil som er bestemt -f flagg.

#!/ bin / bash
dpath = / var / log / nginx / *
for FILE i $ dpath
gjøre
hvis [[-f $ FILE]]
deretter
cp $ FILE / home / $ USER /
ellers
ekko “Det er ingen filer i 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 deg på banen slik at den eneste filen gjentas med .loggforlengelse bare for sløyfe.

#!/ bin / bash
for FILE in / var / log / nginx / *.Logg
gjøre
cp $ FILE / home / $ USER /
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-kommando der -R bestemmer rekursivt henting av katalogen.

#!/ bin / bash
for FILE in / var / log / *
gjøre
cp -R $ FILE / home / $ USER /
ferdig

Kopier filer fra den brukerdefinerte banen

I dette eksemplet vil vi kopiere filer fra bruker spesifisert dir. For å gjøre dette, vil vi bruke lese-kommandoen til å be om stien fra brukeren, og deretter sjekke 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 til å iterere alle filene og dir innenfor den gitte banen, og deretter filtrere ut de eneste filene ved hjelp av if-tilstanden. Hvis tilstanden samsvarer, vil følgende cp-kommando bli utført.

#!/ bin / bash
ekko “Gi en vei til dir.”
leseveien
hvis [[-d $ sti]]
deretter
for FILE i $ path / *
gjøre
hvis [[-f $ FILE]]
deretter
cp $ FILE / home / $ USER /
ellers
ekko “Det er ingen filer i den gitte banen.”
fi
ferdig
ellers
ekko “Path to dir is required”
fi

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

Output når du gir banen til en fil.

Output når du gir dir stedsti.

Etter å ha kjørt skriptfilen, kan vi sjekke utdataene i den forhåndsdefinerte diren 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 loop, if-else, osv. Bash-skripting er mer effektivt når du jobber med flere kommandoer for å utføre bestemte oppgaver. Jeg håper du liker denne artikkelen om kopiering av filer ved hjelp av et bash-skript.

SuperTuxKart for Linux
SuperTuxKart er en flott tittel designet for å gi deg Mario Kart-opplevelsen gratis på Linux-systemet ditt. Det er ganske utfordrende og morsomt å spi...
Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...