Šaunus kamandų paleidėjas ir failų chmod įrankis
Šį
bash scenarijų sukūriau tam, kad leistų vartotojui lengvai
pasirinkti ir paleisti iš anksto nustatytas komandas iš tekstinio
failo arba vykdyti papildomus veiksmus, pvz., pakeisti failų
leidimus naudojant chmod
.
Veikimo principas:
Pradžioje, scenarijus nuskaito komandas iš nurodyto tekstinio failo, kuris yra pasirinktas naudotojo.
Vartotojui pateikiamas sąrašas galimų komandų iš tekstinio failo (pridėjau dar ir masyvą papildomai komandoms papildyti tiesiog skripte) ir jis gali pasirinkti, kurią komandą nori paleisti.
Jei vartotojas pasirenka
chmod +x
, scenarijus rodo visus .sh failus esančius tame pačiame kataloge ir leidžia vartotojui pasirinkti, kuriam iš jų nori pritaikytichmod +x
.Pasirinkus komandą, vykdoma ji, o jei pasirinkta
chmod +x
, pritaikomaschmod
pasirinktam failui.
Kilmės šaltiniai:
Scenarijus nuskaito pagrindines komandas iš tekstinio failo, kuris yra pasirinktas naudotojo.
Papildomas funkcionalumas, susijęs su
chmod
, naudojafind
komandą, kad surastų .sh failus esančius tame pačiame kataloge.
#!/bin/bash
# Tekstinio failo su komandomis pavadinimas
commands_file="$HOME/commands.txt"
# Funkcija patikrinti, ar įvestis yra skaitinė
is_numeric() {
if [[ "$1" =~ ^[0-9]+$ ]]; then
return 0
else
return 1
fi
}
# Komandų sąrašo nuskaitymas
commands=()
while IFS= read -r line; do
commands+=("$line")
done < "$commands_file"
commands+=("ls -l" "clear")
# Papildomas pranešimas apie "chmod +x" komandą
echo "Papildomas funkcionalumas: jei pasirinksite 'chmod +x', bus rodomi visi .sh failai šiame kataloge."
# Komandų sąrašo spausdinimas
echo "Pasirinkite komandą paleisti:"
for ((i = 0; i < ${#commands[@]}; i++)); do
echo "$((i + 1)). ${commands[$i]}"
done
# Pasirinkimo gavimas
while true; do
read -p "Įveskite komandos numerį: " choice
# Patikrinimas, ar įvestis yra skaitinė
if is_numeric "$choice"; then
if [[ $choice -ge 1 && $choice -le ${#commands[@]} ]]; then
selected_command="${commands[$choice - 1]}"
echo "Paleidžiama komanda: $selected_command"
# Patikrinimas, ar pasirinkta komanda yra "chmod +x"
if [[ "$selected_command" == "chmod +x" ]]; then
# Surasti visus .sh failus ir juos rodyti vartotojui
sh_files=$(find . -maxdepth 1 -type f -name "*.sh" -exec basename {} \;)
echo "Pasirinkite failą, kuriam norite pritaikyti chmod +x:"
select file in $sh_files; do
if [[ -n $file ]]; then
# Patikrinimas, ar pasirinktas failas yra tinkamas
if [[ -f "$file" ]]; then
chmod +x "$file"
echo "Failui $file pritaikyta chmod +x."
break
else
echo "Nerastas failas: $file"
fi
else
echo "Neteisingas pasirinkimas. Bandykite dar kartą."
fi
done
else
eval "$selected_command"
fi
break
else
echo "Neteisingas pasirinkimas. Pasirinkite tinkamą komandos numerį."
fi
else
echo "Neteisingas pasirinkimas. Įveskite skaitinę reikšmę."
fi
done
Pridėjau pavyzdinį commands.txt
fastfetch
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
python3 -m venv $HOME/Python
source $HOME/Python/bin/activate
stat -c %w / | cut -b 1-16 #mano Debian instaliavimo data
chmod +x
free -m -l -t
curl ifconfig.me
curl geofind.me
curl api.myip.com
Komentarai
Rašyti komentarą