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.