Bemærk: - $ USER udskriver nuværende brugernes brugernavne.
Hvis du er nysgerrig efter, hvilken version af bash shell der er installeret i systemet, kan vi kontrollere det ved hjælp af følgende kommando.
$ bash --versionBash-version output.
Oprettelse og udførelse af Bash Script
Lad os starte med at oprette en simpel fil ved hjælp af enhver editor efter eget valg. For mig er vi-editoren mere behagelig. For at gøre filen eksekverbar skal vi tilføje shebang (!#) og bash-tolkeplacering i begyndelsen af scriptet. Jeg har oprettet en tekst.txt-fil og tilføj den til bash_demo dir i mit hjem dir, der indeholder noget tekst til demo-formål.
$ touch bash_demo.sh$ vi bash_demo.sh
Tilføj følgende linjer i din teksteditor til en eksempeldemo efter oprettelse af en fil; hvis du ikke har det, opretter redaktøren en ny fil ved skrivning og afslutning.
#!/ bin / bashcp-tekst.txt / tmp /
ekko “Fil kopieret.”
Vi kan udføre scriptet ved hjælp af ./ før scriptfilen, der bestemmer den aktuelle dir-fil.
$ ./ bash_demo.shNår vi udfører scriptet, kastes følgende fejl i vores terminal.
Indledende udførelse af bash-fil.
Når vi opretter en fil som standard, har brugeren ikke tilladelse til udførelse af filen. For at give brugeren tilladelse til udførelse skal følgende kommando udføres.
$ chmod + x bash_demo.shOutput efter tilladelse givet.
Kopier kun filer fra et bestemt bibliotek
For at hente alle filerne og dir fra en bestemt sti bruger vi til loop i scriptet og filtrerer derefter den eneste fil ud med if-betingelse. I eksemplet nedenfor udfører vi kun cp-kommandoen, der udføres, hvis iteratoren var en fil, der bestemmes -f flag.
#!/ bin / bashdpath = / var / log / nginx / *
for FILE i $ dpath
gør
hvis [[-f $ FILE]]
derefter
cp $ FILE / home / $ USER /
andet
ekko “Der er ingen filer i den givne sti.”
fi
Færdig
Kopier alle filer med specifikke udvidelser
I dette eksempel kopierer vi alle filerne med .log udvidelse. Vi skal tilføje *.log på stien, så gentag den eneste fil med .log udvidelse kun til loop.
#!/ bin / bashtil FILE in / var / log / nginx / *.log
gør
cp $ FILE / home / $ USER /
Færdig
Kopier alle filer, inklusive bibliotek
I dette eksempel kopierer vi alle filerne, inklusive mapper, rekursivt. Til det er vi simpelthen nødt til at tilføje -R cp-kommando, hvor -R bestemmer rekursivt hentning af biblioteket.
#!/ bin / bashfor FILE in / var / log / *
gør
cp -R $ FILE / home / $ USER /
Færdig
Kopier filer fra den brugerdefinerede sti
I dette eksempel kopierer vi filer fra brugerdefineret dir. For at gøre dette bruger vi læsekommandoen til at anmode om stien fra brugeren, og kontroller derefter, om brugeren giver stien til dir eller ej, hvilket udføres af -d flag i den tilstand. Efter verificering af dir vil vi bruge en for-løkke til at gentage alle filerne og dir inde i den givne sti og derefter filtrere de eneste filer ud ved hjælp af betingelsen if. Hvis betingelsen stemmer overens, udføres følgende cp-kommando.
#!/ bin / bashekko “Giv venligst en vej til dir.”
læse sti
hvis [[-d $ sti]]
derefter
for FIL i $ sti / *
gør
hvis [[-f $ FILE]]
derefter
cp $ FILE / home / $ USER /
andet
ekko “Der er ingen filer i den givne sti.”
fi
Færdig
andet
ekko "Sti til dir er påkrævet"
fi
I mit hjem dir. Har jeg følgende filer og dir.
Output, når du angiver stien til en fil.
Output ved levering af dir-sti.
Efter udførelse af scriptfilen kan vi kontrollere output i den foruddefinerede dir i scriptet. I mit tilfælde har jeg kopieret filen i mit hjem dir, og det følgende er resultatet.
Konklusion
I denne artikel lærer vi om, hvordan man kopierer filer ved hjælp af bash-scripting. Vi kan bruge mange andre operationer som en loop, if-else osv. Bash-scripting er mere effektiv, når du arbejder med flere kommandoer for at udføre specifikke opgaver. Jeg håber, du kan lide denne artikel om kopiering af filer ved hjælp af et bash-script.