Viskas, ko reikia jūsų sistemai viename scenarijuje. bashrc funkcija
Šiandien mano scenarijų pristato ir komentuoja GPT-4o
Automatizacija yra vienas iš kertinių IT specialistų įgūdžių,
leidžiantis padaryti daugiau su mažiau pastangų. Šiame straipsnyje
aptarsime vieną galingą bash
scenarijų, kuris sujungia
kelias svarbias užduotis į vieną, taip palengvinant kasdienį darbą.
Pažiūrėkime, ką ši funkcija daro, kodėl ji yra naudinga ir ką dar būtų
galima patobulinti.
Funkcijos apžvalga
Ši bash
funkcija, pavadinta viskas()
, yra skirta automatizuoti kelias dažnai atliekamas užduotis vienu metu. Štai ką ji daro:
- Orų prognozės išvedimas į failą:
./o.sh > "$HOME/Obsidian/notes/Oras.md" 2>/dev/null &
Orų prognozė išvedama į failą foniniu režimu.
Failų išskirstymas iš “Atsiuntimai“ katalogo:
if ! ~/git/md.sh; then
return 2
fi
Čia scenarijus iškviečia kitą scenarijų, kuris išskirsto failus iš “Atsiuntimai“ katalogo.
Obsidian katalogo sinchronizavimas su git
:
cd "$HOME/Obsidian"
git add .
git commit -m "Obsidian sync $(date +%Y-%m-%d_%H:%M:%S)"
git push origin main
cd "$HOME"
Ši dalis sinchronizuoja Obsidian katalogo pakeitimus su nuotoline saugykla.
gitbash.sh
scenarijaus paleidimas:
if [ -f "$gitbash_script" ]; then
bash "$gitbash_script"
fi
Paleidžiamas gitbash.sh
scenarijus.
Sistemos paketų atnaujinimas:
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo flatpak update -y
sudo flatpak upgrade -y
Atlieka apt
ir flatpak
paketų atnaujinimus.
fastfetch
atnaujinimas:
./fastfetch_update.sh
Patikrina ir atnaujina fastfetch
įrankį.
Sistemos informacijos išvedimas:
echo -e "OS: $(lsb_release -ds)"
echo -e "Kernel: $(uname -r)"
echo -e "Uptime: $(uptime -p)"
Išveda pagrindinę sistemos informaciją.
Ką dar būtų galima pridėti ar patobulinti?
Nors funkcija viskas()
yra labai naudinga, visada galima ją patobulinti:
- Klaidų valdymas:
- Šiuo metu klaidų valdymas yra ribotas. Būtų naudinga pridėti detalesnį klaidų pranešimą ir žurnalų kaupimą, kad būtų lengviau identifikuoti ir ištaisyti problemas.
- Konfigūracijos failas:
- Vietoj kietai užkoduotų kelių (pvz.,
$HOME/Obsidian
), būtų naudinga turėti konfigūracijos failą, iš kurio būtų skaitomi keliai ir kiti nustatymai. Tai padarytų scenarijų labiau pritaikomą.
- Vietoj kietai užkoduotų kelių (pvz.,
- Paralelinis vykdymas:
- Kai kurie veiksmai galėtų būti vykdomi paraleliai, kad sutrumpėtų bendras scenarijaus vykdymo laikas.
- Detalus progreso sekimas:
- Pridėti daugiau išvesties, nurodančios, kiek procentų užduoties atlikta arba kokioje stadijoje šiuo metu yra procesas.
Kam tokia funkcija gali būti naudinga?
Ši funkcija yra ypač naudinga sistemų administratoriams ir programuotojams, kurie nori automatizuoti kasdienes užduotis ir sutaupyti laiko. Ji padeda užtikrinti, kad visos svarbios sistemos dalys būtų nuolat atnaujinamos ir sinchronizuojamos. Be to, tokia funkcija gali būti naudinga bet kam, kas nori palaikyti savo darbo aplinką tvarkingą ir efektyvią.
Išvada
Automatizuoti scenarijai, tokie kaip viskas()
, yra
neatsiejama profesionalių IT specialistų darbo dalis. Jie ne tik taupo
laiką, bet ir padidina darbo efektyvumą bei sumažina klaidų tikimybę.
Tobulinant ir pritaikant šiuos scenarijus pagal savo poreikius, galima
dar labiau padidinti jų naudingumą ir pritaikomumą.
#!/usr/bin/env bash
# Spalvų nustatymai
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
function viskas() {
# 1. Išvesti orų prognozę į failą (foniniu procesu)
echo -e "${CYAN}Išvedama orų prognozė į failą $HOME/Obsidian/notes/Oras.md${NC}"
./o.sh > "$HOME/Obsidian/notes/Oras.md" 2>/dev/null &
orai_pid=$!
# 2. Išskirstyti failus iš Atsiuntimai katalogo
echo -e "${CYAN}Išskirstomi failai iš Atsiuntimai katalogo${NC}"
if ! ~/git/md.sh; then
echo -e "${RED}Nepavyko išskirstyti failų iš Atsiuntimai katalogo${NC}"
return 2
fi
# 3. Sinchronizuoti Obsidian katalogą su git
echo -e "${CYAN}Sinchronizuojamas Obsidian katalogas su git${NC}"
cd "$HOME/Obsidian" || return 3
git status
git add .
if git commit -m "Obsidian sync $(date +%Y-%m-%d_%H:%M:%S)"; then
echo -e "${GREEN}Git commit sukurtas sėkmingai${NC}"
else
echo -e "${YELLOW}Nėra pakeitimų git'e${NC}"
fi
if git push origin main; then
echo -e "${GREEN}Git commit išsiųstas į nuotolinį saugyklą${NC}"
else
echo -e "${RED}Nepavyko išsiųsti git commit į nuotolinį saugyklą${NC}"
fi
cd "$HOME" || return 4
# 4. Paleisti gitbash.sh
gitbash_script="$HOME/git/gitbash.sh"
if [ -f "$gitbash_script" ]; then
echo -e "${CYAN}Paleidžiamas $gitbash_script${NC}"
if bash "$gitbash_script"; then
echo -e "${GREEN}$gitbash_script paleistas sėkmingai${NC}"
else
echo -e "${RED}Nepavyko paleisti $gitbash_script${NC}"
return 5
fi
else
echo -e "${YELLOW}Scenarijaus failas $gitbash_script nerastas${NC}"
fi
# 5. Atnaujinti sistemos paketus
echo -e "${CYAN}Atnaujinami sistemos paketai${NC}"
if sudo apt update; then
echo -e "${GREEN}Apt paketų sąrašas atnaujintas sėkmingai${NC}"
else
echo -e "${RED}Nepavyko atnaujinti apt paketų sąrašo${NC}"
return 6
fi
echo -e "${CYAN}Įdiegiami naujausi paketai${NC}"
if sudo apt full-upgrade -y; then
echo -e "${GREEN}Apt paketai atnaujinti sėkmingai${NC}"
else
echo -e "${RED}Nepavyko atnaujinti apt paketų${NC}"
return 7
fi
echo -e "${CYAN}Šalinami nereikalingi paketai${NC}"
if sudo apt autoremove -y; then
echo -e "${GREEN}Nereikalingi apt paketai pašalinti sėkmingai${NC}"
else
echo -e "${RED}Nepavyko pašalinti nereikalingų apt paketų${NC}"
return 8
fi
echo -e "${CYAN}Atnaujinami flatpak paketai${NC}"
if sudo flatpak update -y; then
echo -e "${GREEN}Flatpak paketų sąrašas atnaujintas sėkmingai${NC}"
else
echo -e "${RED}Nepavyko atnaujinti flatpak paketų sąrašo${NC}"
return 9
fi
if sudo flatpak upgrade -y; then
echo -e "${GREEN}Flatpak paketai atnaujinti sėkmingai${NC}"
else
echo -e "${RED}Nepavyko atnaujinti flatpak paketų${NC}"
return 10
fi
# 6. Patikrinti ir atnaujinti fastfetch, jei reikia
echo -e "${CYAN}Tikrinama ir atnaujinama fastfetch${NC}"
if ./fastfetch_update.sh; then
echo -e "${GREEN}Fastfetch atnaujintas sėkmingai${NC}"
else
echo -e "${RED}Nepavyko atnaujinti fastfetch${NC}"
return 11
fi
# Palaukti, kol pirmasis veiksmas bus baigtas
echo -e "${YELLOW}Laukiama, kol orų programėlė atsinaujins...${NC}"
wait $orai_pid || echo -e "${RED}Nepavyko išvesti orų prognozės į failą $HOME/Obsidian/notes/Oras.md${NC}"
echo -e "${GREEN}Orų prognozė išsiųsta į Obsidian!${NC}\n"
# Sistemos informacija
echo -e "\n${MAGENTA}-------------------${NC}"
echo -e "${CYAN}Sistemos informacija:${NC}"
echo -e "${YELLOW}OS: $(lsb_release -ds)${NC}"
echo -e "${YELLOW}Instaliavimo data: $(stat -c %w / | cut -b 1-16)${NC}"
echo -e "${YELLOW}Kernel: $(uname -r)${NC}"
echo -e "${YELLOW}Uptime: $(uptime -p)${NC}"
echo -e "${YELLOW}Packages: $(dpkg --get-selections | grep -v deinstall | wc -l) (dpkg), $(flatpak list | wc -l) (flatpak)${NC}"
echo -e "${YELLOW}DE: $(echo $XDG_CURRENT_DESKTOP)${NC}"
echo -e "${YELLOW}RAM: $(free -h | awk '/^Mem:/ {print $3 "/" $2}')${NC}"
echo -e "${YELLOW}Disk (/): $(df -h / | awk '/\// {print $2, $3, $4, $5}')${NC}"
echo -e "${YELLOW}Disk MSD: $(df -h /media/vaidotak/1f3e2462-ef6f-47a1-a3f8-9300d4bec261 | awk '/\/media\/vaidotak\/1f3e2462-ef6f-47a1-a3f8-9300d4bec261/ {print $2, $3, $4, $5}')${NC}"
echo -e "${YELLOW}Baterija: $(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | awk '/percentage/ {print $2}')${NC}"
}
Komentarai
Rašyti komentarą