Poznámka: - $ USER vytlačí používateľské mená aktuálnych prihlásených používateľov.
Ak ste zvedaví, aká verzia bash shellu je v systéme nainštalovaná, môžeme ju skontrolovať pomocou nasledujúceho príkazu.
$ bash --verziaVýstup verzie Bash.
Vytváranie a vykonávanie skriptu Bash
Začnime vytvorením jednoduchého súboru pomocou ľubovoľného editora podľa vášho výberu. Pre mňa je editor vi pohodlnejší. Aby bol súbor spustiteľný, musíme pridať shebang (!#) a umiestnenie tlmočníka bash na začiatku skriptu. Vytvoril som text.Súbor txt a pridajte ho do adresára bash_demo v mojom domovskom adresári, ktorý obsahuje nejaký text na demonštračné účely.
$ touch bash_demo.š$ vi bash_demo.š
Pridajte nasledujúce riadky do svojho textového editora, aby ste vytvorili ukážku po vytvorení súboru; ak nemáte, editor vytvorí nový súbor pri zápise a ukončení.
#!/ bin / bashcp text.txt / tmp /
echo „Súbor bol skopírovaný.“
Skript môžeme vykonať pomocou ./ pred súborom skriptu, ktorý určuje aktuálny súbor dir.
$ ./ bash_demo.šPo vykonaní skriptu bude v našom termináli vyhodená nasledujúca chyba.
Počiatočné spustenie súboru bash.
Keď predvolene vytvoríme súbor, používateľ nemá povolenie na vykonávanie tohto súboru. Ak chcete používateľovi poskytnúť povolenie na vykonanie, je potrebné vykonať nasledujúci príkaz.
$ chmod + x bash_demo.šVýstup po udelení povolenia.
Kopírujte iba súbory z konkrétneho adresára
Na načítanie všetkých súborov a adresárov z konkrétnej cesty použijeme v skripte cyklus for a potom odfiltrujeme jediný súbor pomocou podmienky if. V nasledujúcom príklade vykonáme príkaz cp, iba ak bol iterátorom súbor, ktorý je určený príznakom -f.
#!/ bin / bashdpath = / var / log / nginx / *
pre SÚBOR v $ dpath
robiť
ak [[-f $ SÚBOR]]
potom
cp $ FILE / home / $ USER /
inak
echo „Na danej ceste nie sú žiadne súbory.“
fi
hotový
Skopírujte všetky súbory konkrétnych prípon
V tomto príklade skopírujeme všetky súbory pomocou .rozšírenie protokolu. Musíme pridať *.prihlásiť sa k ceste tak, aby iteroval jediný súbor s .rozšírenie protokolu iba pre slučku.
#!/ bin / bashpre SÚBOR v / var / log / nginx / *.log
robiť
cp $ FILE / home / $ USER /
hotový
Skopírujte všetky súbory vrátane adresára
V tomto príklade rekurzívne skopírujeme všetky súbory vrátane adresárov. Na to musíme jednoducho pridať príkaz -R cp, kde -R určuje rekurzívne načítanie adresára.
#!/ bin / bashpre SÚBOR v / var / log / *
robiť
cp -R $ SÚBOR / domov / $ USER /
hotový
Skopírujte súbory z cesty zadanej používateľom
V tomto príklade skopírujeme súbory z adresára zadaného používateľom. Za týmto účelom použijeme príkaz read na vyžiadanie cesty od používateľa, potom skontrolujeme, či používateľ zadá cestu dir alebo nie, čo sa deje pomocou príznaku -d v podmienke. Po overení dir použijeme slučku for na iteráciu všetkých súborov a dir vo vnútri danej cesty, potom opäť odfiltrujeme jediné súbory pomocou podmienky if. Ak sa podmienka zhoduje, vykoná sa nasledujúci príkaz cp.
#!/ bin / bashecho „Prosím, zadajte cestu k adresáru.“
čítaná cesta
ak [[-d $ cesta]]
potom
pre SÚBOR v $ ceste / *
robiť
ak [[-f $ SÚBOR]]
potom
cp $ FILE / home / $ USER /
inak
echo „Na danej ceste nie sú žiadne súbory.“
fi
hotový
inak
echo „Vyžaduje sa cesta k adresáru“
fi
Vo svojom domovskom adresári mám nasledujúce súbory a adresár.
Výstup pri zadávaní cesty k súboru.
Výstup pri zadávaní cesty k adresáru.
Po vykonaní súboru skriptu môžeme skontrolovať výstup v preddefinovanom adresári skriptu. V mojom prípade som si súbor skopíroval do domovského adresára a výsledok je nasledujúci.
Záver
V tomto článku sa dozvieme, ako kopírovať súbory pomocou skriptu bash. Môžeme použiť mnoho ďalších operácií, ako napríklad slučka, ak-inak, atď. Skriptovanie Bash je efektívnejšie pri práci s viacerými príkazmi na vykonávanie konkrétnych úloh. Dúfam, že sa vám páči tento článok o kopírovaní súborov pomocou bash skriptu.