Kai pradėjau mokytis rašyti bash skriptus, greitai supratau, kad reikia sistemingo metodo. Kaskart kurdamas naują skriptą, turėdavau jį pavadinti, suteikti vykdymo teises, sukurti alias ir atidaryti redaktoriuje. Tai tapo rutina, ir kaip bet kuri rutina, ji prašėsi automatizavimo. Taip gimė mano pirmasis ir, ko gero, svarbiausias skriptas – skriptas, kuris kuria kitus skriptus.
Versija 1: Klasikinis terminalas
Pradėjau nuo klasikinio terminalo varianto. Štai skriptas, pavadintas create_script.sh
:
#!/bin/bash# Klausiame vartotojo failo pavadinimoread -p "Įveskite failo pavadinimą (be .sh plėtinio): " filename# Sukuriame failo keliąscript_path="$HOME/git/${filename}.sh"# Sukuriame failątouch "$script_path"# Suteikiame vykdymo teiseschmod +x "$script_path"# Sukuriame aliasecho "alias $filename='$script_path'" >> "$HOME/.bash_aliases"# Perskaitome .bash_aliases failą iš naujosource "$HOME/.bash_aliases"source "$HOME/.bashrc"# Atidarome failą su nanonano "$script_path"source "$HOME/.bash_aliases"
Kaip tai veikia?
$HOME/git/
kataloge (visi mano skriptai ten).chmod +x
..bash_aliases
, kad galėčiau iškviesti skriptą iš bet kur.source
.nano
redaktoriumi.Kaip naudotis?
Suteikite create_script.sh
vykdymo teises:
Įsitikinkite, kad $HOME/git/
katalogas egzistuoja.
chmod +x ~/git/create_script.sh
Paleiskite:
~/git/create_script.sh
Įveskite failo pavadinimą ir pradėkite rašyti kodą nano
redaktoriuje.
Arba dar geriau, pridėkite jį prie sparčiųjų klavišų su komanda konsole --new-tab --workdir ~ -e bash -c "~/git/create_script.sh; exec bash"
(aš naudoju Ctrl+Shift+U
)
Patobulinimai
~/git/
.--type=python
įterptų Python šabloną).Versija 2: Grafinis vartotojo interfeisas su KDialog
KDE Plasma aplinkoje turime puikių GUI įrankių. Perdariau skriptą naudodamas kdialog
:
#!/bin/bash# Funkcija tikrinti, ar pavadinimas tinkamasvalidate_filename() { if [ -z "$1" ]; then kdialog --title "Klaida" --error "Pavadinimas negali būti tuščias." return 1 elif [ -e "$HOME/git/$1.sh" ]; then kdialog --title "Klaida" --error "Skriptas $1.sh jau egzistuoja." return 1 elif [[ "$1" =~ [^a-zA-Z0-9_] ]]; then kdialog --title "Klaida" --error "Pavadinimas gali turėti tik raides, skaičius ir pabraukimo brūkšnius." return 1 fi return 0}# Klausiame vartotojo failo pavadinimowhile true; do filename=$(kdialog --title "Naujas skriptas" --inputbox "Įveskite failo pavadinimą (be .sh plėtinio):") # Jei vartotojas atšaukė, išeiname if [ $? -ne 0 ]; then exit 1 fi # Tikriname pavadinimą if validate_filename "$filename"; then break fidone# Pasirenkame katalogądirectory=$(kdialog --title "Katalogo pasirinkimas" --menu "Pasirinkite katalogą:" \ 1 "$HOME/git/" \ 2 "$HOME/bin/" \ 3 "Kitas...")case $directory in 1) script_dir="$HOME/git/" ;; 2) script_dir="$HOME/bin/" mkdir -p "$script_dir" ;; 3) script_dir=$(kdialog --title "Kitas katalogas" --getexistingdirectory "$HOME") if [ $? -ne 0 ]; then exit 1 fi ;;esac# Sukuriame failo keliąscript_path="${script_dir}/${filename}.sh"# Sukuriame failą ir suteikiame teisestouch "$script_path"chmod +x "$script_path"# Pasirenkame šablonątemplate=$(kdialog --title "Šablono pasirinkimas" --radiolist "Pasirinkite šabloną:" \ 1 "Tuščias" on \ 2 "Bash" off \ 3 "Python" off \ 4 "Node.js" off)case $template in 2) echo '#!/bin/bash# Pavadinimas: '"$filename"'# Autorius: '"$USER"'# Data: '"$(date +%Y-%m-%d)"'# Aprašymas: # Kintamieji# Funkcijos# Pagrindinė programa' > "$script_path" ;; 3) echo '#!/usr/bin/env python3"""Pavadinimas: '"$filename"'Autorius: '"$USER"'Data: '"$(date +%Y-%m-%d)"'Aprašymas: """# Importai# Funkcijos# Pagrindinė programaif __name__ == "__main__": pass' > "$script_path" ;; 4) echo '#!/usr/bin/env node/** * Pavadinimas: '"$filename"' * Autorius: '"$USER"' * Data: '"$(date +%Y-%m-%d)"' * Aprašymas: */// Importai// Funkcijos// Pagrindinė programa' > "$script_path" ;;esac# Klausiame, ar pridėti į PATHif kdialog --title "Pridėti į PATH" --yesno "Ar pridėti '$script_dir' į PATH?"; then if ! grep -q "$script_dir" "$HOME/.bashrc"; then echo 'export PATH="'"$script_dir"':$PATH"' >> "$HOME/.bashrc" source "$HOME/.bashrc" kdialog --passivepopup "Katalogas pridėtas į PATH" 3 else kdialog --passivepopup "Katalogas jau yra PATH" 3 fifi# Klausiame, ar sukurti aliasif kdialog --title "Sukurti alias" --yesno "Ar sukurti alias '$filename'?"; then echo "alias $filename='$script_path'" >> "$HOME/.bash_aliases" source "$HOME/.bash_aliases" kdialog --passivepopup "Alias '$filename' sukurtas" 3fi# Rodome sėkmės pranešimąkdialog --title "Sėkmė" --msgbox "Sukurtas skriptas: $script_path"# Atidarome failą su katekate "$script_path"
Kaip tai veikia?
kdialog --inputbox
, kad paprašytų failo pavadinimo grafinėje sąsajoje..bash_aliases
.kdialog --msgbox
.kate
, KDE teksto redaktoriumi.Kaip naudotis?
kdialog
:sudo apt-get install kdialog
Paleiskite skriptą:
~/git/create_script.sh
Arba dar geriau, pridėkite jį prie sparčiųjų klavišų (aš naudoju Ctrl+Shift+I
). Įveskite pavadinimą grafinėje sąsajoje ir pradėkite koduoti kate
redaktoriuje.
Patobulinimai
validate_filename
, kuri tikrina:~/git/
, ~/bin/
) arba bet kurio kito.~/bin/
, katalogas sukuriamas, jei jo nėra..bashrc
..bash_aliases
.passivepopup
pranešimai, kad parodytų, jog veiksmas atliktas.--menu
dialogas katalogui pasirinkti.--radiolist
šablonui pasirinkti.--yesno
ir --passivepopup
paprastiems patvirtinimams.Šie patobulinimai suteikia daugiau funkcijų ir saugumo:
Papildomi patobulinimai galėtų būti:
shellcheck
Bash skriptams).Šis patobulintas skriptas ne tik apsaugo nuo klaidų, bet ir suteikia daugiau galimybių, padėdamas jums greitai ir efektyviai kurti naujus skriptus pagal savo poreikius.
Kodėl tai svarbu?
chmod
, echo
, source
.GUI vs Terminalas
kdialog
.Asmeniškai, aš pamėgau GUI versiją. KDE Plasma aplinkoje ji atrodo natūraliai, o pranešimai ir dialogo langai suteikia aiškumo. Be to, sparčiųjų klavišų integracija leidžia man sukurti skriptą vos keliais mygtukų paspaudimais.
Išplėtimas ir pritaikymas
.bak
failus.Pabaigai
Pradėjęs nuo paprasto skripto, sukūriau įrankį, kuris dabar yra mano darbo eigos šerdis. Jis ne tik automatizuoja rutininius veiksmus, bet ir užtikrina, kad mano skriptų biblioteka būtų tvarkinga ir prieinama. Nesvarbu, ar naudojate terminalą, ar mėgstate GUI, toks skriptas gali žymiai pagerinti jūsų produktyvumą.
Svarbiausia pamoka? Pirmasis skriptas, kurį turėtumėte parašyti, yra tas, kuris padės jums kurti visus kitus. Tai tarsi statant namą – pirmiausia pasigaminate įrankius. Šis metodas ne tik pagreitina darbą, bet ir padeda išlaikyti tvarką, o tai ypač svarbu augant jūsų skriptų kolekcijai.
Tad nesvarbu, ar esate pradedantysis, ar patyręs, pagalvokite apie savo darbo eigą. Raskite pasikartojančias užduotis ir automatizuokite jas. Ilgainiui šie maži patobulinimai gali turėti didžiulį poveikį. Ir viskas prasideda nuo to pirmojo skripto – to, kuris padeda kurti visus kitus.
https://funkcijos.wordpress.com/2024/06/05/pradekime-nuo-pradziu-skriptas-kuris-kuria-skriptus/
@funkcijos.wordpress.com Makefile į pagalbą
Tai kad man reikėjo paprasto ir greito, kas visai atitinka mano poreikius. Tas makefile kažkas sudėtingo