Poznámka: - $ USER vytiskne uživatelská jména uživatelů aktuálních přihlášení.
Pokud vás zajímá, jaká verze prostředí bash je nainstalována v systému, můžeme ji zkontrolovat pomocí následujícího příkazu.
$ bash - verzeVýstup verze Bash.
Vytvoření a spuštění skriptu Bash
Začněme vytvořením jednoduchého souboru pomocí libovolného editoru podle vašeho výběru. Pro mě je editor vi pohodlnější. Aby byl soubor spustitelný, musíme přidat shebang (!#) a umístění interpretu bash na začátku skriptu. Vytvořil jsem text.Soubor txt a přidejte jej do adresáře bash_demo v mém domovském adresáři, který obsahuje nějaký text pro demo účely.
$ touch bash_demo.sh$ vi bash_demo.sh
Přidejte následující řádky do textového editoru pro ukázku ukázky po vytvoření souboru; pokud nemáte, editor vytvoří nový soubor při zápisu a ukončení.
#!/ bin / bashcp text.txt / tmp /
echo „Soubor zkopírován.“
Skript můžeme spustit pomocí ./ před soubor skriptu, který určuje aktuální soubor dir.
$ ./ bash_demo.shKdyž provedeme skript, bude v našem terminálu vyvolána následující chyba.
Počáteční spuštění souboru bash.
Když ve výchozím nastavení vytvoříme soubor, uživatel nemá oprávnění k provedení souboru. Chcete-li uživateli poskytnout oprávnění ke spuštění, je třeba provést následující příkaz.
$ chmod + x bash_demo.shVýstup po udělení povolení.
Zkopírujte pouze soubory z konkrétního adresáře
Pro načtení všech souborů a adresářů z určité cesty použijeme ve skriptu smyčku for a poté odfiltrujeme jediný soubor pomocí podmínky if. V níže uvedeném příkladu provedeme příkaz cp pouze v případě, že iterátorem byl soubor, který je určen příznakem -f.
#!/ bin / bashdpath = / var / log / nginx / *
pro SOUBOR v $ dpath
dělat
pokud [[-f $ SOUBOR]]
pak
cp $ FILE / home / $ USER /
jiný
echo „V dané cestě nejsou žádné soubory.“
fi
Hotovo
Zkopírujte všechny soubory konkrétních přípon
V tomto příkladu zkopírujeme všechny soubory pomocí .přípona protokolu. Musíme přidat *.přihlaste se k cestě, aby iteroval jediný soubor s .přípona protokolu pouze pro smyčku.
#!/ bin / bashpro SOUBOR v / var / log / nginx / *.log
dělat
cp $ FILE / home / $ USER /
Hotovo
Zkopírujte všechny soubory, včetně adresáře
V tomto příkladu rekurzivně zkopírujeme všechny soubory, včetně adresářů. K tomu jednoduše potřebujeme přidat příkaz -R cp, kde -R určuje rekurzivně načítání adresáře.
#!/ bin / bashpro SOUBOR v / var / log / *
dělat
cp -R $ FILE / home / $ USER /
Hotovo
Zkopírujte soubory z cesty zadané uživatelem
V tomto příkladu zkopírujeme soubory z uživatelem zadaného adresáře. K tomu použijeme příkaz read k vyžádání cesty od uživatele a poté zkontrolujeme, zda uživatel zadá cestu k adresáři nebo ne, což se provádí pomocí parametru -d v podmínce. Po ověření dir použijeme smyčku for k iteraci všech souborů a dir uvnitř dané cesty, pak znovu odfiltrujeme pouze soubory pomocí podmínky if. Pokud podmínka odpovídá, bude proveden následující příkaz cp.
#!/ bin / bashecho „Uveďte prosím cestu k adresáři.“
číst cestu
pokud [[-d $ cesta]]
pak
pro SOUBOR v $ cestě / *
dělat
pokud [[-f $ SOUBOR]]
pak
cp $ FILE / home / $ USER /
jiný
echo „V dané cestě nejsou žádné soubory.“
fi
Hotovo
jiný
echo „Je vyžadována cesta k adresáři“
fi
Ve svém domovském adresáři mám následující soubory a adresář.
Výstup při zadávání cesty k souboru.
Výstup při zadávání cesty umístění adresáře.
Po provedení souboru skriptu můžeme zkontrolovat výstup v předdefinovaném adresáři ve skriptu. V mém případě jsem zkopíroval soubor do svého domovského adresáře a následuje výsledek.
Závěr
V tomto článku se dozvídáme, jak kopírovat soubory pomocí skriptu bash. Můžeme použít mnoho dalších operací, jako je smyčka, if-else atd. Bash skriptování je efektivnější při práci s více příkazy k provádění konkrétních úkolů. Doufám, že se vám tento článek o kopírování souborů pomocí bash skriptu líbí.