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:

  1. Orų prognozės išvedimas į failą:
javascript
./o.sh > "$HOME/Obsidian/notes/Oras.md" 2>/dev/null &

Orų prognozė išvedama į failą foniniu režimu.

Failų išskirstymas iš “Atsiuntimai“ katalogo:

javascript
if ! ~/git/md.sh; then return 2 fi
echo -e "OS: $(lsb_release -ds)" echo -e "Kernel: $(uname -r)" echo -e "Uptime: $(uptime -p)"

Čia scenarijus iškviečia kitą scenarijų, kuris išskirsto failus iš “Atsiuntimai“ katalogo.

Obsidian katalogo sinchronizavimas su git:

perl
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:

bash
if [ -f "$gitbash_script" ]; then bash "$gitbash_script" fi

Paleidžiamas gitbash.sh scenarijus.

Sistemos paketų atnaujinimas:

sql
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:

css
./fastfetch_update.sh

Patikrina ir atnaujina fastfetch įrankį.

Sistemos informacijos išvedimas:

bash
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:

  1. 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.
  2. 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ą.
  3. Paralelinis vykdymas:
    • Kai kurie veiksmai galėtų būti vykdomi paraleliai, kad sutrumpėtų bendras scenarijaus vykdymo laikas.
  4. 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ą.

 

bash
#!/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

Populiarūs šio tinklaraščio įrašai

Configuring a NixOS firewall for everyday use

Setting up syncthing as a service on openSUSE and other Linux distributions

Monitoring SFTP server updates with Python