#!/bin/bash 
#set +u #set -e
# skriptiajuri, näppäinversio  petteriIII 18.11.2016
# reset  $TERM # varmistaa että pääte alkaa toimintansa asetukset alkutilassa
# stty sane # Joskus pääte saa järjettömiä asetuksia ohjelmien sivuvaikutuksena ja tämä palauttaa arvot järkeviksi. Onko parempi: <ctrl+j>stty sane<ctrl+j> 
# set -o errtrace  # virhemääritykset läpäisevät time-funktion  
echo 'Skriptiajuri käynnistyy. Tässä koneessa on BASH:in versio: '$BASH_VERSION'.  Versio 4.0 toimii jotenkin ja ylemmät versiot kunnolla' 
echo 'tämän koneen käyttöjärjestelmä-versio: '$(lsb_release -a | awk '{print $2}' | tr "\n" " ")
[[ -d /sys/firmware/efi ]] && echo 'kone on bootattu UEFI-muodossa' || echo 'konetta ei ole bootattu UEFI-muodossa'
du -b ~/OMATSKRIPTIT | awk '{sum += $1} END {print "~/OMATSKRIPTIT kansio käyttää:   " sum "  sanaa"}'

# ls /media/ubuntu/$(apu=$(mount | grep /media/ubuntu | awk '{print $3}'); echo ${apu##*/}) | grep -v lost+found # tulostaa tikulla: petteri
# echo /media/ubuntu/*/OMATSKRIPTIT # tulostaa:  /media/ubuntu/tikku/OMATSKRIPTIT
#[[ -d /home/$USER/OMATSKRIPTIT ]] && kanta="/home/$USER" || kanta="/media/ubuntu/*/OMATSKRIPTIT" # tuo * "/media/ubuntu/*/OMATSKRIPTIT":ssä käy läpi kaikki muistitikut
#kanta=''; for n in $( ls /home grep -v ubuntu); do [[ -d /home/$n/OMATSKRIPTIT ]] && kanta=/home/$n; done; [[ ! $kanta ]] && for n in $(ls /media/$USER); do [[ -d /media/ubuntu/$n/OMATSKRIPTIT ]] && #kanta=/media/ubuntu/$n; done; echo 'skriptiajuria ajetaan paikasta: '$kanta'/OMATSKRIPTIT' # mikäli kovalevyllä jonkun kotona on OMATSKRIPTIT niin käytetään sitä - muuten käytetään muistitikulla #olevaa OMATSKRIPTIT kansiota
#kanta=''; kanta=$([[ -d /home/$USER/OMATSKRIPTIT ]] && echo "/home/$USER" || apu=("$(find  /media -maxdepth 4  | grep -w OMATSKRIPTIT | grep -v OMATSKRIPTIT/ | grep -v \(*\) )") && for n in ${apu[*]}; do echo $(stat -t $n | awk '{print $13" "$1}'); done | sort -k1 -n | tail -1 | awk '{print $2}' ) #lopusta pois /OMATSKRIPTIT
kanta=''; kanta=$([[ -d /home/$USER/OMATSKRIPTIT ]] && echo "/home/$USER" || apu=("$(find  /media -maxdepth 4  | grep -w OMATSKRIPTIT | grep -v OMATSKRIPTIT/ | grep -v \(*\) )") && for n in ${apu[*]}; do echo $(stat -t $n | awk '{print $13" "$1}'); done | sort -k1 -n | tail -1 | awk '{print $2}' | sed 's/\/OMATSKRIPTIT//')
echo $kanta; read

. $kanta/OMATSKRIPTIT/FUNKTIOKIRJASTO/Näppäimistön_funktiot        # kirjastot ladataan näin, jotta editoitaessa kirjastot luettaisiin editoriin 
. $kanta/OMATSKRIPTIT/FUNKTIOKIRJASTO/Skriptiajurin_funktiot       # ladataan toinen kirjasto
echo varmistetaan_että_kovalevyn_OMATSKRIPTIT_on_uudempi_kuin_muistitikulla_oleva; varmista_että_kovalevyn_OMATSKRIPTIT_on_uudempi_kuin_muistitikulla_oleva
Osioselvitys
trap LopetaSkriptiJaPalaaSkriptiajuriin SIGINT                     # CTRL-c kutsuu kirjastossa tätä valikkonäppäimille määriteltyä funktiota 
# trap 'echo -e "virheenkäsittelyä kutsuttu skriptistä:"${0}".   Kutsu tehtiin riviltä:"${BASH_LINENO[0]}"\n\n"' ERR 
# trap 'echo virherivi:${LINENO[@]};echo ${FUNCNAME[@]} ; read' ERR 
napit="f2=koodaa, f3=ohjeet, f4=dokumentoi, end=erikoistoimet, home=kirjanmerkit, insert=tarkastele tuloksia" 
export -f ValitseValittavistaYksi LopetaSkriptiJaPalaaSkriptiajuriin command_not_found_handle # Kaikissa skripteissä tunnetaan nämä käskyt jos niitä ajetaan skriptiajurilla  
LueMistäKansiostaAloitetaan 
LueMissäOnPoikettuArkistoon
täytä_valittavat
while true
do
  VarmistaEttäArkistotOnTehty
  TalletaMistäKansiostaEnsikerrallaAloitetaan
  HaeSenRivinNumeroJollaViimeksiTyöskenneltiinTässäKansiossa # täytä_valittavat
  ValitseValittavistaYksi "kansio:$KansionNimi" "$napit"
  TalletaSenRivinNumeroJollaNytTyöskennelläänTässäKansiossa 
  ToimintaValinnanPerusteella
  # MikäliLöytyiMäärittelemätönFunktioNiinLisääSeSkriptiin
  echo -en "\033c" #sync # kirjoittaa cachet levylle: siis jos kone kaatuu tämänjälkeen niin kaikki on kirjoitettu levylle
done
