Pastaba: - $ USER atspausdins dabartinių prisijungimo vartotojų vardus.
Jei smalsu, kokia „bash shell“ versija yra įdiegta sistemoje, galime ją patikrinti naudodami šią komandą.
$ bash - versija„Bash“ versijos išvestis.
„Bash“ scenarijaus kūrimas ir vykdymas
Pradėkime nuo paprasto failo sukūrimo naudodami bet kurį pasirinktą redaktorių. Man patogiau naudotis „vi“ redaktoriumi. Kad failas būtų vykdomas, turime pridėti „shebang“ (!#) ir „bash“ vertėjo vieta scenarijaus pradžioje. Aš sukūriau tekstą.txt failą ir pridėkite jį prie mano namų katalogo „bash_demo“ direktorijos, kuriame yra šiek tiek teksto, skirto demonstraciniams tikslams.
$ touch bash_demo.sh$ vi bash_demo.sh
Sukūrę failą, į teksto rengyklę įtraukite šias eilutes, jei norite demonstracinio pavyzdžio; jei to nepadarėte, redaktorius sukurs naują failą, kurį parašys ir uždarys.
#!/ bin / bashCP tekstas.txt / tmp /
aidas „Failas nukopijuotas.“
Mes galime įvykdyti scenarijų naudodami ./ prieš scenarijaus failą, kuris nustato dabartinį direktorijos failą.
$ ./ bash_demo.shKai vykdysime scenarijų, ši klaida bus išmesta į mūsų terminalą.
Pradinis „bash“ failo vykdymas.
Kai pagal numatytuosius nustatymus kuriame failą, vartotojas neturi failo vykdymo leidimo. Norint suteikti vartotojui vykdymo leidimą, reikia vykdyti šią komandą.
$ chmod + x bash_demo.shRezultatas suteiktas leidus.
Nukopijuokite tik failus iš konkretaus katalogo
Norėdami gauti visus failus ir aplankus iš konkretaus kelio, scenarijuje naudosime ciklą, tada filtruosime vienintelį failą naudodami if sąlygą. Toliau pateiktame pavyzdyje vykdome komandą cp tik tada, kai iteratorius buvo failas, kuris yra nustatytas -f vėliava.
#!/ bin / bashdpath = / var / log / nginx / *
už FILE $ dpath
padaryti
jei [[-f $ FILE]]
tada
cp $ FILE / home / $ USER /
Kitas
aidas „Duotame kelyje nėra failų.“
fi
padaryta
Nukopijuokite visus konkrečių plėtinių failus
Šiame pavyzdyje mes nukopijuosime visus failus su .žurnalo pratęsimas. Turime pridėti *.prisijungti prie kelio, kad pakartotumėte vienintelį failą naudodami .žurnalo pratęsimas tik kilpai.
#!/ bin / bashskirtas FILE aplanke / var / log / nginx / *.žurnalas
padaryti
cp $ FILE / home / $ USER /
padaryta
Nukopijuokite visus failus, įskaitant katalogą
Šiame pavyzdyje rekursyviai nukopijuosime visus failus, įskaitant katalogus. Tam mes tiesiog turime pridėti komandą -R cp, kur -R nustato rekursyvų katalogo gavimą.
#!/ bin / bashskirtas FILE aplanke / var / log / *
padaryti
cp -R $ FILE / home / $ USER /
padaryta
Nukopijuokite failus iš vartotojo nurodyto kelio
Šiame pavyzdyje nukopijuosime failus iš vartotojo nurodyto direktoriaus. Norėdami tai padaryti, naudosime komandą „read“, kad paprašytume kelio iš vartotojo, tada patikrinsime, ar vartotojas pateikia kelią į „dir“, ar ne, o tai padaro -d vėliava sąlygoje. Patikrinę „dir“, mes naudosime „for“ kilpą, norėdami pakartoti visus failus ir nukreipti nurodytame kelyje, tada vėl filtruosime vienintelius failus naudodami sąlygą „if“. Jei sąlyga sutampa, bus vykdoma ši komanda.
#!/ bin / bashaidas „Prašau pateikti kelią į rež.“
skaityti kelią
jei [[-d $ kelias]]
tada
skirtas FILE, $ path / *
padaryti
jei [[-f $ FILE]]
tada
cp $ FILE / home / $ USER /
Kitas
echo „Duotame kelyje nėra failų.“
fi
padaryta
Kitas
aidas „Reikalingas kelias į dir“
fi
Savo namų vadove turiu šiuos failus ir rež.
Išvestis pateikiant failo kelią.
Išvestis pateikiant tiesioginės vietos kelią.
Vykdydami scenarijaus failą, mes galime patikrinti išvestį iš anksto nustatytame scenarijaus dir. Mano atveju aš nukopijavau failą į savo namų katalogą, o rezultatas yra toks.
Išvada
Šiame straipsnyje mes sužinome, kaip nukopijuoti failus naudojant „bash“ scenarijus. Mes galime naudoti daugybę kitų operacijų, tokių kaip ciklas, jei dar kitaip. „Bash“ scenarijai yra efektyvesni dirbant su keliomis komandomis, norint atlikti konkrečias užduotis. Tikiuosi, kad jums patinka šis straipsnis apie failų kopijavimą naudojant „bash“ scenarijų.