Ciekawe i gotowe skrypty bash dla wszystkich!

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
bryn1u
Posty: 64
Rejestracja: 01 lutego 2009, 23:51
Lokalizacja: /dev/null

Ciekawe i gotowe skrypty bash dla wszystkich!

Post autor: bryn1u »

Witam.
Chciałbym przedstawić kilka ciekawych skryptów. Niektóre trzeba zmodyfikować do swoich potrzeb. Niektóre mogą być już Wam znane. Pozdrawiam

Zacznijmy od najłatwiejszych a więc:
  1. Aliasy - ułatwiajmy sobie pracę z apt-get:

    Kod: Zaznacz cały

    #!/bin/sh
    
     alias install='sudo apt-get install'
     alias search='sudo apt-cache search'
     alias upgrade='sudo apt-get upgrade'
     alias update='sudo apt-get update'
     alias ..='cd ..'
    
  2. Aktualizacja systemu jednym poleceniem:

    Kod: Zaznacz cały

    #!/bin/sh
    sudo apt-get autoclean
    sudo apt-get autoremove
    sudo apt-get update
    sudo apt-get dist-upgrade
    
  3. Skrypt, który automatycznie łączy się z aparatem zgrywając wszystkie NOWE zdjęcia i wrzuca je do podkatalogów, które nazywa według dat wyciągniętych z informacji exif zdjęcia.
    Skrypt korzysta z paczek gphoto2 i exiv2.

    Kod: Zaznacz cały

    #!/bin/bash
    # KONFIGURACJA SKRYPTU OPIERA SIE O 2 ZMIENNE
    #ROZSZERZENIE JAKIE APARAT NADAJE PLIKOM
    ext='JPG'
    #KATALOG GDZIE BEDA TWORZONE PODFOLDERY - katalog musi istniec w nim zostane utworzone poszczegole podkatalogi
    pre_DIR='/media/sciezka/dostepu/do/aparatu/twojego/'
    
    if [ ! -d "$pre_DIR" ]
    then
    	echo 'KATALOG GLOWNY NIE ISTENIEJE'
    	exit 0
    fi
    
    echo 'Wykrywam aparat'
    gphoto2 --auto-detect
    echo 'Rozpoczynam zgrywanie nowych zdjec'
    gphoto2 --get-all-files --new
    
    for zdjecie in `ls *.$ext`
    do
    	post_DIR=`exiv2 $zdjecie | grep timestamp | cut -c 19- | cut -c -10 | sed 's/:/-/g'`
    	if [ ! -d "$pre_DIR$post_DIR" ]
    	then
    		echo "Tworze katalog $pre_DIR$post_DIR"
    		mkdir "$pre_DIR$post_DIR"
    	fi
    	if [ ! -d "$pre_DIR$post_DIR" ]
    	then
    		echo "Katalog $pre_DIR$post_DIR nie zostal utworzony sprawdz przyczyne"
    	else
    		echo "Przenosze plik $zdjecie"
    		mv $zdjecie "$pre_DIR$post_DIR"
    	fi
    done
    
    Pomijając fakt, że aparat musi posiadać funkcję oznaczania zdjęć, które są już zgrane to w moim przypadku rodzaj komunikacji w aparacie (Canon 300D) musi być ustawiony na NORMAL, a nie na PTP bo inaczej zgrywa wszytko jak leci.
  4. Skrypt dla Nautiliusa sprawdzający CRC plików filmowych, które zawierają zakodowany CRC w swojej nazwie, np. "cos_tam_cd1[2c657f0a].avi":

    Kod: Zaznacz cały

    #!/bin/sh
    # Language settings
                   Passed="OK"
                   Failed="FAILED"
                   PrintAllOk="All files are OK!"
                   PrintFail1="file(s) are OK and"
                   PrintFail2="file(s) are corrupt!"
    
    case $LANG in
            pl* )
                   Passed="OK"
                   Failed="Błąd"
                   PrintAllOk="Wszystkie pliki są OK!"
                   PrintFail1="plik(i) jest/są OK i"
                   PrintFail2="plik(i) jest/są uszkodzony/uszkodzone!"
    esac
    
    for File in "$@"
    do
    	if [ ! -f "$File" ];then
    	zenity --error --text="\"$File\" isn\'t processing..."
    	exit
    	fi
    
    CFVName="/tmp/cfv.sfv"
    echo "$File ${File :( ( ${#File} -13 )):8}" > "$CFVName"
    
    (cfv -rr -T -f "$CFVName" -t sfv "$@" > "/tmp/CRCcheck.txt") 2>&1 | zenity --progress --title "Check CRC" --text "Checking: $File" --pulsate --auto-close
    
    NumberOK=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Passed" | wc -l`
    NumberFailed=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Failed" | wc -l`
       if [ $NumberFailed == 0 ]; then
           StatusMessage="$PrintAllOk"
       else
           StatusMessage="$NumberOK $PrintFail1 $NumberFailed $PrintFail2"
       fi
    echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> /tmp/CRCcheck.txt
    cat /tmp/cfv.sfv >> /tmp/CRCcheck.txt
    echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> /tmp/CRCcheck.txt
    echo "$StatusMessage" >> /tmp/CRCcheck.txt
    
    zenity --text-info --title "$File" --width=640 --height=480 --filename=/tmp/CRCcheck.txt
    
    done
    
    Skrypt na podstawie "Make md5" i "Check md5" ze strony.
    Potrzebuje do poprawnej pracy pakietów "Zenity" i "CFV" z repozytorium:
    Nautilius Scripts

    Skrypt dla Nutiliusa ułatwiający tworzenie sum kontrolnych plików i ich zapisu do SFV:

    Kod: Zaznacz cały

    #!/bin/sh
    
    for File in "$@"
    do
    	if [ ! -f "$File" ];then
    	zenity --error --text="\"$File\" isn\'t processing..."
    	exit
    	fi
    
    CFVName="${File::( ( ${#File} -4 ))}.sfv"
    #zenity --info --title="Checking SFV file name..." --text="# $CFVName #"
    
    cfv -rr -C -f "$CFVName" -t sfv "$@" | zenity --progress --title "Make SFV" --text "Making: $CFVName" --pulsate --auto-close
    
    done
    
    Skrypt dla Nautiliusa do sprawdzania SFV na podstawie pliku "*.SFV":

    Kod: Zaznacz cały

    #!/bin/sh
    
    # Language settings
    
                   Passed="OK"
                   Failed="FAILED"
                   PrintAllOk="All files are OK!"
                   PrintFail1="file(s) are OK and"
                   PrintFail2="file(s) are corrupt!"
    
    case $LANG in
            pl* )
                   Passed="OK"
                   Failed="Błąd"
                   PrintAllOk="Wszystkie pliki są OK!"
                   PrintFail1="plik(i) jest/są OK i"
                   PrintFail2="plik(i) jest/są uszkodzony/uszkodzone!"
    esac
    
    for File in "$@"
    do
    	if [ ! -f "$File" ] || [ "${File :( ( ${#File} -4 ))}" != ".sfv" && ".SFV" ];then
    	zenity --error --text="\"$File\" isn\'t SFV file..."
    	exit
    	fi
    
    (cfv -rr -T -f "$@" -t sfv > "/tmp/CRCcheck.txt") 2>&1 | zenity --progress --title "Check SFV" --text "Checking: $File" --pulsate --auto-close
    
    NumberOK=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Passed" | wc -l`
    NumberFailed=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Failed" | wc -l`
       if [ $NumberFailed == 0 ]; then
           StatusMessage="$PrintAllOk"
       else
           StatusMessage="$NumberOK $PrintFail1 $NumberFailed $PrintFail2"
       fi
    echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> /tmp/CRCcheck.txt
    echo "$StatusMessage" >> /tmp/CRCcheck.txt
    
    zenity --text-info --title "$File" --width=640 --height=240 --filename=/tmp/CRCcheck.txt
    
    done
    
  5. To się przyda komuś kto ma Neostradę przez ruter PENTAGRAM CERBERUS ADSL LITE.
    Skrypt ma za zadanie bez wchodzenia do panelu administracyjnego rutera (przez www) wykonać połączenie, rozłączenie, rozłączenie i połączenie (reconnect) modemu ADSL.

    Kod: Zaznacz cały

    #!/bin/bash
    
    GATEIP="ADRES IP ROUTERA"
    LINK="http://$GATEIP/doc/index.htm?WINDWEB_URL=/doc/ppp.htm&PPP_connection_number=1&New_PPP_Action="
    USER="NAZWA ADMINISTRATORA"
    PASS="HAS£O ADMINISTRATORA"
    
    function connect(){
      wget --quiet --http-user=$USER --http-password=$PASS ${LINK}0 -O /tmp/wget_router
      rm -f /tmp/wget_router
    }
    
    function disconnect(){
      wget --quiet --http-user=$USER --http-password=$PASS ${LINK}1 -O /tmp/wget_router
      rm -f /tmp/wget_router
    }
    
    case $1 in
      'connect'|'c')
        connect;;
    
      'disconnect'|'d')
        disconnect;;
    
      'reconnect'|'r')
        echo -n "wait..."
        disconnect && sleep 2 && connect
        echo "OK";;
    
      *)
        echo "$0 {connect|c|disconnect|d|reconnect|r}";;
    esac
    
  6. Nakładka graficzna na http://www.gaduradio.yoyo.pl, podstawą jej działania jest poprawność działania powyższego skryptu, konfiguracja opiera się na zdefiniowaniu początkowych zmiennych. Dla bezpieczeństwa polecam utworzyć sobie osobne konto gg gdyz hasła do konta w pliku nie są przechowywane w zakodowanej postaci. Po stworzeniu skryptu dodajemy skrót na pulpicie i cieszymy sie szybkim i łatwym uruchamianiuem gg radia.
    - Domyślna stacja musi posiadać taką samą nazwę jak wyświetlana w oknie.
    - Potrzebne paczki: php5-cli lub php4-cli
    - Oczywiście skrypt należy uzyskać prawa wykonywania.

    Kod: Zaznacz cały

    #!/bin/bash
    #------------- Ustawienia-------------------------
    domyslna='Szanty';
    numer_gg='4352454';
    haslo='xxxfdfjei';
    odtwarzacz='/usr/bin/vlc';
    sciezka_do_skryptu='/home/ajr/gadu_radio';
    #-------------------------------------------------------------------------------------------------------
    cd $sciezka_do_skryptu;
    while [ !$ans ]
    do
    ans=$(zenity  --list  --text "Wybierz stacje" --radiolist  --column "" --column "Opinion" TRUE $domyslna FALSE "Euro Dance" FALSE "Impreza" FALSE "House" FALSE "Rock" FALSE "Po Polsku" FALSE "Smak 80-tych Lat" FALSE "We Dwoje" FALSE "Disco Polo" FALSE "Hip-Hop" FALSE "Alternatywnie" FALSE "Pop" FALSE "Trance" FALSE "Jazz" FALSE "Szanty");
    
    case $ans in
    "Euro Dance") ans='eurodance' ;;
    "Impreza") ans='impreza' ;;
    "House") ans='house' ;;
    "Rock") ans='rock' ;;
    "Po Polsku") ans='popolsku' ;;
    "Smak 80-tych Lat") ans='smak80lat' ;;
    "We Dwoje") ans='wedwoje' ;;
    "Disco Polo") ans='discopolo' ;;
    "Hip-Hop") ans='hiphop';;
    "Alternatywnie") ans='alternatywnie';;
    "Pop") ans='pop' ;;
    "Trance") ans='trance' ;;
    "Jazz") ans='jazz' ;;
    "Szanty") ans='szanty';;
    *) exit;;
    esac
    php ggRadio_CLI.php --gg=$numer_gg --pass=$haslo --channel=$ans --player=$odtwarzacz
    done;
    
  7. Skrypt do zmiany bitrate mptrójek:

    Kod: Zaznacz cały

    #!/bin/bash
    #Autor:  Rupek
    
    
    ############################### FUNKCJE #####################################################
    jeden ()
    {
    	wej=`zenity --file-selection --title="Wybierz plik mp3 do konwersji"`
    
    		if [ "$?" = 1 ] ; then
    			exit 
    		fi
    
    	wyj=`zenity --file-selection --save --title="Wybierz miejsce zapisu pliku mp3"`
    
    		if [ "$?" = 1 ] ; then
    			exit 
    		fi
    
    	bitrate=`zenity --list --title "Wybór bitrate" --text "Poniżej masz listę dostępnych bitrate obsługiwanych przez program,
    	który zostanie użyty do konwersji pliku" --radiolist --height 450 --column "" --column "Dostępny bitrate" FALSE "8" FALSE "16" FALSE "24" FALSE "32" FALSE "40" FALSE "48" FALSE "56" FALSE "64" FALSE "80" FALSE "96" FALSE "112" FALSE "128" FALSE "144" FALSE "160"` 
    
    		if [ "$?" = 1 ] ; then
    			exit 
    		fi
    
    	lame --mp3input -b "$bitrate" "$wej" "$wyj.mp3" | zenity --progress --auto-close --text="Proszę czekać 
    	Trwa konwersja plików"
    
    	zenity --info --text="Konwersja zakończona pomyślnie."
    }
    
    wszystkie ()
    {
    	bitrate=`zenity --list --title "Wybór bitrate" --text "Poniżej masz listę dostępnych bitrate obsługiwanych przez program,
    	który zostanie użyty do konwersji wszystkich plików" --radiolist --height 450 --column "" --column "Dostępny bitrate" FALSE "8" FALSE "16" FALSE "24" FALSE "32" FALSE "40" FALSE "48" FALSE "56" FALSE "64" FALSE "80" FALSE "96" FALSE "112" FALSE "128" FALSE "144" FALSE "160"` 
    
    		if [ "$?" = 1 ] ; then
    			exit 
    		fi
    
    	for i in *.mp3
    		do lame --mp3input -b "$bitrate" "$i" "nowy$i"
    	done | zenity --progress --auto-close --text="Proszę czekać 
    	Trwa konwersja plików"
    	
    	zenity --info --text="Konwersja zakończona pomyślnie."
    }
    
    ############################################################################################
    
    ##################################### OKNO G£ÓWNE #########################################
    if [ -x /usr/bin/lame ]
    	then
    		zenity --info --text="Program wykorzystuje do konwersji program Lame "
    else
    	zenity --error --text="Nie masz zainstalowanego programu Lame
    Użyj programu synaptic, apt-get lub innego menagera plików do jego zainstalowania"
    exit
    fi
    
    wybor=`zenity --list --title "Wybór rodzaju konwersji" --text "Poniżej masz listę dostępnych
    rodzajów konwersji" --radiolist --column "" --column "Dostępny bitrate" FALSE "Pojedyńczy plik mp3" FALSE "Wszystkie pliki mp3 w folderze" TRUE "Zakończ działanie programu"`
    
    case "$wybor" in
    	"Pojedyńczy plik mp3")						jeden 	  ;;
    	"Wszystkie pliki mp3 w folderze")				wszystkie ;;
    	"Zakończ działanie programu")					exit      ;;
    	*) zenity --error --text "Nic nie wybrałeś. Spróbuj ponownie"
    esac
    
  8. Skrypt do dzielenia plików po 50, 100 i 200 Mb

    Kod: Zaznacz cały

    #!/bin/bash
    #Autor: Rupek
    
    wej=`zenity --file-selection --title="Wybierz plik do podzielenia"`
    
    	if [ "$?" = 1 ] ; then
    		exit 
    	fi
    
    wyj=`zenity --file-selection --save --title="Podaj nazwę oraz wybierz miejsce zapisu spakowanych części."`
    
    	if [ "$?" = 1 ] ; then
    		exit 
    	fi
    
    rozmiar=`zenity --list --text "Wybierz rozmiar podzielonych części:
    	50m - dzielone części będą miały rozmiar 50 Mb
    	100m - dzielone części będą miały rozmiar 100 Mb
    	200m - dzielone części będą miały rozmiar 200 Mb
    " --title "Wybór wielkości podzielonych plików" --radiolist --column "" --column "Dostępne rozmiary" FALSE "50m" FALSE "100m" FALSE "200m"` 
    
    	if [ "$?" = 1 ] ; then
    		exit 
    	fi
    
    kompresja=`zenity --list --title "Wybór bitrate" --text "Wybierz metodę kompresji:
    
    	m0 - kompresja I stopnia (najsłabsza)
    	m1 - kompresja II stopna
    	m2 - kompresja III stopnia
    	m3 - kompresja IV stopnia
    	m4 - kompresja V stopnia
    	m5 - kompresja VI stopnia (najmocniejsza)" --radiolist --column "" --column "Dostępny metody kompresji" FALSE "m0" FALSE "m1" FALSE "m2" FALSE "m3" FALSE "m4" FALSE "m5"`
    
    	if [ "$?" = 1 ] ; then
    	exit 
    	fi
    
    rar a "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej"
    
  9. Skrypt pozwalajacy słuchać radia:

    Kod: Zaznacz cały

    #!/bin/bash
    
    # Configuration
    RADIO_DIR=~/.radyja
    PLAYER=echo
    
    
    # List available radios
    list_radios () {
    	if [ -d $RADIO_DIR ]
    	then
    		cd $RADIO_DIR
    		grep 'Opis:' *.fm | sed -e 's/\.fm:Opis:/:\t/'
    	else
    		echo 'No radios installed'
    	fi
    }
    
    # Play radio
    play_radio () {
    	RADIO="$RADIO_DIR/$1.fm"
    	if [ -f $RADIO ]
    	then
    		URL=`grep 'Adres: ' $RADIO | sed 's/^Adres: //'`
    		$PLAYER $URL
    	else
    		echo "Radio $1 not found"
    	fi
    }
    
    # Print help
    print_help () {
    	echo "USAGE: radyjo radio_name"
    	echo "To list available radio_names, use radyjo --list"
    }
    
    
    # Main script
    if [ ! -n "$1" ]		# No argument given
    then
    	print_help
    elif [ "$1" = "--list" ]	# List radios
    then
    	list_radios
    elif [ "$1" = "--help" ]	# Print help
    then
    	print_help
    else				# Play radio
    	play_radio "$1"
    fi
    
    Wrzucamy np. do ~/bin/radyjo i możemy używać:

    Kod: Zaznacz cały

    radio nazwa_radia
    albo przeglądać dostępne radia:

    Kod: Zaznacz cały

    radio --list
    
    Radia są przechowywane w plikach o nazwach: nazwa_radia.fm w katalogu ~/.radyja w formacie:

    Kod: Zaznacz cały

    Adres: [url]http://adres_pliku_ze_strumieniem/blabla.ogg[/url]
    Opis: Nazwa radia
  10. Dziennik haseł dla zapominalskich:

    Kod: Zaznacz cały

    http://rapidshare.com/files/72406953/dziennik_hasel.tar.gz
    
  11. nazwa: SKA
    waga: 6.9 mb
    link: http://rapidshare.com/files/71091022/ska_1.2.1.tar.gz

    Skrypt korzysta z darmowych słowników tekstowych.
    Jest szybki, wyszukuje pochodne (nie dopracowane) oraz jest możliwość dodawania haseł.
    Skrypt sam się instaluje i usuwa, trzeba mu nadać prawa i uruchomić z poziomu użytkownika.
    Wydruk z pomocy:

    Kod: Zaznacz cały

    Składnia                | command [opcje] [wyrażenie]
    [opcje]
    ap                      | z angielskiego na pol
    pa                      | z pol na angielski
    np                      | z niemieckiego na pol
    pn                      | z pol na niemiecki
    apusa                   | z angielskiego usa na pol
    pausa                   | z pol na amgielski usa
    chp                     | z chińskiego na pol
    pch                     | z pol na chiński
    czp                     | z czeskiego na pol
    pcz                     | z pol na czeski
    frp                     | z francuskiego na pol
    pfr                     | z pol na francuski
    grp                     | z greckiego na pol
    pgr                     | z pol na grecki
    hip                     | z hiszpańskiego na pol
    phi                     | z pol na hiszpański
    latp                    | z łacińskiego na pol
    plat                    | z pol na łaciński
    pros                    | z pol na rosyjski
    rosp                    | z rosyjskiego na pol
    pslo                    | z pol na słowacki
    slop                    | z słowackiego na pol
    pwl                     | z pol na włoski
    wlp                     | z włoskiego na pol
    --di                    | deinstalacja SKA
    +ap                     | edycja słownika ang-pol
    +pa                     | edycja słownika pol-ang
    +np                     | edycja słownika niem-pol
    +pn                     | edycja słownika pol-niem
    
    [wyrażenie]             | słowo do tłumaczenia
    
    Jak używać:

    Kod: Zaznacz cały

    ##########################################################
    # S K A  -  Wielojęzyczny słownik Konsolowy dla Linuxa  ##
    # Wersja 1.2.1        [url]http://elektronikjk.republika.pl[/url]  ##
    # ska --help                       | więcej informacji  ##
    ##########################################################
    
    Wyniki szukania woda:
    
            woda (f) (rzecz.)=aqua
            woda (f) (rzecz.)=water
    
    Pokazać podobne do woda? [T/N]
    T
    
    Podobne do woda:
    
            deszczówka (f) (rzecz.)=rainwater
            falochron (m) (rzecz.)=breakwater
            lura (f) (rzecz.)=dishwater
            molo (n) (rzecz.)=breakwater
            nadtlenek (m) (rzecz.)=water
            ociekanie (n) (rzecz.)=water
            odwadniać (czas.)=dewater
            podlewać (czas.)=water
            podlewanie (n) (rzecz.)=water
            podmorski (przym.)=underwater
            podwodny (przym.)=underwater
            polewać (czas.)=water
            pomyje (pl) (rzecz.)=dishwater
            prowincja (f) (rzecz.)=backwater
            rozlewisko (n) (rzecz.)=backwater
            słodkowodny (przym.)=freshwater
            tlenienie (n) (rzecz.)=water
            woda (f) (rzecz.)=aqua
            woda (f) (rzecz.)=water
            wodociąg (m) (rzecz.)=water
            zalew (m) (rzecz.)=backwater
            zaścianek (m) (rzecz.)=backwater
    
  12. Radia internetowe:

    Kod: Zaznacz cały

    #!/bin/bash
    # Prosty skrypcik odpalajacy wybrane przez nas Radio Internetowe
    #
    # Autor: Lukasz Kubsz <qbsiu [at] o2.pl>
    clear
    echo "Jakie radio wybierasz?"
    echo ""
    echo "Zeby przerwac strumien wcisnij CTRL + C"
    echo ""
    echo "Dostepne radia to:"
    select radio in Hit' 'FM Rmf' 'FM Radioparty Zet Radio' 'Lodz Radiostacja Radio' 'Eska' 'Lodz Radiosfera Zlote' 'Przeboje TOK' 'FM Zakoncz
    
    do
        case $radio in
        "Hit FM") adres="http://warszawa.radio.pionier.net.pl:8000/pl/hitfm.ogg" ;;
        "Rmf FM") adres="http://213.251.141.62:8000" ;;
        "Radioparty") adres="http://87.98.223.92:8005" ;;
        "Zet") adres="http://213.251.140.82:8050" ;;
        "Radio Lodz") adres="http://ra.man.lodz.pl:8000/radiolodz.ogg" ;;
        "Radiostacja") adres="http://213.251.141.82:8150" ;;
        "Radio Eska Lodz") adres="http://olsztyn.radio.pionier.net.pl:8000/z/eska-lodz.ogg" ;;
        "Radiosfera") adres="http://serv.radiosfera.pl:7098" ;;
        "Zlote Przeboje") adres="http://szczecin.radio.pionier.net.pl:8000/pl/zloteprzeboje.ogg" ;;
        "TOK FM") adres="http://szczecin.radio.pionier.net.pl:8000/pl/radiotok.ogg" ;;
        "Zakoncz") exit ;;
      esac
    break
    done
    mplayer $adres
    
  13. Skrypt ten może być pomocny przy diagnozowaniu ewentualnych problemów z kartą dźwiękową. Skrypt korzysta m.in. z sysv-rc-conf - należy zainstalować.

    Kod: Zaznacz cały

    #!/bin/bash
    echo
    # time and user
    date=$(date)
    echo "Today is $date"
    me=$(whoami)
    echo "Sound tested by $me"
    echo
    echo
    echo "== Identifying System =="
    uname -s -r -v -p -o
    cat /proc/cpuinfo | grep -i "model name"
    cat /proc/cpuinfo | grep -i "cpu mhz"
    cat /proc/meminfo | grep -i memtotal
    cat /proc/meminfo | grep -i swaptotal
    
    echo
    echo "== Information about a mixer device =="
    amixer info
    echo
    echo "== Checking dsp devices =="
    ls -l /dev | egrep -i dsp\|sound
    
    echo
    echo "== Checking mixer devices =="
    ls -l /dev | egrep -i dsp\|mixer
    
    echo
    echo "== Checking Driver =="
     
    if test -f /sbin/lspci
    then /sbin/lspci -v | egrep -i "(audio|multimedia|host bridge)"
    
    elif test -f /usr/bin/lspci
    then /usr/bin/lspci -v | egrep -i "(audio|multimedia|host bridge)"
    
    else 
    echo "==> Test not available on this system !"
    
    fi
    
    echo
    echo "== ALSA version =="
    cat /proc/asound/version
    echo
    echo "== Checking Actual Driver in Use (/etc/modprobe.d/sound) kernel 2.6 =="
    if test -f /etc/modprobe.d/sound; then
         cat /etc/modprobe.d/sound
    else
         echo "==> Test not available on this system !"
    fi
    
    echo
    echo "== Checking Cross Platform Audio Output Library (/etc/libao.conf) =="
    if test -f /etc/libao.conf; then
    	cat /etc/libao.conf | grep -E -v "^#| ^$"
    else
    	echo "==> /etc/libao.conf not available !"
    fi
    echo
    echo "== Checking ALSA configure files =="
    if test -f /etc/asound.conf; then
     echo "/etc/asound.conf ====> exist"
    fi
    if test -f $HOME/.asoundrc; then
      echo -e "$HOME/.asoundrc ====> exist"
    fi
    if test -f $HOME/.asoundrc.asoundconf; then
     echo -e "$HOME/.asoundrc.asoundconf ====> exist"
    fi
    echo
    echo "== Checking esd config (/etc/esound/esd.conf) =="
    if test -f /etc/esound/esd.conf; then
      echo "-----------------------------------------------------"
      cat /etc/esound/esd.conf | grep -E -v "^#| ^$"
      echo "-----------------------------------------------------"
    fi
    if test -d /dev/snd; then
         echo
         echo "== Checking alsa /dev/snd =="
         ls --color=none /dev/snd
    fi
    
    echo
    echo "== Checking if Module Loaded =="
    /sbin/lsmod | egrep -i snd\|sound\|audio\|game
    
    echo
     if test -x /usr/sbin/sysv-rc-conf; then
         echo "== Checking in what level alsasound service is configured to run =="
           if test -x /etc/init.d/alsasound; then
              /usr/sbin/sysv-rc-conf --list alsasound
           else
              echo "Init script alsasound not exist !"
           fi   
    
         echo
         echo "== Checking in what level alsa-utils service is configured to run =="
           if test -x /etc/init.d/alsa-utils; then
              /usr/sbin/sysv-rc-conf --list alsa-utils
           else
              echo "Init script alsa-utils not exist !"
           fi   
    else
         echo "==> Test for run levels not available on this system !"
    fi
    
    echo
    echo "== Checking if Sound Volume muted =="
    if test -x /usr/bin/aumix; then
         aumix -q
    else
         echo "==> Test not available on this system !"
    fi
    
    echo
    echo "== Checking artsd setup =="
    ps -A -f | grep -i artsd | grep -v grep
    echo
    echo "== Checking esd setup =="
    ps -A -f | grep -i esd | grep -v grep
    
    echo
    echo "== Checking which program uses the sound card or cdrom =="
    echo "                (no output is okay)"
    if test -x /sbin/fuser; then
         /sbin/fuser -v /dev/dsp
         /sbin/fuser -v /dev/cdrom
    else
         /bin/fuser -v /dev/dsp
         /bin/fuser -v /dev/cdrom
    fi
    
    echo
    echo "== Test wav file . . . . . please wait =="
    
    if test -f /usr/share/sounds/startup.wav 
     then 
     /usr/bin/play /usr/share/sounds/startup.wav > /dev/null
    
    else
      echo "==> Test not available on this system !"
    
    fi
    
    # Interactive part 
    echo -n "Did you hear the soundfile Yes/No ?:"
    read answer
    
    # the user did not enter anything:
    while [ -z "$answer" ]; do
    echo "You did not tell me Yes or No !!!"
    echo -n "Did you hear the soundfile Yes/No ?:"
    read answer
    done
    
    echo "You typed:  $answer   Thanks !" 
    
    sleep 2
    
    echo
    echo "== End of Checks  ==" 
    echo
    
  14. Skrypt do wysuzkiwania intruzow w sieci lokalnej
    a)pierwszy
    -potrzebne pakiety: zenity i nbtscan

    Kod: Zaznacz cały

    #!/bin/bash
    if [ -e ~/.list ]; then
    nbtscan 192.168.2.1-10 > .list
    else
    touch ~/.list
    nbtscan 192.168.2.1-10 > .list
    fi
    
    if [ -e ~/.ile ]; then
    wc -l ~/.list > ~/.ile
    else
    touch ~/.ile
    wc -l ~/.list > ~/.ile
    fi
    wynik="$[$(cat ~/.ile | cut -c1)-4]"
    cat ~/.list | tail -n$wynik | cut -d" " -f1-7
    
    b) drugi

    Kod: Zaznacz cały

    #!/bin/bash
    if [ -e ~/.intruz ] ; then
    scan > ~/.intruz
    else
    touch ~/.intruz
    scan > ~/.intruz
    fi
    if [ "$(inter | cut -c2-6)" != "ASMAX" ]; then
    sleep 3600
    netusers
    else
    if [ "$(wc -l ~/.intruz | cut -c1)" -gt "2" ]; then
    zenity --title "Intruz" --info --text "Wykryto intruza w twojej sieci lokalnej"
    fi
            if [ "$(cat ~/.intruz | cut -c1)" = "2" ]; then
                    if [ "$(cat ~/.intruz | grep 192.168.2.7)" = "0" ]; then
                    zenity --title "Intruz" --info --text "Wykryto intruza w twojej sieci lokalnej"
                    fi
                    fi
    
                    if [ "$(wc -l ~/.intruz | cut -c1)" = "2" ]; then
                            if [ "$(cat ~/.intruz | grep XXX-ECF00AD4F14)" = "0" ]; then
                            zenity --title "Intruz" --info --text "Wykryto intruza w twojej sieci loka$
                            fi
                            fi
    
    fi
    echo "ok"
    sleep 300
    netusers
    
  15. Konwertowanie kodowania plików tekstowych z windowsowego cp1250 do UTF8. Przydaje się zaraz po przenosinach, a także do plików przesyłanych przez użytkowników Windowsów co o UTF nie słyszeli.

    Kod: Zaznacz cały

    #!/bin/bash
    if [ $# -gt 0 ] ; then
    	iconv -f CP1250 -t UTF-8 --output=/tmp/$1 $1
    	cp $1 $1~
    	mv /tmp/$1 $1
    else
    	echo "Konwersja kodowania pliku tekstowego z CP1250 (Windows) na UTF-8"
    	echo "użycie: $0 nazwapliku"
    fi
    
  16. Skrypt do wypakowywania prawie wszystkiego:

    Kod: Zaznacz cały

    #!/bin/bash
    if [ -f "$1" ] ; then
         case "$1" in
            *.tar.bz2) tar xjf $1 ;;
            *.tar.gz) tar xzf $1 ;;
            *.bz2) bunzip2 $1 ;;
            *.rar) unrar x $1 ;;
            *.gz) gunzip $1 ;;
            *.tar) tar xf $1 ;;
            *.tbz2) tar xjf $1 ;;
            *.tgz) tar xzf $1 ;;
            *.zip) unzip $1 ;;
            *.Z) uncompress $1 ;;
            *.7z) 7z x $1 ;;
            *) echo "'$1' nie może zostać rozpakowany" ;;
          esac
    else
          echo "'$1' nie jest poprawnym plikiem"
    fi
    
  17. Kompresja rar + dzielenie na części + zabezpieczenie hasłem. Przydaje się gdy chcemy wysłać coś specyficznego przez gmaila lub inna pocztę.

    Skrypt został rozbudowany i trochę zmodyfikowany.

    Kod: Zaznacz cały

    #!/bin/bash
    #Autor: DaFim
    rodzaj=`zenity --list --title "Kompresja" --text "Wybierz co chcesz skompresować" --radiolist --column "" --column "Dostępne opcje:" FALSE "plik" FALSE "folder"`
    
    	if [ "$rodzaj" = folder ] ; then
                wej=`zenity --file-selection --title="Wybierz folder do podzielenia" --directory`
    
    	    if [ "$?" = 1 ] ; then
    		exit 
    	    fi
    	else 
                wej=`zenity --file-selection --title="Wybierz plik do podzielenia"`
    
    	    if [ "$?" = 1 ] ; then
    		exit 
    	    fi
    	fi
    
    wyj=`zenity --file-selection --save --title="Podaj nazwę oraz wybierz miejsce zapisu." --filename "$wej"`
    
    	if [ "$?" = 1 ] ; then
    		exit 
    	fi
    
    rozmiar=`zenity --entry --title "Wybierz rozmiar podzielonych części" --text "Podaj rozmiar części i jednostkę np 9m. 
    (0=brak dzielenia, 1k=1kb, 1m=1mb)" --width "400" --entry-text "0"` 
    	if [ "$rozmiar" = "" ] ; then
    		exit 
    	fi
    
    kompresja=`zenity --list --title "Wybór bitrate" --text "Wybierz metodę kompresji:
    
    	m0 - kompresja I stopnia (najsłabsza)
    	m1 - kompresja II stopnia
    	m2 - kompresja III stopnia
    	m3 - kompresja IV stopnia
    	m4 - kompresja V stopnia
    	m5 - kompresja VI stopnia (najmocniejsza)" --radiolist --column "" --column "Dostępne metody kompresji" --height "400" FALSE "m0" FALSE "m1" FALSE "m2" FALSE "m3" FALSE "m4" FALSE "m5"`
    
    	if [ "$?" = 1 ] ; then
    	exit 
    	fi
    
    haslo=`zenity --entry --title "Podaj hasło" --text "Podaj hasło lub pozostaw puste" --width=400 --entry-text ""` 
    	if [ "$haslo" = "" ] ; then
    	rar a -ep1 "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej"
            else
            rar a -ep1 "-p$haslo" "-hp$haslo" "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej"
    	fi
    zenity --info --text="Kompresja zakończona"
    
  18. Potrzebowałem czegoś, co szybko przekonwertuje mp3 do słabszej jakości aby wgrać je potem na mp3 player. Zmieniłem trochę skrypt wcześniejszy przedstawiony Rupka, zeby nie pytał się o bitrate itd. tylko od razu konwertowal do ustalonej wartości (aktualnie VBR 5, mono) i wrzucał plik z możliwie taką samą nazwą do katalogu mp3conv na pulpicie, przywracając tagi przy uąyciu id3ed.

    Kod: Zaznacz cały

    #!/bin/bash
    #Autor:  Rupek 
    
    
    ############################### FUNKCJE #####################################################
    jeden ()
    {
        wej=`zenity --file-selection --title="Wybierz plik mp3 do konwersji"`
    
            if [ "$?" = 1 ] ; then
                exit 
            fi
        temp=`echo "$wej" | sed 's/ /_/g'`
        temp=`basename $temp`
        temp=`echo "$temp" | sed 's/_/ /g'`
        wyj="$HOME/Desktop/mp3conv/$temp"
        lame --mp3input -m m -V 5 "$wej" "$wyj" | zenity --progress --auto-close --text="Proszę czekać 
        Trwa konwersja plików"
        
        #przywracamy tagi
        artist=`id3ed -i "$wej" | grep artist | sed 's/artist: //'`
        songname=`id3ed -i "$wej" | grep songname | sed 's/songname: //'`
        album=`id3ed -i "$wej" | grep album | sed 's/album: //'`
        year=`id3ed -i "$wej" | grep year | sed 's/year: //'`
        comment=`id3ed -i "$wej" | grep comment | sed 's/comment: //'`
        tracknum=`id3ed -i "$wej" | grep tracknum | sed 's/tracknum: //'`
        genre=`id3ed -i "$wej" | grep genre | sed 's/genre: //'`    
        genre=`echo "$genre" | sed 's/(.*)//'` #wywalamy nawias z numerem gatunku
    
        id3ed -s "$songname" -n "$artist" -a "$album" -y "$year" -c "$comment" -k "$tracknum" -g "$genre" -q "$wyj"    
    
        zenity --info --text="Konwersja zakończona pomyślnie."
    }
    
    wszystkie ()
    {
        dir=`zenity --file-selection --directory --title="Wybierz folder z mp3 do konwersji"`
    
        for i in "$dir/"*.mp3
            do    temp=`echo "$i" | sed 's/ /_/g'`
                temp=`basename $temp`
                temp=`echo "$temp" | sed 's/_/ /g'` 
                wyj="$HOME/Desktop/mp3conv/$temp"
                lame --mp3input -m m -V 5 "$i" "$wyj"
    
                artist=`id3ed -i "$i" | grep artist | sed 's/artist: //'`
                songname=`id3ed -i "$i" | grep songname | sed 's/songname: //'`
                album=`id3ed -i "$i" | grep album | sed 's/album: //'`
                year=`id3ed -i "$i" | grep year | sed 's/year: //'`
                comment=`id3ed -i "$i" | grep comment | sed 's/comment: //'`
                tracknum=`id3ed -i "$i" | grep tracknum | sed 's/tracknum: //'`
                genre=`id3ed -i "$i" | grep genre | sed 's/genre: //'`    
                genre=`echo "$genre" | sed 's/(.*)//'`
                
                id3ed -s "$songname" -n "$artist" -a "$album" -y "$year" -c "$comment" -k "$tracknum" -g "$genre" -q "$wyj"    
    
        done | zenity --progress --auto-close --text="Proszę czekać 
        Trwa konwersja plików"
        
        zenity --info --text="Konwersja zakończona pomyślnie."
    }
    
    ############################################################################################
    
    ##################################### OKNO G£ÓWNE #########################################
    if [ -x /usr/bin/lame ]
        then
            zenity --info --text="Program wykorzystuje do konwersji program Lame "
    else
        zenity --error --text="Nie masz zainstalowanego programu Lame
    Użyj programu synaptic, apt-get lub innego menagera plików do jego zainstalowania"
    exit
    fi
    
    wybor=`zenity --list --title "Wybór rodzaju konwersji" --text "Poniżej masz listę dostępnych
    rodzajów konwersji" --radiolist --column "" --column "Dostępny bitrate" FALSE "Pojedyńczy plik mp3" FALSE "Wszystkie pliki mp3 w folderze" TRUE "Zakończ działanie programu"`
    
    mkdir ~/Desktop/mp3conv #tworzy katalog, w ktorym znajda sie skompresowane pliki
    
    case "$wybor" in
        "Pojedyńczy plik mp3")                        jeden       ;;
        "Wszystkie pliki mp3 w folderze")                wszystkie ;;
        "Zakończ działanie programu")                    exit      ;;
        *) zenity --error --text "Nic nie wybrałeś. Spróbuj ponownie"
    esac
    
  19. Skrypt odlicza czas i po jakim wykonuje czynność, którą sobie zażyczymy. W menu głównym programu wszystko można sobie ustawić.

    Kod: Zaznacz cały

    #!/bin/bash
    
    clear
    
    echo "Witaj w tekstowym wyłączniku."
    echo "Wprowadź liczbę minut do odliczenia."
    echo -n "> "
    read ileminut
    
    ilesekund=$[$ileminut*60]
    
    echo "Odliczanie będzie trwało $ilesekund sekund."
    
    function list
    {
    	case "$1" in
    	a)
    		clear
    		echo "1) Czas: $ilesekund sek. ($ileminut min.) - zmień."
    		echo "2) Po zakończeniu: $pozak"
    		echo "3) Rozpocznij odliczanie."
    		echo "4) Zakończ"
    		
    		echo -n "> "
    		read menu
    		case "$menu" in
    		1)
    			echo
    			echo "Wprowadź nowy czas"
    			echo -n
    			read ileminut
    			ilesekund=$[$ileminut*60]
    			list a
    			;;
    		2)
    			list b
    			list a
    			;;
    		3)
    			dodaj
    			list a
    			;;
    		4)
    			clear
    			exit 0
    			;;
    		*)
    			clear
    			echo "Błędny wybór..."
    			sleep 2
    			list a
    		esac
    		;;
    	b)
    		echo "1) Wyłącz komputer"
    		echo "2) Uruchom ponownie"
    		echo "3) Wykonaj polecenie"
    		echo
    		echo -n "> "
    		echo
    		read poz
    		case "$poz" in
    		1)
    			pozak1="shutdown -h now"
    			pozak="Wyłączenie komputera"
    			;;
    		2)
    			pozak1="shutdown -r now"
    			pozak="Ponowne uruchomienie komputera"
    			;;
    		3)	
    			echo "Wprowadź dowolne polecenie systemowe."
    			echo -n "> "
    			read pozak1
    			pozak="Polecenie systemowe: $pozak1"
    			;;
    		esac
    		;;
    	esac
    }
    
    function pokaz
    {
    	clear
    	echo "Pozostało odliczania: $ilesekteraz sek. / $ilesekund sek. ($ileminut min.)"
    	dodaj
    }
    
    function dodaj
    {
    	if [ "$ilesekteraz" = "$ilesekund" ]
    	then
    		$pozak1
    	else
    		if [ "$juz" = "tak" ]
    		then
    			sleep 1
    			ilesekteraz1=$[$ilesekteraz+1]
    			ilesekteraz=$ilesekteraz1
    			pokaz
    		else
    			juz=tak
    			pokaz
    		fi
    	fi
    }
    
    list a
    
  20. Hasła - generowanie dla tych co muszą zmieniach hasła np. co tydzien.

    Kod: Zaznacz cały

    #!/usr/bin/perl -w
    system "clear";
    use Term::ANSIColor;
    print color("blue"),"Hmm wymyślę hasła .. :) \n", color("reset");
    print color("green"),"Podaj długość hasła (cyfrą) ",color("reset");
    $li = <STDIN>;
    if ($li lt "1")
    { print color("red"),"nic nie wprowadzono...!,kończe program\n", color("reset");exit}
    print color("green"),"Podaj ilość haseł (cyfrą) ",color("reset");
    $powt =<STDIN>;
    if ($powt lt "1")
    { print color("red"),"brak wszystkich danych...!, kończe program.\n",color("reset");exit}
    print "Ok, rozpoczynam generowanie haseł\n";
    $ile = $powt;
    for (1 ..$powt)
    {
    { @lines = `pwgen -s -y $li`;print color("white"),"hasło..     ",color("reset");}foreach (@lines)
    {print;}
    }
    
  21. Skrypt pokazujący zużycie transferu (prędkość) przez aktualnie uruchomione aplikacje/usługi itp.

    Kod: Zaznacz cały

    #!/bin/bash
    max_chars=100 # maksymalna liczba znaków na konsoli (dlugosc paska wykresu)
    max_down_speed=65536 # maksymalna prędkość pobierania w bajtach (tutaj 65536 B = 64 KB = 512Mb)
    
    function get_speed()
    {
    	speed=`cat /proc/net/dev | grep eth0`
    	if [ "$1" == 'up' ]; then
    		speed=`echo $speed | awk '{print $9}'`
    		last=$last_upl
    		last_upl=$speed
    	else
    		speed=`echo $speed | awk '{print $1}' | awk -F":" '{print $2}'`
    		last=$last_down
    		last_down=$speed
    	fi
    	speed=$[ $speed - $last ]
    }
    
    function kb()
    {
    	bytes=$[$1 * 100 / 1024]
    	val=`echo $bytes | sed 's/\([[:digit:]]*\)\([[:digit:]]\{2\}\)/\1.\2/g'`
    	if [ `echo $val | wc -m` == 4 ]; then
    		val="0$val"
    	elif [ `echo $val | wc -m` == 3 ]; then
    		val="0.$val"
    	elif [ `echo $val | wc -m` == 2 ]; then
    		val="0.0$val"
    	fi
    }
    
    function wykres()
    {
    	perc=$[$1 * 100 / $max_down_speed]
    	print_chars=$[$perc/ (100 / $max_chars)]
    	str='['
    	for s in `seq 0 $max_chars`
    	do
    		if [ $s -lt $print_chars ]; then
    			str+='#'
    		else
    			str+='-'
    		fi
    	done
    	str+=']'
    }
    
    last_upl=`cat /proc/net/dev | grep eth0 | awk '{print $9}'`
    last_down=`cat /proc/net/dev | grep eth0 | awk '{print $1}' | awk -F":" '{print $2}'`
    sleep 1
    echo -e "\n"
    i=1
    
    while [ true ]
    do
    	get_speed 'up'
    	kb $speed
    	upl_speed=$val
    	
    	get_speed 'down'
    	wykres $speed
    	wykres=$str
    	down_sum=$[$down_sum + $speed]
    	kb $speed
    	down_speed=$val
    	
    	down_avg=$[$down_sum/$i]
    	kb $down_avg
    	down_avg=$val
    	
    	echo -e "\e[2A$wykres"
    	echo -e "Download: $down_speed KB/s\e[K\tUpload: $upl_speed KB/s\e[K\tDownload Avg: $down_avg KB/s"
    	i=$[$i+1]
    	sleep 1
    done
    
  22. Skrypt pobierający angielskie słówko i idiom dnia z serwisu ang.pl:

    Kod: Zaznacz cały

    #!/bin/bash
    
    #Skrypt pobierający słówko i idiom dnia z serwisu ang.pl
    #stworzone przez SCT/Adawo <adawo.roag@gmail.com>
    #na licencji GPL 
    
    #Pobieramy słówko dnia...
    wget "http://www.ang.pl/slowko_dnia.php?today=1&print=1" -q -O /tmp/slowko_dnia
    #usuwamy tagi html | kodowanie z iso-8859-1 na iso-8859-2 | 
    html2text -nobs /tmp/slowko_dnia | iconv -f iso-8859-2 | sed -e "s/\ \{2\,\}//g; s/\\[img[a-zA-Z0-9 ./\n:]*\]//g; s/\\[http[a-zA-Z0-9 ./\n:]*\]//g; s/\\[Unknow[a-zA-Z0-9 ./\n:]*\]//g;" > /tmp/slowko_tmp
    
    
    #S£ÓWKO DNIA
    word=$(echo `cat /tmp/slowko_tmp | head -n 22 | tail -n 1 | sed -e "s/\[[a-zA-Z\/]*//g"`) #Slowko dnia
    
    def_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*DEFIN*" -b | head -c 3`)
    def_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | head -c 3`)
    word_definiction=$(echo `cat /tmp/slowko_tmp | tr "\n" "  " | cut -b "$def_start-$def_end" | sed -e "s/DEFINITION: //g"`)
    
    #wycinamy przykład
    exa_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANS" -b | head -c 3`)
    exa_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | head -c 3`)
    word_example=$(echo `cat /tmp/slowko_tmp | tr "\n" "  " | cut -b "$exa_start-$exa_end" | sed -e "s/EXAMPLE: //g"`) 
    
    #translacja
    word_translation=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANSLATION: " | head -n 1 | sed -e "s/POLISH TRANSLATION: //g"`)
    
    #IDIOM DNIA:
    idiom_start=$(echo `cat /tmp/slowko_tmp | grep -e "IDIOM OF THE DAY" -n | head -c 2`) 
    idiom=$(echo `cat /tmp/slowko_tmp | head -n $(expr $idiom_start + 2) | tail -n 1`)
    
    exa_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | tail -n 1 | head -c 3`)
    exa_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANS" -b | tail -n 1 | head -c 3`)
    idiom_example=$(echo `cat /tmp/slowko_tmp | tr "\n" "  " | cut -b "$exa_start-$exa_end" | sed -e "s/EXAMPLE: //g"`) 
    
    idiom_translation=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANSLATION: " | tail -n 1 | sed -e "s/POLISH TRANSLATION: //g"`)
    
    #WYPISUJEMY:
    echo -e "\033[0;31mS£ÓWKO DNIA:\033[0m $word"
    echo -e "\033[0;31mDEFINICJA:\033[0m $word_definiction"
    echo -e "\033[0;31mPRZYK£AD:\033[0m $word_example"
    echo -e "\033[0;31mTRANSLACJA:\033[0m $word_translation"
    echo 
    echo -e "\033[0;31mIDIOM:\033[0m $idiom"
    echo -e "\033[0;31mPRZYK£AD:\033[0m $idiom_example"
    echo -e "\033[0;31mTRANSLACJA:\033[0m $idiom_translation"
    
    #Sprzatamy po sobie śmeci...
    rm /tmp/slowko_dnia /tmp/slowko_tmp
    
  23. Nakładka na kompilator (c/c++).

    Kod: Zaznacz cały

    #!/bin/bash
    
    clear
    echo -e "\t\t\t\t  ABC++ v0.1\n\n"
    	if [ -d ~/abc++ ]
    	then
    	echo -e "Katalog abc++ istnieje\n"
    	else
    	mkdir ~/abc++/
    	echo -e "Utworzono katalog 'abc++' w folderze domowym\n"
    	fi
    cd ~/abc++/
    	if [ -e ~/abc++/conf.txt ]
    	then
    	d=`cat conf.txt| head -1`
    	e=`cat conf.txt| head -2| tail -1`
    	u=`cat conf.txt| tail -1`
    	else
    	d=$PWD
    	e="cpp"
    	u="c++"
    	fi
    cd $d
    c=1
    while [ $c==1 ]
    do
    echo -e "Kody zrodlowe musza byc umieszczone w tym folderze: $d\n"
    echo -e "Domyslne rozszerzenie to: $e\n"
    echo -e "Wlaczony kompilator to: $u\n--------------------------------------------------------------------------------"
    echo -e "\n\t\t\t    1 - kompiluj nowy plk"
    echo -e "\t\t\t    2 - kompiluj ponownie"
    echo -e "\t\t\t    3 - edytuj kod źródłowy"
    echo -e "\t\t\t    4 - ustawienia"
    echo -e "\t\t\t    5 - wyjdz"
    read b
      case $b in
        "1")echo -e "Podaj nazwę pliku do kompilacji:\n"
    	read a
    	clear
    	if [ -e $d/$a.$e ]
    	then
    	$u $a.$e -Wall -o $a.o 2> $a.txt
    		if [ -e $d/$a.txt ]
    		then
     		mv  $d/$a.txt ~/abc++/logi
    		fi
    	export $a
    	xterm -e "./$a.o; bash" 
    	gedit $a.cpp
    	else
    	echo -e "\a   Plik o podanej nazwie nie istnieje, sprawdz rozszerzenia, oraz sciezke\n\t\tdo katalogu z kodami zrodlowymi - sprawdz ustawienia\n\n"
    	fi;;
       "2") clear
    	if [ -e $d/$a.$e ]
    	then
    	$u $a.$e -Wall -o $a.o 2>> $a.txt
    		if [ -e $d/$a.txt ]
    		then
     		mv  $d/$a.txt ~/abc++/logi
    		fi
    	export $a
    	xterm -e "./$a.o; bash" 
    	gedit $a.cpp;
    	else
    	echo -e "\a   Plik o podanej nazwie nie istnieje, sprawdz rozszerzenia, oraz sciezke\n\t\tdo katalogu z kodami zrodlowymi - sprawdz ustawienia\n\n"
    	fi;;
       "3") gedit $a.cpp;;
       "4") clear
    	echo 'Aktualne ustawienia:'
    	echo -e "\nKody zrodlowe musza byc umieszczone w tym folderze: $d\n"
    	echo -e "Domyslne rozszerzenie to: $e\n"
    	echo -e "Wlaczony kompilator to: $u\n--------------------------------------------------------------------------------"
            echo -e "\t\t\t1 - zmien folder kodow zrodlowych"
    	echo -e "\t\t\t2 - zmian domyslne rozszerzenie kodow zrodlowych"
    	echo -e "\t\t\t3 - zmien kompilator"
    	echo -e "\t\t\t4 - wyczysc logi"
    	echo -e "\t\t\t5 - wyjdz"
    	read c
    		case $c in
        		"1")echo -e "Podaj domyslną sciezke do folderu z kodami zrodlowymi:\n"
    		read d
    		cd $d;;
    		"2")echo -e "Podaj domyslną rozserzenie:\n"
    		read e;;
    		"3")echo -e "Podaj nazwe kompilatora: c - gcc, c++ - g++:\n"
    		read u;;
    		"4")cd ~/abc++/logi
    		rm *.txt
    		clear;;
    		"5") clear;;
    		*) echo "Nic nie wybrałeś";;
    		esac;;
        "5") cd ~/abc++/
    	echo $d > conf.txt 
    	echo $e >> conf.txt 
    	echo $u >> conf.txt 
    	exit;;
        	*) echo "Nic nie wybrałeś";;
    esac
    done
    
Chyba tyle jak na razie.

Pozdrawiam.
Zablokowany