BASH-programmering

Kopier liste over filer ved hjælp af Bash Script

Kopier liste over filer ved hjælp af Bash Script
Bash (Bourne Again Shell) er den slags shell, der er til at udføre kommandoer og scripts. Bash var en udviklet version af sh shell. Bash Script er en fil, hvor flere shell-kommandoer er scriptet til at udføre en bestemt opgave. I denne artikel vil vi se, hvordan vi kan kopiere flere filer ved hjælp af et bash-script. Til denne artikel bruger jeg Ubuntu 20.04 for at demonstrere eksemplet.

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 --version

Bash-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 / bash
cp-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.sh

Nå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.sh

Output 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 / bash
dpath = / 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 / bash
til 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 / bash
for 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 / bash
ekko “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.

Kamp om Wesnoth 1.13.6 Udvikling frigivet
Kamp om Wesnoth 1.13.6 udgivet i sidste måned, er den sjette udviklingsudgivelse i 1.13.x-serien, og den leverer en række forbedringer, især til bruge...
Sådan installeres League Of Legends på Ubuntu 14.04
Hvis du er fan af League of Legends, er dette en mulighed for dig at prøvekøre League of Legends. Bemærk, at LOL understøttes på PlayOnLinux, hvis du ...
Installer det nyeste OpenRA-strategispil på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spilmotor, der genskaber de tidlige Westwood-spil som det klassiske Command & Conquer: Red Alert. Distrib...