Kätevimmät Linux scriptit

Liittynyt
18.10.2016
Viestejä
1 614
Itse siirryin joku aika sitten Linux Minttiin työläppärissäni. Nyt olisi mielenkiintoista tietää mitä kaikkea scriptejä techiläiset ovat tehneet Linuxin käyttöä helpottamaan. Tässä yksi versio varmaan yleisimmästä scriptistä mitä linux käyttäjillä on:

Bash:
#!/bin/bash

# Värit selkeyttämään tulosteita
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}--- Aloitetaan järjestelmän päivitys ---${NC}"

# 1. Päivitetään pakettilistat
echo -e "${GREEN}1. Päivitetään pakettilistat...${NC}"
sudo apt update

# 2. Suoritetaan varsinaiset päivitykset
echo -e "${GREEN}2. Asennetaan päivitykset...${NC}"
sudo apt upgrade -y

# 3. Päivitetään Flatpak-sovellukset
if command -v flatpak &> /dev/null; then
    echo -e "${GREEN}3. Päivitetään Flatpakit...${NC}"
    flatpak update -y
fi

# 4. Siivous: poistetaan tarpeettomat paketit ja välimuisti
echo -e "${GREEN}4. Siivotaan järjestelmä...${NC}"
sudo apt autoremove -y
sudo apt autoclean

echo -e "${BLUE}--- Päivitys valmis! ---${NC}"

Tämä scripti päivittää Linux Mintissä ohjelmat yhdellä komennolla.
 
Mä siirryin viime joulukuussa windowsista linuxiin ja koska muistini on aika huono enkä pysty muistamaan pitkiä komentoja niin aloin rakentamaan omaa cli työkalua mihin olen kasannut näitä scriptejä, tällä hetkellä projekti on kasvanut noin 20k koodirivin viritykseksi joka automatisoi kaiken mitä tulee mieleen linuxissa interaktiivisilla komentorivimenuilla.
 
Tässä jotain bash-funktioita, jotka .bash_functions-tiedostossa ja bash-aliaksia .bash_alias-tiedostossa, jotka ladataan aina, kai .bashrc:n kautta. Ehkä jollekin osa hyödyllisiä.

Bash:
# Run anything backgroud redirecting stdout & stderr to /dev/null.
function bgnull() {
    if [ ${#*} -lt 1 ]; then
        return 1
    fi

    "$@" >/dev/null 2>&1 &
}

function alarm() {
    timeout -s 9 "$1" speaker-test --frequency 400 --test sine &>/dev/null &
}

# Notify when job is finished.
# usage: notify 'some commands'
function notify() {
    eval "$@" && {
        notify-send 'Job finished.' "$@"
        alarm 1
    }
}

# Print the sizes of directories contents. The current directory, if no
# argument is passed.
function dirsizes() {
    if [[ -z "$1" ]]; then
        dir=.
    elif [[ -n "$1" ]]; then
        dir="$1"
    else
        echo "usage: dirsizes [DIR]" 1>&2
        return 1
    fi

    find "$dir" -maxdepth 1 -type d -exec du -bs '{}' \; | sort -nr | numfmt --to=si
}

no-color() {
    sed -r "s/\x1B\[[0-9;]*m//g"
}

snap-remove-disabled() {
    LANG=C snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision; do
        sudo snap remove "$snapname" --revision="$revision"
    done
}

fan() {
    # 0, 2, 4, 7, auto or disengaged
    level="$1"
    if [ -z "$level" ]; then
        >&2 echo fan [0, 2, 4, 7, auto, disengaged]
        return 1
    fi
    echo level "$level" | sudo tee /proc/acpi/ibm/fan
}

add-thumbnail-to-video() {
    ffmpeg -i "$1" -vframes 1 -q:v 2 thumbnail.jpg
    ffmpeg -i "$1" -i thumbnail.jpg \
        -map 0 -map 1 \
        -c copy \
        -disposition:v:1 attached_pic \
        "${1/%.mp4/_s.mp4}"
    rm thumbnail.jpg
}

combine-pdfs() {
    gs -q -sPAPERSIZE=letter -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}

alias bytes2human='numfmt --to=si'
# Escapaa sulkeet ja kirjoita argumentit ilman välejä. 'expr' - ei tarv. escapea.
alias calc='perl -e "print eval(qq(@ARGV)), qq(\n);"'
alias delscr='screen -d `env |grep -o "[0-9]\{4,5\}\..*x$"`'
alias errecho='>&2 echo'
alias pclip="xclip -sel clip -o"
# Muokkaa tiedostoja sedin tapaan.
alias perlsed='perl -pi -we'
alias security-upgrade="2>&1 apt list --upgradable | grep security | sed 's/\(.*\)\/.*/\1/' | xargs apt install -y --only-upgrade"
alias snap-refresh-all="sudo snap refresh --list | tail -n +2 | cut -f 1 -d ' ' | xargs sudo snap refresh"
alias tb="nc termbin.com 9999"
alias upgradable="apt list --upgradable | sed 's/\/\(.*\)/ \/ \1/'"
alias www-server="python3 -m http.server --bind 127.0.0.1"
alias yclip="xclip -sel clip"
 
Ittellä on scripti joka liittää verkkolevyt automaattisesti kun kirjaudun kannettavalle, scripti tarkistaa ensin että onko kannettava kotiverkossa vai ei ja sen mukaan joko liittää jaot suoraan ip:llä tai sitten talescalen kautta.
 
Helppoon vanhojen kerneleiden poistoon, tämä ei anna poistaa kahta viimeisintä, joten vahingossa ei voi tuhota liikaa. Olen käyttänyt tätä jo kauan eikä ainakaan itsellä ole kertaakaan aiheuttanut ongelmia.

Koodi:
#!/bin/bash

KERNELS=`ls /boot | grep vmlinuz | cut -d'-' -f2,3`
CURRENT=`uname -r | cut -d'-' -f2,3`
echo Available kernels: $KERNELS
KERNCOUNT=`echo $KERNELS | wc -w`
if [ $KERNCOUNT -gt 1 ];
then
    OLDEST=`echo "${KERNELS%% *}" | head -1`
    if [ $OLDEST == $CURRENT ]; then
        echo "Oldest kernel is currently in use."
        exit
    fi
    PACKAGES=`dpkg -l | grep ^ii |grep $OLDEST | awk -F' ' '{ print $2 }'`
    echo "Oldest package (to be removed): $OLDEST"
    echo These packages will be removed: $PACKAGES
    echo Proceed?
    PS3="Select: "
    select yn in Yes No;
    do
        case $yn in
            Yes)
                echo "Proceed";break
                ;;
                *)
                exit
                ;;
        esac
    done
    sudo apt-get remove -y $PACKAGES
    echo Done removing oldest kernel
else
    echo There are only two kernels in the system. Aborting.
fi
 

Statistiikka

Viestiketjuista
312 913
Viestejä
5 309 724
Jäsenet
84 390
Uusin jäsen
Lehtipihvi

Hinta.fi

Back
Ylös Bottom