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 --versjonUtgang 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 / bashcp-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.shNå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.shProduksjon 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 / bashdpath = / 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 / bashfor 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 / bashfor 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 / bashekko “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.