Opomba: - $ USER bo natisnil trenutna uporabniška imena uporabnikov.
Če vas zanima, katera različica lupine bash je nameščena v sistemu, jo lahko preverimo z naslednjim ukazom.
$ bash --verzijaIzhodna različica Bash.
Ustvarjanje in izvajanje bash skripta
Začnimo z ustvarjanjem preproste datoteke z uporabo katerega koli urejevalnika po vaši izbiri. Zame je urejevalnik vi bolj udoben. Če želimo datoteko narediti izvršljivo, moramo dodati shebang (!#) in mesto tolmača bash na začetku skripta. Ustvaril sem besedilo.txt in jo dodajte v direktorij bash_demo v mojem domačem imeniku, ki vsebuje nekaj besedila za predstavitvene namene.
$ touch bash_demo.sh$ vi bash_demo.sh
Po ustvarjanju datoteke dodajte naslednje vrstice v urejevalnik besedil za vzorčno predstavitev; če niste, bo urejevalnik ustvaril novo datoteko o pisanju in izhodu.
#!/ bin / bashcp besedilo.txt / tmp /
echo “Datoteka kopirana."
Skript lahko izvedemo z uporabo ./ pred datoteko skripta, ki določa trenutno dir datoteko.
$ ./ bash_demo.shKo zaženemo skript, se v naš terminal prikaže naslednja napaka.
Začetna izvedba datoteke bash.
Ko datoteko privzeto izdelamo, uporabnik nima dovoljenja za izvajanje datoteke. Če želite uporabniku zagotoviti dovoljenje za izvajanje, je treba izvesti naslednji ukaz.
$ chmod + x bash_demo.shIzhod po podelitvi dovoljenja.
Kopirajte samo datoteke iz določenega imenika
Za pridobivanje vseh datotek in direktorija z določene poti bomo v skriptu uporabili zanko for, nato pa filtrirali edino datoteko z uporabo pogoja if. V spodnjem primeru izvedemo ukaz cp, izveden le, če je bil iterator datoteka, ki je določena -f zastava.
#!/ bin / bashdpath = / var / log / nginx / *
za DATOTEKO v $ dpath
naredi
če [[-f $ FILE]]
potem
cp $ FILE / home / $ USER /
drugače
echo »Na dani poti ni datotek."
fi
Končano
Kopirajte vse datoteke določenih končnic
V tem primeru bomo kopirali vse datoteke z .razširitev dnevnika. Dodati moramo *.prijavite se na pot, tako da ponovite edino datoteko z .končnica dnevnika samo za zanko.
#!/ bin / bashza FILE v / var / log / nginx / *.log
naredi
cp $ FILE / home / $ USER /
Končano
Kopirajte vse datoteke, vključno z imenikom
V tem primeru bomo rekurzivno kopirali vse datoteke, vključno z imeniki. Za to moramo preprosto dodati ukaz -R cp, kjer -R določa rekurzivno pridobivanje imenika.
#!/ bin / bashza FILE v / var / log / *
naredi
cp -R $ FILE / doma / $ USER /
Končano
Kopirajte datoteke z uporabniško določene poti
V tem primeru bomo kopirali datoteke iz uporabniško določenega direktorija. Za to bomo z ukazom read prebrali pot od uporabnika in nato preverili, ali uporabnik navede pot do dir ali ne, kar v pogoju naredi zastavica -d. Po preverjanju direktorija bomo z zanko for ponovili vse datoteke in dir znotraj dane poti, nato pa še enkrat filtrirali edine datoteke z uporabo pogoja if. Če se pogoj ujema, se izvede naslednji ukaz cp.
#!/ bin / bashecho “Prosimo, navedite pot do dir."
bralna pot
če [[-d $ pot]]
potem
za DATOTEKO v $ path / *
naredi
če [[-f $ FILE]]
potem
cp $ FILE / home / $ USER /
drugače
echo »Na dani poti ni datotek."
fi
Končano
drugače
odmev "Potrebna je pot do direktorija"
fi
V domačem imeniku imam naslednje datoteke in imenik.
Izhod pri podajanju poti do datoteke.
Izhod pri zagotavljanju poti lokacije dir.
Po izvedbi datoteke skripta lahko preverimo izhod v vnaprej določenem direktoriju v skriptu. V mojem primeru sem kopiral datoteko v svojem domačem imeniku in rezultat je naslednji.
Zaključek
V tem članku izvemo, kako kopirati datoteke z uporabo bash skriptov. Lahko uporabimo številne druge operacije, kot je zanka, če ne, itd. Bash skript je učinkovitejši pri delu z več ukazi za izvajanje določenih nalog. Upam, da vam je všeč ta članek o kopiranju datotek z uporabo bash skripta.