BASH-programmering

Lijst met bestanden kopiëren met Bash Script

Lijst met bestanden kopiëren met Bash Script
Bash (Bourne Again Shell) is het soort shell voor het uitvoeren van commando's en scripts. Bash was een ontwikkelde versie van de sh-shell. Bash Script is een bestand waarin meerdere shell-commando's zijn gescript om een ​​bepaalde taak uit te voeren. In dit artikel zullen we zien hoe we meerdere bestanden kunnen kopiëren met behulp van een bash-script. Voor dit artikel gebruik ik Ubuntu 20.04 om het voorbeeld te demonstreren.

Opmerking: - $USER drukt de gebruikersnamen van de huidige ingelogde gebruikers af.

Als je benieuwd bent welke versie van bash shell in het systeem is geïnstalleerd, kunnen we dit controleren met de volgende opdracht:.

$ bash --versie

Bash-versie-uitvoer.

Bash-script maken en uitvoeren

Laten we beginnen met het maken van een eenvoudig bestand met een editor naar keuze. Voor mij is de vi-editor comfortabeler. Om het bestand uitvoerbaar te maken, moeten we shebang (!#) en bash-interpreterlocatie aan het begin van het script. Ik heb een tekst gemaakt.txt-bestand en voeg het toe aan bash_demo dir in mijn home-dir dat wat tekst bevat voor demo-doeleinden.

$ raak bash_demo aan.sh
$ vi bash_demo.sh

Voeg de volgende regels toe aan uw teksteditor voor een voorbeelddemo na het maken van een bestand; als je dat niet hebt gedaan, zal de editor een nieuw bestand maken bij schrijven en afsluiten.

#!/bin/bash
cp tekst.txt /tmp/
echo “Bestand gekopieerd.”

We kunnen het script uitvoeren met ./ voor het scriptbestand, dat het huidige dir-bestand bepaalt.

$ ./bash_demo.sh

Wanneer we het script uitvoeren, wordt de volgende fout in onze terminal gegenereerd:.

Eerste uitvoering van bash-bestand.

Wanneer we standaard een bestand maken, heeft de gebruiker geen uitvoeringsmachtiging voor het bestand. Om de gebruiker uitvoeringsrechten te geven, moet de volgende opdracht worden uitgevoerd:.

$ chmod +x bash_demo.sh

Uitvoer na verleende toestemming.

Kopieer alleen bestanden uit een specifieke map

Voor het ophalen van alle bestanden en dir van een specifiek pad, zullen we for loop in het script gebruiken en vervolgens het enige bestand filteren met de if-voorwaarde. In het onderstaande voorbeeld voeren we het cp-commando alleen uit als de iterator een bestand was dat is bepaald -f flag.

#!/bin/bash
dpath = /var/log/nginx/*
voor BESTAND in $dpath
Doen
als [[ -f $BESTAND ]]
dan
cp $BESTAND /home/$USER/
anders
echo "Er zijn geen bestanden in het opgegeven pad.”
fi
gedaan

Kopieer alle bestanden van specifieke extensies

In dit voorbeeld zullen we alle bestanden kopiëren met de .log extensie. We moeten toevoegen *.log in op het pad zodat het enige bestand herhaald wordt met .log-extensie alleen voor lus.

#!/bin/bash
voor BESTAND in /var/log/nginx/*.log
Doen
cp $BESTAND /home/$USER/
gedaan

Kopieer alle bestanden, inclusief directory

In dit voorbeeld zullen we alle bestanden, inclusief mappen, recursief kopiëren. Daarvoor hoeven we alleen de opdracht -R cp toe te voegen, waarbij -R het recursief ophalen van de map bepaalt.

#!/bin/bash
voor BESTAND in /var/log/*
Doen
cp -R $BESTAND /home/$USER/
gedaan

Bestanden kopiëren van het door de gebruiker opgegeven pad

In dit voorbeeld zullen we bestanden kopiëren van door de gebruiker gespecificeerde map. Om dit te doen, zullen we de read-opdracht gebruiken om het pad van de gebruiker op te vragen en vervolgens controleren of de gebruiker het pad naar dir opgeeft of niet, wat wordt gedaan door de vlag -d in de voorwaarde. Na het verifiëren van dir, zullen we een for-lus gebruiken om alle bestanden en dir binnen het gegeven pad te herhalen, en vervolgens de enige bestanden eruit filteren met behulp van de if-voorwaarde. Als de voorwaarde overeenkomt, wordt het volgende cp-commando uitgevoerd:.

#!/bin/bash
echo "Geef a.u.b. een pad naar dir.”
lees pad
als [[ -d $pad ]]
dan
voor BESTAND in $path/*
Doen
als [[ -f $BESTAND ]]
dan
cp $BESTAND /home/$USER/
anders
echo "Er zijn geen bestanden in het opgegeven pad.”
fi
gedaan
anders
echo "Pad naar map is vereist"
fi

In mijn home dir heb ik de volgende bestanden en dir.

Uitvoer bij het verstrekken van het pad naar een bestand.

Uitvoer bij het verstrekken van dir locatiepad.

Na het uitvoeren van het scriptbestand kunnen we de uitvoer controleren in de vooraf gedefinieerde map in het script. In mijn geval heb ik het bestand in mijn thuismap gekopieerd en het volgende is het resultaat:.

Conclusie

In dit artikel leren we hoe je bestanden kopieert met bash-scripting. We kunnen veel andere bewerkingen gebruiken, zoals een lus, als-anders, enz. Bash-scripting is effectiever wanneer u met meerdere opdrachten werkt om specifieke taken uit te voeren. Ik hoop dat je dit artikel over het kopiëren van bestanden met een bash-script leuk vindt.

Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...