Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Melmacian - 01.07.07 - klo:16.21

Otsikko: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Melmacian - 01.07.07 - klo:16.21
Ideana on tosiaan kerätä tähän ketjuun erinäisiä pieniä elämää helpottavia scriptejä. Tälläisiä ketjuja löytyy jo englanninkielisiltä foorumeilta, joten ajattelin, että olisi hauska perustaa vastaava tännekkin.

Eli heitelkääpä sellaisia pikku scriptejä tai aliaksia, jotka ovat pysyneet käytössä pidempään kuin sen ensimmäisen kokeilu kerran.

Heitänpä omat helmeni. Osa on löydetty jostain ja osa on itse tehtyjä.
/usr/bin/extall
Koodia: [Valitse]
#!/bin/bash

# Extract files from any archive
# Usage: extall <archive_name>

ex() {
       if [ -f "$1" ] ; then
               case "$1" in
                       *.tar.bz2) tar xjvf "$1" ;;
                       *.tar.gz) tar xzvf "$1" ;;
                       *.bz2) bunzip2 "$1" ;;
                       *.rar) rar x "$1" ;;
                       *.gz) gunzip "$1" ;;
                       *.tar) tar xvf "$1" ;;
                       *.tbz2) tar xjvf "$1" ;;
                       *.tgz) tar xzvf "$1" ;;
                       *.zip) unzip "$1" ;;
                       *.Z) uncompress "$1" ;;
                       *.7z) 7z x "$1" ;;
                       *) echo "'$1' cannot be extracted via
$(basename "$0")" ;;
               esac
       else
               echo "'$1' is not a valid file"
       fi
}

for i in "$@"; do ex "$i"; done
Tämän löysin Ubuntuforums.orgista. Tämän avulla pystyy purkamaan lähes minkä tahansa paketin yhdellä komennolla. Argumenteiksi voidaan antaa useita eri paketteja. Kätevää, ainakin itselläni on ollut suuria vaikeuksia muistaa miten bz2-paketit aukeaa yms.

/usr/bin/video2avi
Koodia: [Valitse]
#!/bin/bash

# Käyttö: video2avi <videotiedosto>

BITRATE=1200

video2avi() {
        if [ -f "$1" ] ; then
                  mencoder "$1" -ovc xvid -xvidencopts pass=1 -oac mp3lame -lameopts vbr=3 -o /dev/null
                  mencoder "$1" -ovc xvid -xvidencopts pass=2:bitrate=$BITRATE -oac mp3lame -lameopts vbr=3 -o "$1.avi"
        else
                echo "'$1' is not a valid file"
        fi
}
for i in "$@"; do video2avi "$i"; done
Scripti joka muuntaa videotiedostoja XviD-pakatuiksi avi-tiedostoiksi. Tein tämän digikamerani videoita varten jotka ovat quicktime-pakattuja. XviD-videot toimivat paljon paremmin Linuxissa ja ovat myös kooltaan vain kymmenyksen  alkuperäisestä. Kuvanlaatu ei tässä tapauksessa juurikaan laske.


Joskus tuli tehtyä tälläinen scripti kuvien kutistamiseen internet jakelua varten:
http://www.suuronen.org/kutista
Edelleenkin on aktiivisessa käytössä.


Aliaksia:
Koodia: [Valitse]
# Näyttää ip:n
alias myip='ifconfig eth0|grep inet|cut -d : -f2|cut -d " " -f1'
# Näyttää eniten cpu/muistia käyttävät sovellukset
alias maxcpu="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'"
alias maxmem='ps -e -o rss=,args= | sort -b -k1,1n | pr -TW$COLUMNS'



Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eliasj - 01.07.07 - klo:19.02
Minun aliaksiani:
Koodia: [Valitse]
# Kirjoittaa ISOn cd:lle (kiitos janne tästä)
alias writecd='sudo cdrecord -v -pad -dev ATAPI:/dev/hdc speed=8'

# Kirjautuu ulos
alias ulos='killall -u elias'

# Apt-get lyhennyksiä
alias poista='sudo apt-get --purge remove'
alias asenna='sudo apt-get install'
alias siivoa='sudo apt-get clean'
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: MikkoJP - 10.07.07 - klo:14.27
Tekstitiedoston sanat esiintymistiheyden mukaan:

Koodia: [Valitse]
#!/bin/bash
#
# luettelo tekstitiedoston sanoista niiden esiintymismäärien mukaan järjestettynä
#
# käyttö: topwords tiedostonnimi
#
cat $1 | tr 'A-Z' 'a-z'| tr ' ' '\012'|sort|uniq -c|sort -rn

Jos nyt joku muu tällaista tarvitsee  ;D

.bashrc otteita:

Koodia: [Valitse]

# jotkut ohjelmat lukevat tästä ympäristömuuttujasta oletuseditorin
export EDITOR=/usr/bin/emacs

# seuraavista kotihakemiston alihakemistoista etsitään
# myös käynnistettäviä ohjelmia. Tämä on hyödyllinen esimerkiksi
# omien skriptien kirjoittajalle tai käyttäjän kotihakemistoonsa
# asentamien ohjelmien ajamiseksi (ei tarvitse muistaa polkua).
#
PATH="${PATH}:~/scripts:~/bin"     #lisätään hakemistot ~/scripts
                                              # ja ~/bin polkuun
export PATH

# aliakset helpottavat komentoriviä käyttävän elämää
alias dir='ls -l | more'
alias ll='ls -l'
alias ls='ls --color'
alias df='df -h'

LaTeX luo paljon erilaisia aputiedostoja latoessaan tekstiä. Kun sopiva postscript tai pdf on luotu, ajan seuraavan skriptin putsatakseni hakemiston:

Koodia: [Valitse]
#!/bin/bash

# tässä ei ole mitään varmistuksia, joten älä käytä tätä
# ellet tiedä tarkoin, mitä teet ja missä hakemistossa :-)
#

echo "Poistetaan latex-aputiedostot"
rm *.log
rm *.dvi
rm *.aux
rm *~
rm *.blg
rm *.url
rm *.bbl
rm *.toc

Tuohon voisi tietysti lisätä argumentiksi tiedostonnimen, ettei tulisi turhia tiedostoja poistettua, pelkästään tiedostonnimi.log ja niin edelleen.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Nakkis - 10.07.07 - klo:15.48
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista. Tämän pikku skriptin avulla voi purkaa kaikki .tar, .tar.gz ja tar.bz2 tiedostot ilman kryptisiä optioita. Laita tämä vaikkapa /usr/local/bin/untar nimiseen tiedostoon.

Koodia: [Valitse]
#!/bin/bash

TYPE="${1:${#1}-3}"

#If it is not a compressed file tar will deal with it!

[[ "${2}" != "" ]] && [[ -e "${2}" ]] && cd "${2}"

[[ ! -e "${1}" ]] && exit 1

case $TYPE in
        [bB]z2)
                echo "bz2 file"
                tar -jxvf "${1}"
                ;;
        [tT]ar)
                echo "tar file"
                tar -xpvf "${1}"
                ;;
        .[Gg][[Zz])
                echo "gz2 file"
                tar -xpzf "${1}"
                ;;
        *)
                echo "Not a compressed File!"
                ;;
esac
exit 0
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 10.07.07 - klo:16.01
Koodia: [Valitse]
...
rm *.log
rm *.dvi
rm *.aux
rm *~
rm *.blg
rm *.url
rm *.bbl
rm *.toc

Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?

Minun näppärimpiin aliaksiini kuului 4DOSsissa/4OS2:ssa aina mcd, joka loi hakemiston ja siirtyi sinne. Nyt zsh:ssa sama on toteutettava funktiona:

Koodia: [Valitse]
mcd () { mkdir -p $* && cd $* }

Tuo ei komentorivivalitsimia siedä :) mutta toimii muuten kuin junan vessa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 10.07.07 - klo:17.41
Tuo ei komentorivivalitsimia siedä :) mutta toimii muuten kuin junan vessa.

Toimii kuin junan vessa eli p*ska leviää radalle?

Koodia: [Valitse]
$ ls
$ mcd foo bar
mcd:cd: string not in pwd: foo
$ ls
bar  foo

Hakemistoja siis luotiin kaksi eikä kumpaankaan menty sisään. Tuo tosin on helppo korjata.

Koodia: [Valitse]
mcd () { mkdir -p -- "$*" && cd "$*" }

Nyt jos komentorivillä annetaan useampia parametreja niin ne yhdistetään välilyönneillä yhdeksi parametriksi. Varsin näppärää jos halutaan luoda hakemisto jossa on välilyöntejä nimessä. Lisäsin tuohon myös suojauksen komentorivivalitsimia muistuttavien parametrien varalta.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 10.07.07 - klo:17.55
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista.

Niitähän onkin huimat kolme variaatiota jotka poikkeavat toisistaan yhdellä parametrilla ;)
Lainaus
Koodia: [Valitse]
...
case $TYPE in
        [bB]z2)
                echo "bz2 file"
                tar -jxvf "${1}"
                ;;
        [tT]ar)
                echo "tar file"
                tar -xpvf "${1}"
                ;;
        .[Gg][[Zz])
                echo "gz2 file"
                tar -xpzf "${1}"
                ;;
...

Ei ole kovin loogista että jokainen paketti puretaan eri tavalla ja lisäksi parametrin p käyttäminen aiheuttaa todennäköisesti virheilmoituksia jos pakettia ei pureta root-oikeuksilla ja paketti sisältää jonkun muun käyttäjätunnuksen omistuksessa olevia tiedostoja.

Viimeinen case-ehto lienee myös rikki sillä siinä on avaava hakasulku kaksi kertaa peräkkäin: ".[Gg][[Zz])"

Kannattaa melkein korvata tuo ensimmäisestä Epelin viestistä löytyvällä purkuskriptillä.

Itse käyttäisin purkamiseen seuraavia komentoja:
Koodia: [Valitse]
tar -xvjf "$1"
tar -xvf "$1"
tar -xvzf "$1"

Lisäksi opettelisin ne ulkoa ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 10.07.07 - klo:18.05
Tekstitiedoston sanat esiintymistiheyden mukaan:

Koodia: [Valitse]
#!/bin/bash
#
# luettelo tekstitiedoston sanoista niiden esiintymismäärien mukaan järjestettynä
#
# käyttö: topwords tiedostonnimi
#
cat $1 | tr 'A-Z' 'a-z'| tr ' ' '\012'|sort|uniq -c|sort -rn

Tuossa voi yhdistää tr-komennot yhteen. Lisäksi itse olen tottunut käyttämään \n-merkkiä \012 sijasta.
Koodia: [Valitse]
cat $1 | tr 'A-Z ' 'a-z\n' | sort | uniq -c | sort -rn

Toisaalta sort ja uniq sisältävät myös ignore-case-parametrit. En tosin tiedä osaavatko ne ottaa käytettyä merkistöä huomioon joten niillä ei välttämättä ole siltä osin saavutettavissa mitään lisähyötyä.

Lainaus
Koodia: [Valitse]
echo "Poistetaan latex-aputiedostot"

Kannattaa asentaa rubber. Se helpottaa LaTeX-käännösten tekemistä ja tarjoaa myös parametrin hakemiston siivoamiseen. Se muun muassa osaa kääntää dokumentin tarvittaessa riittävän monta kertaa uudelleen jotta kaikki ristiviittaukset ja hakemistot tulevat numeroiduiksi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Nakkis - 10.07.07 - klo:18.33
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista.

Niitähän onkin huimat kolme variaatiota jotka poikkeavat toisistaan yhdellä parametrilla ;)
Lainaus
Koodia: [Valitse]
...
case $TYPE in
        [bB]z2)
                echo "bz2 file"
                tar -jxvf "${1}"
                ;;
        [tT]ar)
                echo "tar file"
                tar -xpvf "${1}"
                ;;
        .[Gg][[Zz])
                echo "gz2 file"
                tar -xpzf "${1}"
                ;;
...

Ei ole kovin loogista että jokainen paketti puretaan eri tavalla ja lisäksi parametrin p käyttäminen aiheuttaa todennäköisesti virheilmoituksia jos pakettia ei pureta root-oikeuksilla ja paketti sisältää jonkun muun käyttäjätunnuksen omistuksessa olevia tiedostoja.

Viimeinen case-ehto lienee myös rikki sillä siinä on avaava hakasulku kaksi kertaa peräkkäin: ".[Gg][[Zz])"

Kannattaa melkein korvata tuo ensimmäisestä Epelin viestistä löytyvällä purkuskriptillä.

Itse käyttäisin purkamiseen seuraavia komentoja:
Koodia: [Valitse]
tar -xvjf "$1"
tar -xvf "$1"
tar -xvzf "$1"

Lisäksi opettelisin ne ulkoa ;)
Puhut varmasti totta. Löysin tuon skriptin joskus ammoina aikoina ubuntufoorumeilta ja lisäksi Epelin skripti näyttää todellakin paljon paremmalta. ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: MikkoJP - 10.07.07 - klo:21.45
Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?

Mitä kustannuksia lasket? Säästäähän siinä tietenkin muutamakymmentä tavua kovalevytilaa...

Tuota sinun versiotasi on hankalampi hahmottaa ruudulta, liian helposti eksyy välilyönti väärään paikkaan ja tulee tuhoa.  Mutta toisaalta: tuo menisi aliaksena ihan hyvin.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 10.07.07 - klo:23.03
Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?

Mitä kustannuksia lasket? Säästäähän siinä tietenkin muutamakymmentä tavua kovalevytilaa...

”Kustannustehokas” nyt oli lähinnä vitsi – vaikka käynnistäähän minun versioni rm:n vain kerran ja tekee siis globbauksenkin vain kerran. Siitä voisi jossain tilanteessa olla se etu, että vaikka jokin toinen prosessi tuottaisi tiedostoja samaan aikaan kun skriptiä ajetaan, ne eivät poistuisi.

Tuota sinun versiotasi on hankalampi hahmottaa ruudulta, liian helposti eksyy välilyönti väärään paikkaan ja tulee tuhoa.

Eihän se skriptissä niin haittaa: se tehdään kerran ja testataan, sen jälkeen se vain toimii.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 11.07.07 - klo:16.01
Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?
Tuota sinun versiotasi on hankalampi hahmottaa ruudulta, liian helposti eksyy välilyönti väärään paikkaan ja tulee tuhoa.  Mutta toisaalta: tuo menisi aliaksena ihan hyvin.

Voihan aina tehdä kompromissin... ;)

Koodia: [Valitse]
rm -f --        \ 
        *.log   \
        *.dvi   \
        *.aux   \
        *~      \
        *.blg   \
        *.url   \
        *.bbl   \
        *.toc

Bonuksena komennolle annettavat valitsimet tarvitsee kirjoittaa vain kerran.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Fa1r - 15.07.07 - klo:16.18
Pakko todeta että "mgronber knows the script-fu" :)

Omalta osaltani on todettava ettei minun skriptejäni voi enää oikein kutsua "näppäriksi" niiden sirpaloituessa pitkin toimintaympäristöä ja kiintolevyjä.

cat last-words | head -n 1
"Oho, täältä löyty tämmönen, mitäköhän tää tekee" :P
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 15.07.07 - klo:18.35
Koodia: [Valitse]
$ ls
$ mcd foo bar
mcd:cd: string not in pwd: foo
$ ls
bar  foo

Hakemistoja siis luotiin kaksi eikä kumpaankaan menty sisään.

Eipä ole koskaan tullut vastaan tilannetta, jossa haluaisin luoda kaksi hakemistoa ja siirtyä kumpaankin yhtä aikaa :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: nebula - 21.07.07 - klo:13.14
mounttaa imaget /media kansioon :
 Nautilus- scripts:

Koodia: [Valitse]
# Set some script variables
the_image=$1
image_name=`echo $the_image | sed -e 's/\.iso$//;s/\.img$//;s/\.nrg$//'`
if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "x-nautilus-desktop:///" ]; then
image_path=$HOME"/Desktop"
else
image_path=`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed -e 's/^file:\/\///; s/%20/\ /g'`
fi
gui=`which zenity`

#  Obtain password when required
gksudo -u root -k -m "Please enter your system password:" "sudo -v"
passresult=$?

#  Mounter function
iso_mount()
{
if [ "$passresult" == "3" ]; then
exit 1
fi
if [ "$passresult" == "2" ]; then
$gui --info --title "ISO Mounter" --text "Cancelled!"
exit 0
fi
if [[ "$the_image" =~ "\.volume$" ]]; then
image_name=`echo "$image_name" | sed -e 's/\.volume$//'`
iso_umount
exit 0
fi
if ! [[ "$the_image" =~ "\.iso$" || "$the_image" =~ "\.img$" || "$the_image" =~ "\.nrg$" ]]; then
$gui --question --title "ISO Mounter" --text "Select, "Ok" if you're sure that $the_image is an image file."
if [ "$?" == "1" ]; then
$gui --info --title "ISO Mounter" --text "Cancelled!"
exit 1
fi
fi
sudo mkdir /media/"$image_name"
#  Support for both normal .iso and Nero .nrg files (somewhat experimental for .nrg support - let me know if it works for you!)
if [[ "$the_image" =~ "\.nrg$" ]]; then
if sudo mount -o loop,offset=307200,users -t iso9660 "$image_path/$the_image" /media/"$image_name"; then
nautilus /media/"$image_name" --no-desktop
else
sudo rmdir /media/"$image_name"
$gui --error --title "ISO Mounter" --text "Nero image file, \"$the_image\" could NOT be mounted!"
exit 1
fi
else
if sudo mount -o loop,users -t iso9660 "$image_path/$the_image" /media/"$image_name"; then
nautilus /media/"$image_name" --no-desktop
else
sudo rmdir /media/"$image_name"
$gui --error --title "ISO Mounter" --text "ISO image file, \"$the_image\" could NOT be mounted!"
exit 1
fi
fi
}

#  Unmounter function
iso_umount()
{
if [[ "$passresult" == "2" || "$passresult" == "3" ]]; then
exit 1
fi


if sudo umount "/media/$image_name"; then
$gui --info --text "Un-mounted /media/$image_name/."
sudo rmdir "/media/$image_name/"
else
if [[ `ls -l "/media/$image_name" | grep "total 0"` != "" ]]; then
if $gui --question --title "ISO Mounter" --text "Mount point, \"/media/$image_name\" was found un-mounted!  Re-mount it?"; then
iso_mount
else
if sudo rmdir "/media/$image_name/"; then
$gui --info --text "Mount point, \"/media/$image_name\" removed!"
else
$gui --error --title "ISO Mounter" --text "Could NOT remove mount point, \"/media/$image_name!\""
fi
fi
else
$gui --error --title "ISO Mounter" --text "Could NOT un-mount $the_image!"
fi
fi
}

#  Validate the prospective image file and decide whether to mount or un-mount it.
if [[ -d "$image_path/$the_image" ]]; then
$gui --error --title "ISO Mounter" --text "\"$image_path/$the_image\" is NOT an image file!"
exit 1
fi
if [[ -d "/media/$image_name" ]]; then
iso_umount
else
iso_mount
fi
exit 0
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Fa1r - 22.07.07 - klo:00.54
Kyse oli pienistä näppäristä ;D
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Melmacian - 22.07.07 - klo:03.19
No kyllä tuo vielä aika pieni on, näppärä varmastikkin ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Melmacian - 22.07.07 - klo:17.15
Tulipa väännettyä vielä pieni scripti sop-lähetysten katseluun.

/usr/bin/playsop
Koodia: [Valitse]
#!/bin/bash

# käyttö: $ playsop sop://osoite.lähetykseen.com


# Polku sp-sc:een
SPSC=/home/epeli/temp2/sp-sc/sp-sc

# Toisto-ohjelma
PLAYER=mplayer

# Lopetetaan heti jos toisto-ohjelmaa ei ole asennettuna.
[ -z $(which $PLAYER)  ] && echo "$PLAYER ei ole asennettuna! " && exit 0
# Lopetetaan jos sop-osoitetta ei ole annettu.
[ -z $1  ] && echo "Usage: $(basename $0) <sop://url>" && exit 0


# käynnistetään sp-sc taustalle
echo "Opening broadcast..."
$SPSC $1 3908 8908  > /dev/null &

# odotetaan 15sek jotta lähetys kerkeää käynnistyä
sleep 15

# Avataan lähetys
$PLAYER http://localhost:8908/tv.asf

# Lopuksi tapetaan taustalla oleva sp-sc, kun katselu lopetaan.
killall sp-sc
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 22.07.07 - klo:18.09
Tulipa väännettyä vielä pieni scripti sop-lähetysten katseluun.

Minusta käyttöohjeet olisi hyvä tulostaa jos skripti ajetaan ilman parametreja. Lisäksi virhetilanteessa olisi hyvä palauttaa virhekoodi eli jotain muuta kuin nolla.

Yksinkertaisimmillaan tässä tapauksessa voisi ohjeet tulostaa näin:
Koodia: [Valitse]
[ $# -ne 1 ] && echo "Usage: $(basename $0) sop://osoite.lähetykseen.com" && exit 1
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Melmacian - 22.07.07 - klo:18.52
Minusta käyttöohjeet olisi hyvä tulostaa jos skripti ajetaan ilman parametreja.
Jep ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 23.07.07 - klo:09.35
Minusta käyttöohjeet olisi hyvä tulostaa jos skripti ajetaan ilman parametreja.

No joo, omaan käyttöönsä tekemiinsä ”pieniin näppäriin skripteihin” sitä ei aina viitsi vääntää...

 Lisäksi virhetilanteessa olisi hyvä palauttaa virhekoodi eli jotain muuta kuin nolla.

Lainaus
Koodia: [Valitse]
[ $# -ne 1 ] && echo "Usage: $(basename $0) sop://osoite.lähetykseen.com" && exit 1

Onpahan taas huvittava kielten sekoitus :)  Miksei sujuvaksi suomeksi ”Käyttö: ...”?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 23.07.07 - klo:11.28
Minusta käyttöohjeet olisi hyvä tulostaa jos skripti ajetaan ilman parametreja.
No joo, omaan käyttöönsä tekemiinsä ”pieniin näppäriin skripteihin” sitä ei aina viitsi vääntää...

Oma käyttö on eri asia mutta viimeistään julkaisuvaiheessa olisi hyvä lisätä ruutuun tulostuvat ohjeet. "Pienissä näppärissä" ohjeiden tulostaminen on muutenkin varsin pieni lisävaiva kun se onnistuu yhdellä rivillä ja tässäkin tapauksessa itse ohjeosuus oli jo kirjoitettu skriptiin mutta sitä ei tulostettu virhetilanteissa.

Lainaus
Lainaus
Koodia: [Valitse]
[ $# -ne 1 ] && echo "Usage: $(basename $0) sop://osoite.lähetykseen.com" && exit 1

Onpahan taas huvittava kielten sekoitus :)  Miksei sujuvaksi suomeksi ”Käyttö: ...”?

Heh... Hyvä huomio. Normaalisti pyrin välttämään sekakielisyyttä ja tässä kävi lipsahdus kun kopioin parametrin suoraan alkuperäisestä skriptistä ajattelematta sen sisältöä. Jos olisin ajatellut niin olisin kirjoittanut senkin englanniksi.

Pieni selitys siltä varalta että joku takertuu tuohon kieleen. Yleensä skriptejä tehdessäni teen ne itseäni varten ja tällöin englanti on luonnollinen valinta sillä käytän käyttöjärjestelmää englanninkielisenä. Sekakielisyys saa karvani nousemaan pystyyn. Tämä pätee myös silloin kun muokkaan muiden skriptejä mikäli niissä ei ole jo valmiiksi käytetty jotakin muuta kieltä.

En kuitenkaan halua väheksyä suomenkieltä ja arvostan käännösprojektien parissa työskenteleviä ja olen heille suuresti kiitollinen.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Fa1r - 23.07.07 - klo:15.39
Tulee itselläkin väännettyä sekakielelle melkein kaikki mahdollinen. Jostain syystä ensimmäisenä skriptiin teen käyttöohjeen ::)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 23.07.07 - klo:15.53
Jostain syystä ensimmäisenä skriptiin teen käyttöohjeen ::)

Olen kyllä itsekin tehnyt, jos skriptistä on tulossa monimutkaisempi: se auttaa hahmottamaan kokonaisuuden, joka on syntymässä, jolloin koodin vääntäminen helpottuu. Usein jo komentoriviparametreja miettiessään huomaa karkeimmat alustavat ajatusvirheensä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Melmacian - 23.07.07 - klo:16.04
Heh, itsekkin naureskelin tuolle kielien sekoitukselle. Minullakin myös tapana tehdä ohjelmat itselleni englanniksi, koska käyttöjärjestelmä on englanninkielinen, mutta nyt en viitsinyt kirjoitella kommentteja englanniksi suomifoorumille ja "käyttöliittymä" jäi vanhastaan englanniksi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 27.07.07 - klo:17.03
Seuraavan skriptinpätkän vallan unohdin mainita: se poistaa kaikki varmuuskopiotiedostot (*~, *.bak) joko nykyhakemiston tai annetun hakemiston alta.

Koodia: [Valitse]
#!/bin/sh
if [ $# -eq 0 ]; then
    DEST=`pwd`
else
   DEST=$*
fi
find $DEST \( -name \*~ -o -iname \*.bak \) -print0 | xargs -0 rm
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: koskelam - 21.08.07 - klo:14.52
Windows puolella käytin digikuvien lataukseen Downloader Pro:ta, joka latasi kuvat automaattisesti ja siirsi kuvat luontipäivämäärän (eli ei siis kuvan lataushetken, niin kuin gthumbissa) mukaan kansioihin. En löytänyt ainakaan Gthumbista tai Digikamista omainaisuutta, joka osaisi tuon, niin tein skriptin sitä varten. Jotakin kertoo ohjelmointitaidoistani, että väänsin tätä melkein kaksi päivää  :-\ Mutta nyt se toimii, ainakin jotenkin  ;D.

Käyttö: Siirry haluttuun kansioon ja kirjoita ./jklpm.sh *

Koodia: [Valitse]
#!/bin/bash
#
# JKKLPM (Järjestä Kuvat Kansioihin LuomisPäivämäärän Mukaan

# Galleria
kohde="$HOME/Galleria"

# Tarkista onko exif asennettu
if [ -z "`which exif`" ]
then
        echo "Asenna ensin exif."
echo "sudo apt-get install exif"
        exit
fi

# Aloitetaan hommat
for arg in $@
do
  pvm=`exif -i $arg | grep 0x0132 | cut -c 8-17 | sed 's/\:/\./g'`
  if [ -z "$pvm" ]
  then
    continue
  else
    echo "Luodaan kansio $kohde/$arg"
    mkdir -p $kohde/$pvm
    echo "$PWD/$arg --> $kohde/$pvm/$arg"
    mv -i $arg $kohde/$pvm
  fi
done


Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Fa1r - 02.10.07 - klo:19.59
Lisäilenpä omanikin tänne,

1 ohjelmien asennusta apt-getillä
peruskauraa, mutta tämäkin pitää lähes jokaiseen asennukseen tehdä  :-\

Koodia: [Valitse]
#!/bin/bash

(sudo apt-get install -y $1 > /dev/null 2> /dev/null && echo "Paketti $1 löytyi, asennettiin") || (echo "Haetaan $1:"; apt-cache search $1; test $(apt-cache search $1 | wc -l) == 0 && echo "Mitään ei löytynyt.")

2 firefox-laajennuspalikka, kotisivu- ja "ylös"-nappulat oikean hiirennäppäimen valikkoon
koska voit haluta niin. (huom. liite on uu-enkoodattu xpi-tiedosto, eli "uudecode homesup.txt" tuottaa xpi:n jonka voi asentaa vetämällä & pudottamalla)

[ylläpito on poistanut liitteen]
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Stanner - 25.10.07 - klo:11.25
Nämä ei ole varsinaisia scriptejä, mutta pari käskyä ja ohjelmaa löysin, jotka olivat varsin näppäriä.

Zenity(gnome) ja kdialog(KDE) käskyillä voi heittää scripteissä ruudulle erilaisia dialogeja, joissa se kysyy tietoja. Näitä tietoja voi sitten käyttää omissa scripteissään. Noilla ei voi tehdä kunnollisia graafisia käyttöliittymiä vaan niillä voi vaan hypäyttää ruudulle erilaisia valmiiksi määriteltyjä dialogeja: messageboxeja, inputboxeja, file-selectoreita ,yms.

Sitten varsin näppärä ohjelma on kommander(löytyy repoista), jolla voi tehdä jo sitten ihan kunnon graafisia käyttöliittymiä scripteille ja komennoille. Yksinkertaisimmillaan se voisi toimia esimerkiksi siten, että teet käyttöliittymän, joka kysyy erinäisiä tietoja samassa ikkunassa ja sitten kun painat jotain nappia ikkunassa, se ajaa scriptin, joka käyttää apuna ikkunassa annettuja tietoja. Kommander pystyy tekemään monimutkaisempiakin ohjelmia yllättävän nopeasti ja helposti. Miinuksena voisi sanoa, että ohjelma on suunniteltu käytettäväksi KDE työpöydällä. En tiedä kuinka hyvin toimii gnomessa. Dcop käsky ei ainakaan toimi.

Lisää tietoa saa googlettamalla: "zenity" "kdialog" "kommander". Jos olet komentorivi friikki ja tykkäät tehdä kaiken komentoriviltä, niin suosittelen ignooraamaan tämän viestin ja kyseiset ohjelmat ja komennot. ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tonde - 05.11.07 - klo:23.17
Pitihän tätä bashia vihdoin testata. Väsäsin skriptin, joka polttaa mp3-tiedostoista audio-cd:n. Esikuva tälle oli epelin kuvanpienennysskripti (http://forum.ubuntu-fi.org/index.php?topic=11295.msg81325#msg81325). Kaipaisi tämä vielä paljonkin viilausta, tarkistuksia, yms. mutta toimii näinkin.

Koodia: [Valitse]
#!/bin/bash

#versio 0.1
#Skripti pitää suorittaa hakemistossa, jossa on mp3-tiedostoja. Ajettaessa luodaan hakemisto
#wav, johon tallennetaan mp3-hakemiston sisältö lame-ohjelman avulla wav-muotoon.
#Seuraavaksi wav-hakemiston sisältö poltetaan cd-asemassa olevalle tyhjälle "CD-R"-levylle
#cdrecord-ohjelmalla. Lopuksi skripti poistaa luodut wav-tiedostot ja wav-hakemiston.

#Jotta ohjelma toimisi muillakin, kuin minulla, pitää selvittää cd-aseman
#laiteosoite komennolla "cdrecord -scanbus". Ohjelmat "cdrecord" ja "lame" pitää myös olla asennettuna.

path="wav"
cdBurner="2,0,0"

# jos hakemistoa ei ole, tehdään se
if [ ! -d "$path" ]; then
echo "luodaan hakemisto wav"
mkdir -p -m 777 $path
fi

for fileName in *.mp3 ; do
# ajetaan lame vain, jos tiedosto on olemassa
[ ! -f "$fileName" ] && break
        #muutetaan uuden tiedoston tiedostopäätteeksi .wav
newFileName="${fileName%.*}.wav"
lame --decode "$fileName" "$path/$newFileName" 
done

# Poltetaan hakemiston sisältö levylle, mutta vain, jos hakemistossa on tiedostoja
if [ls -1 | wc -l > 0]; then
cdrecord dev=$cdBurner -audio -pad $path/*.wav
echo
echo "Poistetaan väliaikaiset wav-tiedostot"
rm $path/*.wav
rmdir $path
else echo "Tiedosto on tyhjä, ei polteta mitään"
fi

Edit: korjasin raimon osoittaman virheen. (ihmettelinkin, miksi kyseinen ehto ei toiminut)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: raimo - 05.11.07 - klo:23.26
Taitaa olla virhe tässä:
Koodia: [Valitse]
if [ ! -d "$wav" ]; then
noin silmämääräisesti arvioituna lienee niin että pitäisi olla:
Koodia: [Valitse]
if [ ! -d "$path" ]; then
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: essal - 25.11.07 - klo:21.46
Joskus tuli tehtyä tälläinen scripti kuvien kutistamiseen internet jakelua varten:
http://www.suuronen.org/kutista

Tuo toimii vain *.jpg tiedostoilla, esim *.JPG ei toimi. Varmaankin tässä rivissä vikaa:
Koodia: [Valitse]
for kuva in *.jpg *.JPG *.jpeg *.JPEG *.png *.gif *.tiff *.bmp; do kutistakuva "$kuvat"; done
Itselleni muutin sen näin, en sitten tiedä kuinka "oikeaoppinen" tämä on....:
Koodia: [Valitse]
for kuva in *.[jJGgPpTtBb][pPIiNnMm][gGFfEePp]? ; do kutistakuva "$kuvat"; done
Tuolla siis toimii jpg JPG Jpg tiff TIFF Png png jne.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 27.11.07 - klo:15.32
Koodia: [Valitse]
for kuva in *.[jJGgPpTtBb][pPIiNnMm][gGFfEePp]? ; do kutistakuva "$kuvat"; done
Tuolla siis toimii jpg JPG Jpg tiff TIFF Png png jne.

Ja iso joukko muitakin tiedostopäätteitä joilla ei ole mitään tekemistä kuvien kanssa. Eikö tuossa vaiheessa olisi jo helpompaa käydä läpi kaikki tiedostot, selvittää jokaisen mime-tyyppi (komentamalla file -bi) ja saadun mime-tyypin perusteella päätellä onko se kutistettava kuva?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: essal - 27.11.07 - klo:16.26
Koodia: [Valitse]
for kuva in *.[jJGgPpTtBb][pPIiNnMm][gGFfEePp]? ; do kutistakuva "$kuvat"; done
Tuolla siis toimii jpg JPG Jpg tiff TIFF Png png jne.

Ja iso joukko muitakin tiedostopäätteitä joilla ei ole mitään tekemistä kuvien kanssa. Eikö tuossa vaiheessa olisi jo helpompaa käydä läpi kaikki tiedostot, selvittää jokaisen mime-tyyppi (komentamalla file -bi) ja saadun mime-tyypin perusteella päätellä onko se kutistettava kuva?
Varmasti, itselleni muutin tuon muotoon *.[jJ][pP][gGeE]? koska en tarvitse tuota kuin jpeg-kuviin.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 27.11.07 - klo:19.48
Varmasti, itselleni muutin tuon muotoon *.[jJ][pP][gGeE]? koska en tarvitse tuota kuin jpeg-kuviin.

Jos komennat skriptissä tuota ennen shopt -s nocaseglob niin sinulle riittää *.jp{,e}g.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marko Lavikainen - 04.01.08 - klo:14.24
Tässäpä oma skriptini, jonka juuri tein. Tuon kai voisi tehdä yksinkertaisemminkin, mutta halusin vääntää sen itselleni rautalangasta.

Ideana on se, että skripti tekee mistä tahansa tiedostosta varmuuskopion ennalta määrättyyn paikkaan sen polulla ja päivämäärällä varustettuna. Sitä voi käyttää esim. /etc-hakemistossa olevien tiedostojen varmuuskopiointiin, ennen kuin niihin tekee mitään muutoksia.

Koodia: [Valitse]
#!/bin/bash

[ $# -ne 1 ] && echo "Usage: $0 filename" >&2 && exit 1

BACKUP_PATH=/root/backup/files

ABSOLUTE_FILENAME="$(readlink -f "$1")"
ABSOLUTE_PATH="$(dirname "$ABSOLUTE_FILENAME")"
BACKUP_FILENAME="$BACKUP_PATH${ABSOLUTE_FILENAME}.$(date +%Y-%m-%d)"

# Taking backup of file if it does not exist

if [ ! -f "$ABSOLUTE_FILENAME" ]
then
  echo "File $ABSOLUTE_FILENAME does not exist! Not backing up!"
  exit 1
fi

if [ -f "$BACKUP_FILENAME" ]
then
  echo "Backup already exists!"
else
  mkdir -p --mode=700  "$BACKUP_PATH$ABSOLUTE_PATH"
  cp "$ABSOLUTE_FILENAME" "$BACKUP_FILENAME"
  echo "Backed up: $ABSOLUTE_FILENAME"
fi


Lisäksi annoin skriptille ytimekkäästi nimen bf (backup file).  :D

Muokkaus: Muokkasin skriptiä mgronberin hyvän huomion perusteella.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 04.01.08 - klo:17.20
Tässäpä oma skriptini, jonka juuri tein.

Ei toimi jos hakemistopolussa tai tiedostonimessä on välilyöntejä.

Alla on vaihtoehtoinen näkemys tuon toteutuksesta. Komento readlink on varsin näppärä. Myös komennot pushd ja popd ovat hyödyllisiä mikäli työhakemistoa pitää väliaikaisesti vaihtaa. Tässä siihen ei kuitenkaan ollut tarvetta.

Koodia: [Valitse]
#!/bin/bash

BACKUP_PATH=/root/backup/files

[ $# -ne 1 ] && echo "Usage: $0 filename" >&2 && exit 1

FILENAME="$1"

ABSOLUTE_FILENAME="$(readlink -f "$FILENAME")"
ABSOLUTE_PATH="$(dirname "$ABSOLUTE_FILENAME")"

# Taking backup of file

mkdir -p --mode=700  "$BACKUP_PATH/$ABSOLUTE_PATH"
cp "$ABSOLUTE_FILENAME" "$BACKUP_PATH/${ABSOLUTE_FILENAME}.$(date +%Y-%m-%d)"
echo "Backed up: $ABSOLUTE_FILENAME"
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: gdm - 04.01.08 - klo:21.43
Tänään tässä aikani kuluksi väsäsin pari pientä nautilus-scriptiä,
parannus ehdotuksia otetaan vastaan...

ovat ihan vapaasti kaikkien käytettävissä!!!
Koodia: [Valitse]
#!/bin/bash
# Asenna ikoni-sarja /usr/share/icons/ kansioon

gksudo -u root -k /bin/echo "Asenna ikonit"

zenity --info --title "Ikonien asennus" --text "$* asennetaan ikoni kansioon"

if sudo mv "$*" /usr/share/icons/
then
if zenity --question --title "Ikonien asennus" --text "$* asennettu onnistuneesti, otetaanko käyttöön?"

then
gnome-appearance-properties
fi

exit 0
else
sudo rmdir /usr/share/icons/"$*"

zenity --error --title "Virhe" --text "Ikonien asennus epäonnistui"

exit 1
fi

Koodia: [Valitse]
#!/bin/bash
# Asenna teema /usr/share/themes/ kansioon

gksudo -u root -k /bin/echo "Asenna teema"

zenity --info --title "Teeman asennus" --text "$* asennetaan teema kansioon"

if sudo mv "$*" /usr/share/themes/
then
if zenity --question --title "Teeman asennus" --text "$* asennettu onnistuneesti, otetaanko käyttöön?"

then
gnome-appearance-properties
fi

exit 0
else
sudo rmdir /usr/share/themes/"$*"

zenity --error --title "Virhe" --text "Teeman asennus epäonnistui"

exit 1
fi
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marko Lavikainen - 05.01.08 - klo:12.37
Tässäpä oma skriptini, jonka juuri tein.

Ei toimi jos hakemistopolussa tai tiedostonimessä on välilyöntejä.

Alla on vaihtoehtoinen näkemys tuon toteutuksesta. Komento readlink on varsin näppärä. Myös komennot pushd ja popd ovat hyödyllisiä mikäli työhakemistoa pitää väliaikaisesti vaihtaa. Tässä siihen ei kuitenkaan ollut tarvetta.

Kiva tietää tuon readlink-komennon olemassaolo. Kiitos tiedosta. :D

Antamassasi ehdotelmassa on kuitenkin yksi pieni ongelma. Se näkyy esimerkiksi kohdassa "$BACKUP_PATH/$ABSOLUTE_PATH". Eli tuo keskellä oleva /-merkki täytyi ottaa pois, koska muuttuja $ABSOLUTE_PATH sisältää jo juuren /-merkin. Muuten saadaan polku, joka on muotoa /root/backup/files//jotain...

Muokkasinkin edellisessä viestissäni olevaa skriptiä parempaan kuntoon.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 05.01.08 - klo:14.03
Antamassasi ehdotelmassa on kuitenkin yksi pieni ongelma. Se näkyy esimerkiksi kohdassa "$BACKUP_PATH/$ABSOLUTE_PATH". Eli tuo keskellä oleva /-merkki täytyi ottaa pois, koska muuttuja $ABSOLUTE_PATH sisältää jo juuren /-merkin. Muuten saadaan polku, joka on muotoa /root/backup/files//jotain...

Tuo ei ole ongelma. Hakemistopolussa olevista ylimääräisistä (ts. moninkertaisista) kauttaviivoista ei välitetä. Periaatteessa tuossa hakemistopolussa saattaa olla kolmekin kauttaviivaa peräkkäin tilanteesa jossa skriptiä omiin tarpeisiinsa editoiva on muuttanut BACKUP_PATH:ia ja epähuomiossa kirjoittanut hakemiston loppuun kauttaviivan.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marko Lavikainen - 05.01.08 - klo:18.05
Tuo ei ole ongelma. Hakemistopolussa olevista ylimääräisistä (ts. moninkertaisista) kauttaviivoista ei välitetä. Periaatteessa tuossa hakemistopolussa saattaa olla kolmekin kauttaviivaa peräkkäin tilanteesa jossa skriptiä omiin tarpeisiinsa editoiva on muuttanut BACKUP_PATH:ia ja epähuomiossa kirjoittanut hakemiston loppuun kauttaviivan.

Ok. Kiva tietää tuokin asia.  ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: gdm - 08.01.08 - klo:12.45
Päivitetty versio edellisestä nautilus_scriptistä, nyt yhdellä voi tehdä molemmat :)
Koodia: [Valitse]
#!/bin/bash
# Asenna teema/ikoni-sarja /usr/share/ kansioon

gksudo -u root -k /bin/echo "Asenna Teema/Ikoni"

kohde=$(zenity --list --radiolist --text "Minne asennetaan?" --title "Kohde ..." --column "Valitse" --column "Kohde" FALSE /usr/share/themes FALSE /usr/share/icons/)

if [[ $kohde == "/usr/share/themes" ]]; then
    sudo mv "$*" /usr/share/themes/
else
    sudo mv "$*" /usr/share/icons/
fi

exit 0
fi
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 10.01.08 - klo:12.05
Tälllainen räpellys pääsi syntymään   ::). Aloittelija asialla
Käyttö:
Koodia: [Valitse]
./rojektiks /polku/videoon.m2t
KDE:n sevicemenu eli toiminnot valikkoon m2t tiedostolle:
Tallenna ~/.kde/share/apps/d3lphin/servicemenus/rojektiks
chmod +x rojektiks
Vaihda d3lphinin tilalle mahdollisesti konqueror

Tallenna tuo
/.kde/share/mimelnk/video/m2t.desktop
Koodia: [Valitse]
[Desktop Entry]
Comment=
Hidden=false
Icon=video
MimeType=video/m2t
Patterns=*.m2t;*.M2T
Type=MimeType

Tallenna tuo
~/.kde/share/apps/d3lphin/servicemenus/projectx.desktop
Koodia: [Valitse]
[Desktop Entry]
ServiceTypes=video/m2t
Actions=rojectiks;
[Desktop Action rojectiks]
Name=Käsittele ProjectX:llä
Exec= ~/.kde/share/apps/d3lphin/servicemenus/rojektiks  %f
Icon=video
Vaihda d3lphinin tilalle mahdollisesti konqueror tallennuskohteeseen ja sisältöön.

Melkoista räpellystä. Tiedetään... mutta menköön.  :D  ei kovinkaan näppärän näköinen
Koodia: [Valitse]
#!/bin/bash

#DVB-video demuksataan ProjectX:llä (java) ja muksataan mplex:llä (mjpegtools).
#Suomentakaa sanat, jos haluatte :)
#Mahdolliset tekstitykset muunnetaan tekstimuotoon son2srt -skriptillä. Löytyi tuolta:
#http://www.cs.helsinki.fi/u/mikkila/son2srt/. Vaatimukset: python, gocr ja netpbm

PAIKKA=`dirname "$1"`
cd "$PAIKKA"
tiedosto=`basename "$1"`

###############################Täytä oikein!#############################################
#Javan sijainti
JAVA=
#ProjectX.jar sijainti
PX=
#X.ini sijainti. Määrittele X.ini tiedostolle tekstityksien muodoksi son ProjectX:llä
XINI=
#Komento son2srt
s2s=
#Kirjaimien kuvatietokannan sijainti
tk=
#Tekstieditori
te=
#########################################################################################

#Muutetaan  mahdollisesti tiedoston nimi
#ääkköset poistetaan mkvtoolnix:in vuoksi
uusi=`echo "$tiedosto" | sed -e 's/  */_/g' -e 's/_-_/-/g'  -e 's/__/_/g' -e  's/ä/a/g' -e  's/å/o/g'  -e  's/Å/O/g' -e  's/ö/o/g' -e 's/Ä/A/g'    -e 's/Ö/O/g' `


mv "$tiedosto" $uusi
tiedosto="$uusi"
aika=`date +%d-%m-%H-%M-%S`
tmp=$(echo $PAIKKA/tmp-"$tiedosto"-"$aika")
mkdir "$tmp"

demux=`echo $JAVA -jar $PX ""$PAIKKA"/"$tiedosto"" -out "$tmp" -ini $XINI `
kdialog --icon video --caption  "Leikataanko?" --yesnocancel \
"Haluatko leikata $tiedosto -videon?"
kysymys=`echo $?`

if [  "$kysymys" = 0 ]
then
kdialog --title "Jatko" --passivepopup \
"Suljettuasi ProjectX:n tiedostot muksataan mpeg-tiedostoksi" 20 &
$demux -gui
elif [  "$kysymys" = 1 ]
then
kdialog --title "Jatko" --passivepopup \
"Videon ääni, kuva ja tekstitykset muksataan erilleen" 10 &
konsole -title Demuksataan --caption ProjectX --nomenubar  --noframe --notabbar --geometry 800x300 -e $demux
elif [  "$kysymys" = 2 ]
then
exit 0
fi

tiedosto="${tiedosto%.m2t}"
cd $tmp
if [ -f "$tmp"/"$tiedosto".m2v ]
then
kdialog --title "Jatketaan" --passivepopup \
"Muksataan mpeg-tiedostoa" 5 &

(mplex -f8  "$tiedosto".m2v "$tiedosto"*.mp2  -o "$tiedosto".mpg && rm "$tiedosto".m2v "$tiedosto"*.mp2)&

sleep 2
kuvakoko=$(du "$tiedosto"*.mp2 | cut -f1)
aanikoko=$(du "$tiedosto"*.m2v "$tiedosto"*.ac3 | cut -f1| xargs| sed 's/ /+/g'|bc)
koko=$(echo $kuvakoko + $aanikoko | bc)
mpgkoko=0

dcopRef=`kdialog --title Muksataan --caption mplex --icon video --progressbar "Muksataan videota $tiedosto.mpg" $koko`
dcop $dcopRef showCancelButton true

while [ -f "$tiedosto"*.m2v ]
do
if [ "true" == `dcop $kdialog wasCancelled` ]
then
kill %1
rm -rf $tmp
exit 0
fi
mpgkoko=$(du "$tiedosto".mpg | cut -f1)
dcop $dcopRef setProgress $mpgkoko;
sleep 0.2
done
dcop $dcopRef close

if [ -f $tiedosto.son ]
then
#Muunnetaan tekstitykset tekstitiedostoiksi

kdialog --title "Tekstitykset" --passivepopup \
"Yritetään tunnistaa kirjaimet. Mikäli ei onnistu niin voit yrittää itse ja lisätä tietokantaan" 5 &

  xterm -title son2srt -e "$s2s" -d "$tk" -c -a -v -s 9 -r 4 -i  ""$tmp"/"$tiedosto".son" -o ""$tmp"/"$tiedosto".srt"

#Korjataan joitakin mahdollisia virheitä.
#Suurilla kirjaimilla pitää arvailla (alkaen kolmas  rivi komennon alusta)
cat $tiedosto.srt |sed  \
-e 's/\([a-zåäö]\)I/\1l/g' -e 's/\([A-ZÅÄÖ]\)I\([a-zåäö]\)/\1l\2/g' -e 's/AI /Al /g' \
-e 's/Iaa/laa/g' -e 's/Iah/lah/g' -e 's/Iai/lai/g' -e 's/Iak/lak/g' -e 's/a_/ä/g' \
-e 's/Iant/lant/g' -e 's/Iam/lam/g'  -e 's/Iap/lap/g' -e 's/Ias/las/g' -e 's/Ieh/leh/g' \
-e 's/Iento/lento/g' -e 's/Iep/lep/g' -e 's/Iia/lia/g' -e 's/Iii/lii/g' -e 's/Iu/lu/g' \
-e 's/Iäh/läh/g'  -e 's/Iäm/läm/g' -e 's/Iäp/läp/g' -e 's/Iäksin/läksin/g' -e 's/Iäksiä/läksiä/g' -e 's/Iänt/länt/g' \
-e 's/Iöy/löy/g'  -e 's/Iäs/läs/g' -e 's/Iäksy/läksy/g' -e 's/Iäkäh/läkäh/g' -e 's/Iät/lät/g' -e 's/hantä/häntä/g' \
-e 's/Iää/lää/g' -e 's/Iöi/löi/g'  -e 's/Iöy/löy/g'   -e 's/a_/ä/g' -e 's/silma/silmä/g'  -e 's/tya/tyä/g' \
> $tiedosto-sed.srt
mv $tiedosto-sed.srt $tiedosto.srt

kdialog --title "Turhat tiedostot poistetaan" --passivepopup \
"Suljettuasi "$te"n kuvatekstit poistetaan" 7 &

#Tarkastetaan tekstitykset
$te  $tiedosto.srt

#Asetustiedosto:~/.kde/share/config/rojektis
kdialog --icon video --caption "Merkistökoodaus?" --dontagain rojektis:nofilemsg --yesno "Haluatko vaihtaa UTF-8 merkistökoodauksen ISO-8859-1:ksi?"
if [ 0 -eq "$?" ]
then
iconv -f UTF-8 -t ISO-8859-1  $tiedosto.srt >"$tiedosto"-iso.srt
mv "$tiedosto"-iso.srt $tiedosto.srt
fi

fi

kdialog --title "Valmis" --passivepopup \
"Video "$tiedosto".mpg on valmis" 5 &

if [ -f $PAIKKA/$tiedosto.m2t ]
then
kdialog --icon video --caption "Poista?" --yesno "Poistetaanko alkuperäinen $tiedosto.m2t -tiedosto?"
if [ 0 -eq "$?" ]
then
rm "$PAIKKA"/"$tiedosto".m2t
fi
fi

if [ -f "$tiedosto".mpg ]
then
kfmclient move "$tiedosto".mpg "$PAIKKA"/
if [ -f "$tiedosto".srt ]
then
kfmclient move "$tiedosto".srt "$PAIKKA"/
fi

fi
rm -rf $tmp
exit 0
elif ! [ -f  $tiedosto.m2v ]
then
kdialog --title "Lopetetaan" --passivepopup \
"ProjectX ei tuottanut m2v -tiedostoa" 5 &
rm -rf "$tmp"
exit 0
fi



Ei kai mitenkään kaunista, mutta toimii  :P

Muoks. korjattiin pieni itsestäänselvyys
Muoks2. Pistettiin pari mgronber ehdotusta toimimaan.
Muoks3. hiottiin vähän sediä
Muoks4. Lisättiin vähän lisää tavaraa ja suojellaan tavaraa tuhoisilta ylikirjoituksilta lisäten hommaan aika selkeyttämään.
Muoks5. Lisätty edistymisdialogi muksauksessa. kfmclient mv korvaamaan. ts tarvitsee KDE:n/KDE:n paketteja.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 10.01.08 - klo:18.23
Pari huomiota ja korjausehdotusta.

Koodia: [Valitse]
JAVA=/usr/lib/jvm/java-7-icedtea/bin/java

Todennäköisesti polusta ($PATH) pitäisi löytyä suoraan java joka on symbolinen linkki järjestelmän oletukseksi asetettuun java-tulkkiin. Tuohon siis riittäisi todennäköisesti pelkkä java.

Lainaus
Koodia: [Valitse]
s2s=son2srt.py

Tuo son2srt.py voisi olla viestissä liitteenä tai ainakin linkki sivulle josta ohjelma löytyy.

Lainaus
Koodia: [Valitse]
tiedosto=`echo $uusi`

Koodia: [Valitse]
tiedosto="$uusi"

Lainaus
Koodia: [Valitse]
tiedosto=`echo $tiedosto | sed 's/.m2t//'`

Koodia: [Valitse]
# Korvataan merkkijono .m2t tyhjällä (eli poistetaan merkkijono)
tiedosto="${tiedosto/.m2t/}"

# Poistetaan viimeinen piste ja sen jälkeinen osa
tiedosto="${tiedosto%.*}"

# Poistetaan pääte .m2t
tiedosto="${tiedosto%.m2t}"

Näistä viimeinen esimerkki on tässä tapauksessa suositeltavin.


Lainaus
Koodia: [Valitse]
komento=`echo $s2s -d $tk -c -a -v -s 9 -r 4 -i $tiedosto.son -o $tiedosto.srt`
xterm -e $komento

Todennäköisesti tuo toimisi myös tässä muodossa.

Koodia: [Valitse]
exec "$s2s" -d "$tk" -c -a -v -s 9 -r 4 -i "$tiedosto.son" -o "$tiedosto.srt"

Jos käyttäisit noiden tekstitysten sijasta tekstitv-tekstityksiä niin silloin ei olisi ongelmia kirjaimien kanssa vaan ne olisivat suoraan oikein.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 10.01.08 - klo:18.38
Todennäköisesti polusta ($PATH) pitäisi löytyä suoraan java joka on symbolinen linkki järjestelmän oletukseksi asetettuun java-tulkkiin. Tuohon siis riittäisi todennäköisesti pelkkä java -siksi näin.
Pari java-vm löytyy ja Icetea tuntuu sulvammalta tuolla ProjectX:llä, mutta se ei ole kaikkien kanssa yhteenspoiva.
Tuo son2srt.py voisi olla viestissä liitteenä tai ainakin linkki sivulle josta ohjelma löytyy.
Löytyy komentoidulta alueelta
http://www.cs.helsinki.fi/u/mikkila/son2srt/

Joo kokeillaan ehdotuksia. Tuossa on xterm aivan tarkoitusella mukana  ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 10.01.08 - klo:19.04
Tuo son2srt.py voisi olla viestissä liitteenä tai ainakin linkki sivulle josta ohjelma löytyy.
Löytyy komentoidulta alueelta
http://www.cs.helsinki.fi/u/mikkila/son2srt/

Puusilmä mikä puusilmä ;)

Lainaus
Tuossa on xterm aivan tarkoitusella mukana  ;)

Niinpäs saattoi ollakin. En huomioinut asiayhteyttä sen tarkemmin vaan luin skriptiä kuten mitä tahansa bash-skriptiä joka suoritetaan komentoriviltä :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 10.01.08 - klo:23.43
Jos käyttäisit noiden tekstitysten sijasta tekstitv-tekstityksiä niin silloin ei olisi ongelmia kirjaimien kanssa vaan ne olisivat suoraan oikein.
Ihan OT:nä
Kaffeine siis tallentaa tekstitv:n tekstit? Kokeilin myös mplayerin dumpstreamillakin saada niitä mukaan - ei mitään. Itselläni ei ole varsinaista boxia/teevetä.

son2srt toimii ihan hyvin, kunhan vielä korjaa kirjaimien l I virheet. Heh eihän noita nytkään erota meiikäläisen sisäänrakennettu ocr. No rippuu fontista
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 11.01.08 - klo:00.33
Jos käyttäisit noiden tekstitysten sijasta tekstitv-tekstityksiä niin silloin ei olisi ongelmia kirjaimien kanssa vaan ne olisivat suoraan oikein.
Kaffeine siis tallentaa tekstitv:n tekstit? Kokeilin myös mplayerin dumpstreamillakin saada niitä mukaan - ei mitään. Itselläni ei ole varsinaista boxia/teevetä.

Kaffeinesta en osaa sanoa mitään mutta mplayerin dumpstream ei niitä ainakaan osaa pullauttaa ulos.

Itse olen hoitanut tallennuksen omalla (vähemmän julkaisukelpoisella) skriptilläni jossa nauhoituksen alkaessa viritän kanavan kohdalleen käynnistämällä tzap:n taustalle. Varsinaisen tallennuksen hoidan dvbstream:n avulla eli käytännössä käsken sitä tuuppaamaan streamistä haluamani PID:t stdoutiin mistä ohjaan ne haluamaani tiedostoon. Sekä tzap ja dvbstream on siis käynnistetty taustalle ja nauhoituksen loppuessa tapan ensiksi dvbstream:n ja sitten tzap:n.

Kuten jo sanoin niin skriptini ei ole julkaisukelpoinen mutta pari oleellista kohtaa voisin sieltä leikata näytille. Ensimmäinen leike näyttää kanavan virityksen ja tallentamisen.

Koodia: [Valitse]
tzap "$channel" >/dev/null &
tzappid=$!

dvbstream -o $pids >"${program}_${date}T${time}.ts" &
dvbstreampid=$!

Seuraavassa leikkeessä on kanavakohtaisesti tallennettavat PID:t. Käytännössä siis kanavan kuva ja ääni sekä Ylen kanavilla lisäksi kanavanipun teksti-tv. Minulla on ProjectX:n ini-skriptissä määritelty dumpattavaksi kaikki Ylen käyttämät tekstityssivut joten jatkokäsittelyn yhteydessä minun pitää itse valita oikea tekstitystiedosto. Dumpattujen tekstitystiedostojen määrä riippuu käytännössä siitä kuinka monelta kanavalta on tullut samaan aikaan tekstitettyä ohjelmaa.

Valitettavasti minulla on käsittelyssä käytettävä kone tällä hetkellä buutattuna Windowsiin joten en pysty katsomaan millä kaikilla sivuilla tekstityksiä lähetettiin. Muistelisin kuitenkin että ykkösen suomenkielinen tekstitys on sivulla 451 ja kakkosen sivulla 452. Muiden kanavien tekstityssivuista ei ole mitään muistikuvaa :)

Koodia: [Valitse]
getpids() {
    case $1 in
        yle1)
            pids="512 650 2321"
            ;;
        yle2)
            pids="513 660 2321"
            ;;
        mtv3)
            pids="305 561"
            ;;
        nelonen)
            pids="512 650"
            ;;
        fst)
            pids="514 670 2321"
            ;;
        subtv)
            pids="353 609"
            ;;
        yle24)
            pids="515 680 2321"
            ;;
        teema)
            pids="516 690 2321"
            ;;
        voice)
            pids="513 660"
            ;;
        jim)
            pids="516 690"
            ;;
        digiviihde)
            pids="518 710"
            ;;
        *)
            pids=""
            ;;
    esac
    echo "$pids"
}
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 11.01.08 - klo:19.12
Koodia: [Valitse]
#!/bin/bash
clear
echo "Piristystä päivään!"
sleep 2
for luku in $(seq 3)
do
eject
fortune
eject -t
sleep 2
clear
done
clear
echo "Katosikos tylsyys?"
sleep 3
clear
xeyes

pro-tason koodia  ;D   :o
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 11.01.08 - klo:19.44
Juu huippuluokan...

Minä kyllä muuttaisin noita aikoja ja miksi tuossa ei ole äkkösiä? "Piristysta paivaan!"!?!
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 12.01.08 - klo:00.43
Lainaus
Minä kyllä muuttaisin noita aikoja ja miksi tuossa ei ole äkkösiä? "Piristysta paivaan!"!?!
editoitu
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 12.01.08 - klo:02.20
Elämäni ensimmäinen skripti on syntynyt (naurakaa vaan).
Koodia: [Valitse]
#!/bin/bash


echo "Valitse formaatti [o]=Ogg Vorbis [m]=Mp3 , mikä tahansa muu=Poistu"

read FORMAATTI

echo "Syötä bitrate [kbs]:"

read BITRATE

if [ $FORMAATTI = "o" ]
then
echo " Aloitetaan rippaus. Ogg Vorbis $BITRATE kbs"
abcde -d /dev/dvd -o ogg:"-b $BITRATE"
else
echo ""

fi

if [ $FORMAATTI = "m" ]
then
echo " Aloitetaan rippaus. Lame mp3 $BITRATE kbs"
abcde -d /dev/dvd -o mp3:"-b $BITRATE"
else
echo " Lopetetaan."
echo " Jos ei toimi niin lue ohjeet : http://ubuntuforums.org/archive/index.php/t-535950.html"
fi
Käytännöllinen. Sound juicer sai nähdä apt-get removea.
Tarvitsee tietenkin vähän muuntelua lukevan aseman suhteen ja ainakin abcde ja mp3 härpäkkeiden asennuksen.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: janne - 12.01.08 - klo:02.31
Elämäni ensimmäinen skripti on syntynyt (naurakaa vaan).

ihan hyvä alku, mutta kommentoidaan vähän (eikä niinkään sisältöä kuin esitystä)...

Koodia: [Valitse]
...
if [ $FORMAATTI = "o" ]
then
echo " Aloitetaan rippaus. Ogg Vorbis $BITRATE kbs"
abcde -d /dev/dvd -o ogg:"-b $BITRATE"
else
echo ""

fi

if [ $FORMAATTI = "m" ]
then
echo " Aloitetaan rippaus. Lame mp3 $BITRATE kbs"
abcde -d /dev/dvd -o mp3:"-b $BITRATE"
else
echo " Lopetetaan."
echo " Jos ei toimi niin lue ohjeet : http://ubuntuforums.org/archive/index.php/t-535950.html"
fi

tällaista tuli mieleen:
- tuo device voisi olla ehkä muuttujassa, jotta sen voisi vaihtaa yhdestä paikasta jos tarvetta vaihtamiseen on.
- tuossa ei ehkä ole fiksua käyttää kahta if - else rakennetta tuollaisenaan. koko homman voisi hoitaa if - elif - else rakenteella tai case:lla. siis periaatteessa ehtorakenne jossa on kolme haaraa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 24.01.08 - klo:14.57
Tämä ei koske Ubuntua
Hämmästyttävän hyödyllinen. Jossain foorumilla osui silmään.

Koodia: [Valitse]
#!/bin/sh
exec su -c "$*"

Tallennetaan vaikka /usr/bin/suc ja annetaan suoritusoikeudet.
Toimii huomattavasti mukavammin vrt:

Koodia: [Valitse]
suc apt-get updatevs
Koodia: [Valitse]
su -c 'apt-get update'
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 07.02.08 - klo:17.48
Mikähän tätä vaivaa kun lopettaa aina tuossa "Why peoples are so simple usually..." (eikö se tykkää siitä vai mitä?) Merkkasin sen kommentti rivillä. Enkun kieltäkin saa minun puolestani korjailla.
Koodia: [Valitse]
#Ver 0.6
#Made by Tomppeli
echo Cow0:
cowsay -e OO My computer freezed!
sleep 3
clear
echo Cow1:
cowsay -e oo Try SysRq + Alt which means alternative and type "REISUB".
sleep 6
clear
echo Cow0:
cowsay -e XX I tried and now my computer is dead!
sleep 4
clear
echo Cow1:
cowsay -e oO Are you sure? Press power button...
sleep 4
clear
echo Cow0:
cowsay -e OO How did you do it?
sleep 3
clear
echo Cow1:
cowsay -e -- -T U Magic...
sleep 3
clear
echo Cow1:
cowsay -e oo Why people are so simple usually...
sleep 3
clear
echo Cow0:
cowsay -e -- I am not a people! I am a cow! Remember that!
sleep 4
clear
echo Cow1:
cowsay -e oo Oh, sorry. I forget.
sleep 3
Tein tätä huvikseen, mutta jostain syystä tämä ei toimi...
EDIT0: Vika oli siinä ettei '-merkki toiminut...
EDIT1: Paranneltu versio minun turhaakin turhemmasta skriptistä... ;D
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 07.02.08 - klo:20.57
Tuo Epelin video2avi skripti on tosiaan näppärä. On ollut ihan hyöty käytössäkin. Koodatkaapa viisaammat vielä sellainen lisuke siihen että voi skaalata kokoa pienemmäksi. Mencoderin käyttö on niin vaikeaa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 07.02.08 - klo:21.11
Hämmästyttävän hyödyllinen. Jossain foorumilla osui silmään.

Koodia: [Valitse]
#!/bin/sh
exec su -c "$*"

Miksei ennemmin asenna sudoa?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 07.02.08 - klo:21.48
Hämmästyttävän hyödyllinen. Jossain foorumilla osui silmään.

Koodia: [Valitse]
#!/bin/sh
exec su -c "$*"

Miksei ennemmin asenna sudoa?

::) joo tuo sattuu vaan toimimaan "valmiiksi" juuri niinkuin itse haluan  :). Jep luultavasti su sudo yms taipuu moneksi kun innostuu säätämään.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 07.02.08 - klo:22.14
Itse tein tänään tämmöisen kun eilen tuli kernel päivitys ja v4l-dvb ajurit piti kääntää uudestaan:
Koodia: [Valitse]
#!/bin/bash
#Kysellään sudolla salasanaa. Sitä tarvitse kysellä uudestaan (ei toimi jos on säädetty että salasanaa kysellään aina)
echo Kysytään salasanaa "sudo apt-get install mercurial linux-headers-$(uname -r) build-essential"
sudo apt-get install mercurial linux-headers-$(uname -r) build-essential
echo Ladataan tiedostoja
hg clone http://linuxtv.org/hg/v4l-dvb
cd v4l-dvb
echo Aloitetaan kääntäminen ja asennus
make
echo Laita salasanasi "sudo make install":a varten mikäli koneesi ei muista sitä tarpeeksi kauan
sudo make install
make reload
echo Valmis poistetaan vielä v4l-dvb kansio
rm -r v4l-dvb
echo OK! Kokeile nyt viritintä
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tonde - 10.02.08 - klo:10.52
Koodia: [Valitse]
ech Ladataan tiedostoja

Pitäisikö tuossa lukea
Koodia: [Valitse]
echo Ladataan tiedostoja
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 10.02.08 - klo:12.46
Juu pitäisi. Kiitos. :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 24.02.08 - klo:10.09
#IhQ kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein eog-ohjelmalla
#scriptistä pääsee pois Ctrl+c :)
#eog täytyy olla asennettuna(jos ei ole niin: sudo apt-get install eog)
#en ota vastuuta menetetyistä tiedostoista

#!/bin/bash
cd                              #siirrytään kotihakemistoon
mkdir KuvatXyZklM   # tehdään väliaikaistiedosto, ettei poisteta .jpg-tiedostoja
cd KuvatXyZklM
while true; do            #tästä alkaa loputon looppi
OSOITE=`lynx -source http://irc-galleria.net/random.php | grep jpg | tail -1 | cut -d " " -f4 | cut -d "=" -f2 | sed 's/"//g'`
wget $OSOITE
eog *.jpg &
sleep 3
killall eog
rm *.jpg
done


Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 24.02.08 - klo:12.16
#IhQ kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein

Laitetaan nyt oma näkemys tästä. Kuvien näyttämiseen käytetään feh-ohjelmaa, kaikkia ohjelman instansseja ei tapeta eikä kotihakemistoon luoda ylimääräistä hakemistoa. Lisäksi sivu haetaan wget:n avulla hieman harvinaisemman lynx:n sijasta.

Koodia: [Valitse]
#!/bin/bash

while true; do
    imageUrl="$(wget -q -O - 'http://irc-galleria.net/random.php' \
    | tr '<>' '\n\n' \
    | grep -io -m1 'http://[^"]*.jpg')"

    feh "$imageUrl" &
    sleep 3
    kill $!
done

Toinen vaihtoehtoinen tapa jossa hyödynnetään Konqueror-selainta kuvien näyttämiseen. Tieto uuden kuvan osoitteesta kerrotaan dcop:n avulla. Ohjelma pysähtyy kun selainikkuna suljetaan.

Koodia: [Valitse]
#!/bin/bash

pid="$(kshell konqueror | grep -o '[0-9]\+')"

while true; do
    imageUrl="$(wget -q -O - 'http://irc-galleria.net/random.php' \
    | tr '<>' '\n\n' \
    | grep -io -m1 'http://[^"]*.jpg')"

    dcop konqueror-$pid 'konqueror-mainwindow#1' openURL "$imageUrl" &>/dev/null \
    || exit 0

    sleep 3
done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 24.02.08 - klo:12.42
#IhQ kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein eog-ohjelmalla
#scriptistä pääsee pois Ctrl+c :)
#eog täytyy olla asennettuna(jos ei ole niin: sudo apt-get install eog)
#en ota vastuuta menetetyistä tiedostoista

#!/bin/bash
cd                              #siirrytään kotihakemistoon
mkdir KuvatXyZklM   # tehdään väliaikaistiedosto, ettei poisteta .jpg-tiedostoja
cd KuvatXyZklM
while true; do            #tästä alkaa loputon looppi
OSOITE=`lynx -source http://irc-galleria.net/random.php | grep jpg | tail -1 | cut -d " " -f4 | cut -d "=" -f2 | sed 's/"//g'`
wget $OSOITE
eog *.jpg &
sleep 3
killall eog
rm *.jpg
done




#IhQ kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein

Laitetaan nyt oma näkemys tästä. Kuvien näyttämiseen käytetään feh-ohjelmaa, kaikkia ohjelman instansseja ei tapeta eikä kotihakemistoon luoda ylimääräistä hakemistoa. Lisäksi sivu haetaan wget:n avulla hieman harvinaisemman lynx:n sijasta.

Koodia: [Valitse]
#!/bin/bash

while true; do
    imageUrl="$(wget -q -O - 'http://irc-galleria.net/random.php' \
    | tr '<>' '\n\n' \
    | grep -io -m1 'http://[^"]*.jpg')"

    feh "$imageUrl" &
    sleep 3
    kill $!
done

Toinen vaihtoehtoinen tapa jossa hyödynnetään Konqueror-selainta kuvien näyttämiseen. Tieto uuden kuvan osoitteesta kerrotaan dcop:n avulla. Ohjelma pysähtyy kun selainikkuna suljetaan.

Koodia: [Valitse]
#!/bin/bash

pid="$(kshell konqueror | grep -o '[0-9]\+')"

while true; do
    imageUrl="$(wget -q -O - 'http://irc-galleria.net/random.php' \
    | tr '<>' '\n\n' \
    | grep -io -m1 'http://[^"]*.jpg')"

    dcop konqueror-$pid 'konqueror-mainwindow#1' openURL "$imageUrl" &>/dev/null \
    || exit 0

    sleep 3
done

Saisko näihin viel et se pöllii nickinki? :D
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 24.02.08 - klo:18.56
Empä jaksanu väsätä mitään pro-tason kikkaretta tuosta.
Näpytin mitä mieleen tuli ja se siitä.
Aluksi tuo ohjelma ei hakenut kuvia laisinkaan ja ne esitettiin dillolla, jotenkin en tykännyt siitä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 24.02.08 - klo:19.01
Mutta kuinka vaikee toi on sit toteuttaa niin, että se tallentaa kuvan käyttäjän nickillä? Tälläsen vastauksen sain yhestä paikkaa mutta en osaa käyttää tätä oikein, että saisin toimimaan.

Lainaus
Mutta hommahan hoituu niin, että kun tuon random.php:n olet ladannut (selain uudelleenohjataan random käyttäjän sivulle), kaivat sorsasta img-tagin, jonka id on viewimage_image. Voit kaivaa myös ko. elementistä alt attribuutista käyttäjän nickin.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 24.02.08 - klo:19.03
Mutta kuinka vaikee toi on sit toteuttaa niin, että se tallentaa kuvan käyttäjän nickillä? Tälläsen vastauksen sain yhestä paikkaa mutta en osaa käyttää tätä oikein, että saisin toimimaan.

Lainaus
Mutta hommahan hoituu niin, että kun tuon random.php:n olet ladannut (selain uudelleenohjataan random käyttäjän sivulle), kaivat sorsasta img-tagin, jonka id on viewimage_image. Voit kaivaa myös ko. elementistä alt attribuutista käyttäjän nickin.
nickin voi grepata sorsasta, helppoa on. Suosittelisin opettelemaan nuita peruskomentoja, jos kukaan ei oo tänään laittanut esimerkkiä niin laitan aiheesta esimerkin huomenna.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 24.02.08 - klo:19.16
Mutta kuinka vaikee toi on sit toteuttaa niin, että se tallentaa kuvan käyttäjän nickillä? Tälläsen vastauksen sain yhestä paikkaa mutta en osaa käyttää tätä oikein, että saisin toimimaan.

Lainaus
Mutta hommahan hoituu niin, että kun tuon random.php:n olet ladannut (selain uudelleenohjataan random käyttäjän sivulle), kaivat sorsasta img-tagin, jonka id on viewimage_image. Voit kaivaa myös ko. elementistä alt attribuutista käyttäjän nickin.
nickin voi grepata sorsasta, helppoa on. Suosittelisin opettelemaan nuita peruskomentoja, jos kukaan ei oo tänään laittanut esimerkkiä niin laitan aiheesta esimerkin huomenna.

Täältä olen katellut joitain komentoja. Man sivuista päätteessä en niin välitä. http://www.ss64.com/bash/

Edit: Mitäköhän vikana kun tämä ei nytten sitten toimi?

Koodia: [Valitse]
#!/bin/bash
cd 
mkdir Kuvat/irc-rand
cd Kuvat/irc-rand
while true; do
OSOITE=`lynx -source http://irc-galleria.net/random.php | awk '{if (/<img id="viewimage_image" src="(.+?)" alt="(.+?)"/) { print "nick: $2 url: $1" } }'`
wget $OSOITE
eog *.jpg &
sleep 3
killall eog
rm *.jpg
done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 24.02.08 - klo:23.06
#Marbon pyynnöstä
#Kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein eog-ohjelmalla
#jpg-kuvat avataan ja kuvan nimi on muutettu nick-nimeä vastaavaksi, ensimmäistä kuvaa lukuunottamatta
#En ota vastuuta menetetyistä tiedostoista
#Ohjelmasta pääsee pois Ctrl+c :)
#Sorsa on edelleen purkkaliima-asteella

#!/bin/bash

cd
mkdir Purkkaliima_ratkaisu
cd Purkkaliima_ratkaisu
while true;do
lynx -source http://irc-galleria.net/random.php > url.txt
NICK=`cat url.txt | grep '.*Profiili' | cut -d "=" -f5 | cut -d " " -f1 | sed 's/"//g'`
OSOITE=`cat url.txt | grep jpg | tail -1 | cut -d " " -f4 | cut -d "=" -f2 | sed 's/"//g'`
wget $OSOITE
mv *.jpg $NICK.jpg
eog *.jpg &
sleep 3
killall eog
rm *.jpg
rm url.txt
done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 24.02.08 - klo:23.52
Doddi, nyt on parempi :>>
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 25.02.08 - klo:01.54
NICK=`cat url.txt | grep '.*Profiili' | cut -d "=" -f5 | cut -d " " -f1 | sed 's/"//g'`
mv *.jpg $NICK.jpg

En tiedä millaisia rajoituksia irc-gallerian nimimerkeissä on mutta tuo hajoaa mikäli parsittu nimimerkki sisältää välilyöntejä. Lainausmerkit kohteen ympärillä auttavat.

Toisaalta voisi olla fiksumpaa ladata tuo kuva suoraan oikealle nimelle antamalla wget:lle parametri -O FILE.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 25.02.08 - klo:02.32
Mulla on tässä kehitteillä pikku käynnistysskripti LinuxDC++:n. Skripti tarkistaa onko ulkoinen IP vaihtunut ja tarvittaessa muuttaa sen.

Kattoo nyt jos saisin huomisen.. I mean tämänpäivän aikana tänne. Nyt meinaan pitää mennä nukkumaan, koulupäivä, herätys 7.  ;D
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 25.02.08 - klo:07.26
Lainaus
En tiedä millaisia rajoituksia irc-gallerian nimimerkeissä on mutta tuo hajoaa mikäli parsittu nimimerkki sisältää välilyöntejä. Lainausmerkit kohteen ympärillä auttavat.

Mielestäni ei ole mahdollista välilyönneille.
Toisaalta voisi olla fiksumpaa ladata tuo kuva suoraan oikealle nimelle antamalla wget:lle parametri -O FILE.
Nuo sorsat on vapaata riistaa ja mun puolesta sitä voi esittää vaikka omina sorsinaan muille :)
Ei muuta kuin kehittelmään IhQ sorsat oman mielen mukaan  ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 25.02.08 - klo:17.17
Mitenköhän sais Kuvake.net:stä kans otettua noi nickit? Tällä ei onnistu? Enkä ole keksiny, että millä toi nick on sivujen koodissa? Ei ainakaan .Profiili?

Lainaus
NICK=`cat url.txt | grep '.*Profiili' | cut -d "=" -f5 | cut -d " " -f1 | sed 's/"//g'`
OSOITE=`cat url.txt | grep jpg | tail -1 | cut -d " " -f4 | cut -d "=" -f2 | sed 's/"//g'`
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 25.02.08 - klo:17.58
Pientä vinkkiä:
 w3m -no-cookie -dump_source http://kuvake.net/random.php | grep jpg | cut -d "(" -f2 | cut -d ")" -f1
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 25.02.08 - klo:23.38
Noniin, tällänen purkkaviritys siitä sitten tuli:

Koodia: [Valitse]
#!/bin/bash
#
# External IP checker to LinuxDC++
# by eDIT @forum.Ubuntu-fi.org

# The main configuration file. Default is ~/.dc++/DCPlusPlus.xml
DCXML=~/.dc++/DCPlusPlus.xml

MYIP=(`wget http://myip.dk/ -O - -o /dev/null | grep '<title>' | sed -r 's/<title>Your IP: //g' | sed -r 's/<\/title>//g'`)
CURRENTIP=(`grep '<ExternalIp type="string">' $DCXML | sed -e 's/^[ \t]*//' | sed -r 's/<ExternalIp type="string">//g' | sed -r 's/<\/ExternalIp>//g' | sed 's/.$//'`)
NONEIP=(`grep '<ExternalIp type="string"></ExternalIp>' $DCXML`)

if [ -n "$NONEIP" ]
then
        exit 0
fi

if [ $MYIP = $CURRENTIP ]
then
        exit 0
else
sed -i "s/$CURRENTIP/$MYIP/g" $DCXML && echo "Changed old IP addres $CURRENTIP to new one. ($MYIP)"
fi

exit 0

Koska olin laiska, ldcpp:stä pitää olla asetettuna jokin IP että tuo osaa muuttaa sen. Ts. mikäli IP kohdassa on tyhjää, ei tuo myöskään siihen mitään aseta.

Saa vapaasti levittää, sempä takia tuohon englantia kirjoitinkin.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 26.02.08 - klo:01.07
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 26.02.08 - klo:01.28
No samapa tuo, kun en nopeuksissa mitään eroa huomannut. Vieläkin helpommin taitaisi saada whatismyip.org:sta, mutta vaikuttaa hitusen hitaammalta (no onko tuolla nyt sitten väliä) ja näyttää kyselyjen määrää rajoittavan.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Migeman - 29.02.08 - klo:16.23
Simppeli painoindeksin laskija
Koodia: [Valitse]
# Painoindeksilaskuri, Migeman
print 'Painoindeksilaskuri'
pituus = input('pituutesi m: ')
paino = input('painosi kg: ')

painoindeksi = paino / (pituus * pituus)
print 'painoindeksisi on', painoindeksi
if painoindeksi <=18.5:
   print 'Olet alipainoinen :('
elif painoindeksi >= 25:
   print 'Olet ylipainoinen :('
else:
   print 'Olet normaalipainoinen, onnea :)'
Laskin, toimiva sinäänsä, mutta täysin turha oikeastaan.
Koodia: [Valitse]
#Laskin, Migeman
#skandit eivat toimi...
print 'Laskin'
print '1) pluslasku 2) miinuslasku 3) kertolasku 4) jakolasku'
laskutyyppi = input('Valitse laskutyyppi: ')
if laskutyyppi == 1:
 luku1 = input('1. luku: ')
 luku2 = input('2. luku: ')
 vastaus = luku1 + luku2
 print 'lukujen summa on:', vastaus
elif laskutyyppi == 2:
 luku1 = input('vahennettava: ')
 luku2 = input('vahentaja: ')
 vastaus = luku1 - luku2
 print 'lukujen erotus on:', vastaus
elif laskutyyppi == 3:
 luku1 = input('kerrottava luku: ')
 luku2 = input('kertoja: ')
 vastaus = luku1 * luku2
 print 'lukujen tulo on', vastaus
elif laskutyyppi == 4:
 luku1 = input('jaettava luku: ')
 luku2 = input('jakaja: ')
 vastaus = luku1 / luku2
 print 'lukujen jakojaannos on:', vastaus
else:
 print 'virhe, valitse luku 1-4'

Btw, miten noi skandit saa toimimaan Pythonissa, itellä tulee vaan error kun koitan laittaa niitä.
Ubuntun mukana tullutta Python 2.5 käytän.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: raimo - 29.02.08 - klo:16.35
Btw, miten noi skandit saa toimimaan Pythonissa, itellä tulee vaan error kun koitan laittaa niitä.
Ubuntun mukana tullutta Python 2.5 käytän.
Minen käärmekielestä ymmärrä mitään, mutta sehän kehottaa siinä virheilmossa lukemaan tämän:
http://www.python.org/dev/peps/pep-0263/ tuolla on pitkät sepostukset aiheesta.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 25.03.08 - klo:13.47
#Kikkare vaihtelee Oulun uimahallin reaaliaikaisien web-kameroiden
#välillä kuvia kolmen sekunnin välein.
#Koodia saa parantaa ja muuttaa miten tahtoo.
#Kikkare tekee hakemiston Uinti, jonka voi myöhemmin poistaa.

#!/bin/bash
mkdir Uinti
cd Uinti
while true;do

#Hyppyalue
wget http://213.216.208.153/otos/localImages/0014D18A32FD-0.jpg?1206442293861
mv 0014D18A32FD-0.jpg?1206442293861 Hyppyalue
eog Hyppyalue &
sleep 3
killall eog

#Isoallas
wget http://213.216.208.153/otos/localImages/0014D18A32F8-0.jpg?1206443911233
mv 0014D18A32F8-0.jpg?1206443911233 Isoallas
eog Isoallas &
sleep 3
killall eog

#Kuntoallas
wget http://213.216.208.153/otos/localImages/0014D18A32F6-0.jpg?1206444031714
mv 0014D18A32F6-0.jpg?1206444031714 Kuntoallas
eog Kuntoallas &
sleep 3
killall eog

#Monitoimiallas
wget http://213.216.208.153/otos/localImages/0014D18A32F9-0.jpg?1206444265661
mv 0014D18A32F9-0.jpg?1206444265661 Monitoimiallas
eog Monitoimiallas &
sleep 3
killall eog

done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 25.03.08 - klo:16.36
killall eog

Ei ole kovin kilttiä tappaa kaikkia ohjelman instansseja. Parempi tapa on ottaa prosessia luotaessa sen prosessi-id (pid) talteen ja käyttää sitä instanssin tappamiseen. Lisäksi lataisin tiedoston suoraan oikealle nimelle antamalla wget:lle parametrin -Otiedosto.

Jos kuvat näytettäisiin jollakin KDE:n ohjelmalla niin tarkistaisin voiko kuvan vaihtaa dcop-rajapinnan kautta ilman että prosessia tarvitsee tappaa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: larpa - 27.03.08 - klo:07.46
killall eog

Ei ole kovin kilttiä tappaa kaikkia ohjelman instansseja. Parempi tapa on ottaa prosessia luotaessa sen prosessi-id (pid) talteen ja käyttää sitä instanssin tappamiseen. Lisäksi lataisin tiedoston suoraan oikealle nimelle antamalla wget:lle parametrin -Otiedosto.

Jos kuvat näytettäisiin jollakin KDE:n ohjelmalla niin tarkistaisin voiko kuvan vaihtaa dcop-rajapinnan kautta ilman että prosessia tarvitsee tappaa.

#Koodia saa parantaa ja muuttaa miten tahtoo.  ;)
En ole hyvä tekemään nuita, vaan teen ne siten että toimivat suhteellisen kätevästi. Itselläni ainakin toimii suht mukavasti.
Voisit kokeilla tehdä tuosta paremman version(ei vaadi paljoa), niin oppisin minäkin enempi?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tuplanolla - 27.03.08 - klo:07.54
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Vielä helpommin saa tällä: ;D
Koodia: [Valitse]
curl 'tuplanolla.dy.fi/iposoite.php'
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: nebula - 27.03.08 - klo:08.24
Saakos tohon uimahalli "kikkareeseen" kuvaa naisten saunasta? ... miel. parin sekunnin päivitystahdilla
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 27.03.08 - klo:18.16
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Vielä helpommin saa tällä: ;D
Koodia: [Valitse]
curl 'tuplanolla.dy.fi/iposoite.php'

Jos arvata pitäisi niin olettaisin että checkip.dyndns.org on varmemmin tavoitettavissa kuin tuplanolla.dy.fi :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tuplanolla - 27.03.08 - klo:18.50
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Vielä helpommin saa tällä: ;D
Koodia: [Valitse]
curl 'tuplanolla.dy.fi/iposoite.php'

Jos arvata pitäisi niin olettaisin että checkip.dyndns.org on varmemmin tavoitettavissa kuin tuplanolla.dy.fi :)
Joo, varmasti on ;D
Mut toi nyt vaan oli esimerkki.

Koodia: [Valitse]
curl 'whatismyip.org'Tuo on paljon helpompi kuin tuo sinun ehdottamasi ja varmasti toimivampi kuin tuplanolla.dy.fi.

Sitä paitsi:
Lainaus
jani@zeus:~$ uptime
 18:50:57 up 110 days,  4:42,  1 user,  load average: 0.01, 0.06, 0.10
jani@zeus:~$
Kyllä tuo musta aika hyvin on näin kotiservuksi. :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 27.03.08 - klo:19.53
Koodia: [Valitse]
curl 'whatismyip.org'Tuo on paljon helpompi kuin tuo sinun ehdottamasi ja varmasti toimivampi kuin tuplanolla.dy.fi.

Tuo on ihan hyvä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 27.03.08 - klo:20.06
Voisit kokeilla tehdä tuosta paremman version(ei vaadi paljoa), niin oppisin minäkin enempi?

Olen jo tehnyt hieman vastaavan esimerkin joka löytyy (http://forum.ubuntu-fi.org/index.php?topic=11295.msg119622#msg119622) tästä samasta säikeestä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: epi - 29.03.08 - klo:12.29
Itse löysin kovin käteväksi imagen mounttaus nautilus-scriptistä. Oli jo aikaisemminkin täällä, tosin hieman pitempi versio.
En muista missä tuli vastaan.

Koodia: [Valitse]
#!/bin/bash
# mount

gksudo -k /bin/echo "got r00t?"

BASENAME=`basename $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS .iso`

sudo mkdir "/media/$BASENAME"

if sudo mount -o loop -t iso9660 $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS "/media/$BASENAME"
then
if zenity --question --title "ISO Mounter" --text "$BASENAME Successfully Mounted. Open Volume?"

then
nautilus /media/$BASENAME --no-desktop
fi

exit 0
else
sudo rmdir "/media/$BASENAME"

zenity --error --title "ISO Mounter" --text "Cannot mount $BASENAME!"

exit 1
fi

Kaverin modaus avaa Kaffeinella DVD:n toistoon, tosin siinä on vielä bugi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 29.03.08 - klo:12.50
Itse löysin kovin käteväksi imagen mounttaus nautilus-scriptistä.

Tuo skripti vaatii suorittajalta pääkäyttäjän oikeudet, mikä ei ole erityisen hyvä asia.

KDE-Apps.org:sta löytyy esimerkiksi FuseISOMenu (http://www.kde-apps.org/content/show.php/FuseISOMenu?content=73966), jossa homma on tehty oikein ja liittäminen onnistuu myös tavallisilta käyttäjiltä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 05.04.08 - klo:17.33
Iski kauhea himo lukea kaikki Viivit ja Wagnerit läpi Hesarin sivuilta.
http://www.hs.fi/viivijawagner/
Piti kehittää jokin hommaa helpottava  konsti:
Koodia: [Valitse]
#!/bin/bash

#########################################
sivu=http://www.hs.fi/viivijawagner/
viimeinenpvm=15.3.2001
tallennuskansio="$HOME/Viivi_ja_Wagner"
##########################################

if  ! [ -d "$tallennuskansio" ]
then
mkdir -p "$tallennuskansio"
fi
cd "$tallennuskansio"

function nouto()
{
wget $sivu  -O sivu.html
kuva=$(cat sivu.html | grep iso_webkuva|grep -v departmentLogo|cut -d '"' -f2)
numero=$(cat sivu.html| grep  "<h1>Viivi ja Wagner</h1>" -n| cut -d ":" -f1)
pvmrivi=$(echo $numero +1|bc)
pvm=$(cat sivu.html|sed -n "$pvmrivi"p| sed -e 's/</ /g' -e 's/>/ /g'|cut -d " " -f3)
kansio=$(echo $pvm|cut -d "." -f3)
kansio1=$(echo $pvm|cut -d "." -f2)

if [ "$kansio1" -lt "10" ]
then
kansio1=0$kansio1
fi
vrk=$(echo $pvm|cut -d "." -f1)
if [ "$vrk" -lt "10" ]
then
pvmtied=0"$pvm"
else
pvmtied="$pvm"
fi

sijainti=$(echo "$kansio"/"$kansio1")
if ! [ -d "$tallennuskansio"/$sijainti ]
then
mkdir -p "$tallennuskansio"/$sijainti
fi
wget $kuva -O  "$tallennuskansio"/$sijainti/Viivi_ja_Wagner-$pvmtied.gif
}

nouto

if  [ "$1" = edelliset ]
then
        until [ "$pvm" = "$viimeinenpvm" ]
do
edellinenrivi=$(cat sivu.html | grep "Edellinen&nbsp" -n | cut -d ":" -f1)
edellinensivurivi=$(echo $edellinenrivi -1|bc)
sivu=$(cat sivu.html|sed -n "$edellinensivurivi"p|cut -d '"' -f2)
nouto
done
fi
rm sivu.html
./viiviwagner
imauttaa vimeisimmän ja
./viiviwagner edelliset
 kaikki muut viimeinenpvm asti mikäli se on olemassa. Kuvat menee vuosittain ja kuukasittain omiin kansioihinsa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: pumo - 07.04.08 - klo:15.31
olen itse vähän vastaavalla haeskellu ajastetusti crontabilla joka aamu (paitsi sunnuntaisin) sarjikset hesarilta. samalla saa myös fingerporin.

Koodia: [Valitse]
#!/bin/sh
date=`date +%Y-%m-%d`
kuva=`lynx -image_links -dump http://www.hs.fi/viivijawagner/ |grep iso_webkuva |gawk '{print $2}'|sed -n '2p;2q'`
wget "$kuva" -q -O $HOME/public_html/sarjis/vw-$date.gif

kuvaFP=`lynx -image_links -dump http://www.hs.fi/fingerpori/ |grep iso_webkuva |gawk '{print $2}'`
wget "$kuvaFP" -q -O $HOME/public_html/sarjis/fp-$date.gif
edit lisätty fingerpori.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: snifi - 29.04.08 - klo:12.36
Kysymykseni tähän ketjuun: Miten annetaan cat-komennolle parametrit, jotta komento keräisi tekstitiedostot yhdeksi ja lisäisi väliin aina tiedostonnimen? Ensimmäisen vaiheen olen selvittänyt:

find . -name '*.c' | xargs cat >kokoelma.c

mutta miten saisin tiedostonnimet mukaan?
Tähän tapaan: (tiedosto "kokoelma.c")

Koodia: [Valitse]
########################
# tiedosto1.c
########################
<tiedosto1.c sisältö tähän>

########################
# tiedosto2.c
########################
<tiedosto2.c sisältö tähän>

########################
# tiedosto3.c
########################
<tiedosto3.c sisältö tähän>

<jne...>
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: gdm - 29.04.08 - klo:12.55
@ snifi
eräs keino find . -iname '*' |tee -a ~/testi.txt
tuolla listaa tiedostot ja niiden sisällön kotikansioon tiedostoon testi.txt
komento suoritetaan halutun hakemiston juuressa ja siis listaa kaikki kansiot ja tiedostot rekursiivisesti
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: beh - 29.04.08 - klo:14.05
toinen keino voisi olla for-silmukka:
Koodia: [Valitse]
for i in "$( find . -name '*.c' )"; do echo "$i" >> kokoelma.c; cat "$i" >> kokoelma.c; done
lisää vain ylimääräisiä rivejä ja erottimia echolla.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: snifi - 29.04.08 - klo:22.39
Päädyin nyt sitten kumminkin tällaiseen pytoniaaniseen ratkaisuun:

Koodia: [Valitse]
#!/usr/bin/env python

# example:
# ~/makehuman$ python kokoa.py ".*cpp" >kokoelma.cpp

import os, sys
import re

if len(sys.argv) < 2:
  rexp = ".*"
else:
  rexp = sys.argv[1]


p = re.compile(rexp)

t = []
for root, dirs, files in os.walk('.'):
  for f in files:
    filename = "%s%s%s" % (root, os.sep, f)
    if p.match(filename) and os.stat(filename)[6] > 0:
      t.append(filename)


for f in t:
  print
  print 60*"#"
  print "# %s" % f
  print 60*"#"
  print
  h=open(f)
  print h.read()
  h.close()
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tuxer - 30.04.08 - klo:18.47
(Kun en ole oikein Vappu-ihmisiä niin kokeilin sitten hieman bash-skriptausta :) )

Ummikon ei Linuxissa (mukaan lukien Ubuntu) ole kovin helppoa löytää tietoa omasta koneestaan eli "mistä nään mikä näytönohjain mulla on" kysymyksiä tälläkin foorumilla näkyy.

Nippelitieto v0.01 kertoo joitain perustietoja koneestasi

Olen tasan yhden bash-skriptin tätä ennen tehnyt (tarkisti on Enemy Territory -palvelin pystyssä ja jos ei ollut, käynnisti uudelleen), joten vähän hapuilua on. Tosin tässä nyt ei varsinaisesti ole muuta kuin sed:ia ja awk:ia ...

Korjailkaa paremmaksi :)

Koodia: [Valitse]
#!/bin/bash

# Nippelitieto v0.01
# Tämä skripti kaivelee joitain yleisimmin esim. Ubuntu-foorumilla kyseltyjä tietoja tietokoneestasi
# KÄYTTÖ
# - lataa skripti koneellesi
# - anna skriptille suoritusoikeudet (GNOME: klikkaa oikealla ja valitse Ominaisuudet -> Oikeudet -> Salli tiedoston suorittaminen ohjelmana
# tuplaklikkaa tiedostoa ja valitse "Suorita päätteessä"

e='---------'

echo "Nippelitieto 0.1"
echo ''

echo $e'Linux-jakelusi versio'$e
lsb_release -d  | awk '{split ($0, a, ":"); print a[2]}'
echo ''

echo $e'Kieli'$e
echo $LANG
echo ''


echo $e'Koneesi prosessori on'$e
cat /proc/cpuinfo | grep 'model name' | awk '{split ($0, a, ":"); print a[2]}'
echo ''

echo $e'Koneessasi on keskusmuistia (megatavuina) '$e
free -m|grep 'Mem'| awk '{split ($0, a, " "); print a[2]}'
echo ''

echo $e'Näytönohjaimesi on:'$e
lspci | grep 'VGA' | awk '{split ($0, a, ":"); print a[3]}'
echo ''

echo $e'Näytönohjaimen 3D-tuki:'$e
glxinfo | grep 'direct rendering: Yes' > /dev/null && echo 'päällä' || echo 'ei päällä' 
echo ''

echo $e'Äänikorttisi on:'$e
lspci | grep -i 'audio' | awk '{split ($0, a, ":"); print a[3]}'
echo ''

echo $e'Käytössäsi on seuraavat ohjelmalähteet:'$e
sed -e 's/#.*//;/^$/d' /etc/apt/sources.list | awk '{split ($0, a, "//"); print a[2]}'

#pidetään terminaali-ikkuna auki väkisin tuplaklikkaajille
echo ''
echo "Paina Enter lopettaaksesi"
echo ''
read

#zenity --text-info --filename=$HOME/$filename
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 30.04.08 - klo:18.51
Hyvä skripti, mutta tuo muisti on kB eikä MB kuten toivoisin vaan käy se noinkin... ::)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tuxer - 30.04.08 - klo:19.07
Hyvä skripti, mutta tuo muisti on kB eikä MB kuten toivoisin vaan käy se noinkin... ::)

Ok, korjasin tuon. Kokeilin ihan aluksi saada sitä megatavuina free-komennolta mutta luovutin. Sitten löysin awkin ja sillähän sen sieltä sai kaivettua.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 07.05.08 - klo:20.43
#IhQ kikkare hakee irc-galleriasta satunnaisia kuvia ja avaa niitä 3 sekunnin välein eog-ohjelmalla
#scriptistä pääsee pois Ctrl+c :)
#eog täytyy olla asennettuna(jos ei ole niin: sudo apt-get install eog)
#en ota vastuuta menetetyistä tiedostoista

#!/bin/bash
cd                              #siirrytään kotihakemistoon
mkdir KuvatXyZklM   # tehdään väliaikaistiedosto, ettei poisteta .jpg-tiedostoja
cd KuvatXyZklM
while true; do            #tästä alkaa loputon looppi
OSOITE=`lynx -source http://irc-galleria.net/random.php | grep jpg | tail -1 | cut -d " " -f4 | cut -d "=" -f2 | sed 's/"//g'`
wget $OSOITE
eog *.jpg &
sleep 3
killall eog
rm *.jpg
done





Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..

Koodia: [Valitse]
#!/bin/bash

cd
mkdir -p ~/KuvakeRandomi
cd ~/KuvakeRandomi
while true;do
w3m -no-cookie -dump_source http://kuvake.net/kk.php?mode=girls | grep jpg  > url.txt
osoite=`cat url.txt | grep jpg | cut -d '"' -f8 | cut -d '"' -f9`
wget -q $osoite
eog *.jpg &
sleep 3
killall eog
rm *.jpg
rm url.txt
done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 07.05.08 - klo:20.52
Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..
Kuulostaa vähän pedofiilin hommilta... ::) Pedofiilis?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 07.05.08 - klo:20.55
Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..
Kuulostaa vähän pedofiilin hommilta... ::) Pedofiilis?


Eiii välttämättä, kuka hetero poika jaksaapi katella poikien kuvia ruudullaan kun voi katella pelkkiä tyttöjä? :) En ainakaan minä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 07.05.08 - klo:21.44
Teimpäs tämän koodi pätkän innoittamana oman versioni tästä, mutta tämä hakee kuvat kuvake.netistä ja plussaa tässä on se, että hakee vain Tyttöjen kuvia. Tai no voihan siel olla poikiakin jos joku on laittanu sinne omaks sukupuolekseen tyttö vaikka on poika, mutta sama se.. :D nauttikaa ken nauttii..
Kuulostaa vähän pedofiilin hommilta... ::) Pedofiilis?


Eiii välttämättä, kuka hetero poika jaksaapi katella poikien kuvia ruudullaan kun voi katella pelkkiä tyttöjä? :) En ainakaan minä.
Juu totta, en minä myöskään. :) Tuli vaan mieleen että nyt joku pedofiili ottaa tuosta mallia ja alkaa tutkimaan sopivaa uhria. Okei "vähän" hölmö juttu. ;D
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 08.05.08 - klo:14.12
Jos joku käyttää mplayerthumbsia (KDE) tekemään videoista pienoiskuvakkeet ja ole tyytyväinen otokseen, niin eipä hätää  :D.
Eli mplayerthumbs siis napsii satunnaisesta kohtaa videota esikatselun. Tai no ei aivan satunnaisesti, sillä se jättää tietyn osan alusta ja lopusta huomioimatta. DigiTV:n tallenteet kannattaa siirtää mustalle listalle  ajamalla mplayerthumbsconfig.
/usr/local/bin/rmthumbs
Koodia: [Valitse]
#!/bin/bash
cd $(dirname $1)
kansio=$(pwd)
for i in $@
do
MD5=$(echo -n "file://$kansio/$(basename $i)"|md5sum|cut -d " " -f1)
rm $HOME/.thumbnails/normal/$MD5.png $HOME/.thumbnails/large/$MD5.png
done
chmod a+x  /usr/local/bin/rmthumbs

Kandidaatteja:
$HOME/.kde/share/konqueror/servicemenus/rmthumbs.desktop
$HOME/.kde/share/d3lphin/servicemenus/rmthumbs.desktop
$HOME/.kde/share/dolphin/servicemenus/rmthumbs.desktop
Koodia: [Valitse]
[Desktop Entry]
ServiceTypes=video/*
Actions=poista;
[Desktop Action poista]
Name=Tee esikatselu uudelleen
Exec= rmthumbs  %f
Icon=video

Muoks kirotusvihre
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ooo - 09.05.08 - klo:16.03
Meidän suvun seniori ei sitten millään oppinut miten valitaan ja raahataan tiedostoja mp3-soittimelle (ks. http://forum.ubuntu-fi.org/index.php?topic=13189 (http://forum.ubuntu-fi.org/index.php?topic=13189)). Onneksi tästä ketjusta tuli vastaan uusi tuttavuus, eli zenity. Sen avulla tein pikaisesti tällaisen bash-skriptin, joka oli riittävän yksinkertainen kyseiselle eläkeläiselle.

Koodia: [Valitse]
#!/bin/bash
#
# Tämän skriptin avulla voidaan lisätä musiikkia tai poistaa musiikkia
# kannettavalta soittimelta.
#
# Tälle skriptille pitää antaa suoritusoikeudet komentamalla:
# chmod u+x soittimen_hallinta.sh
#
# Tämä skripti ajetaan komennolla:
# ./soittimen_hallinta.sh


# Muuta seuraavat kaksi riviä vastaamaan haluamiasi asetuksia:
kohde="/media/KINGSTON/" # Tämä on soittimen mounttauspiste.
kohdenimi="KINGSTON" # Tämä on edellisen rivin polun viimeisen 'kansion' nimi. Tätä tarvitaan mounttauksen tarkistamiseen.
lahde="/home/koti/" # Tämä on kansio, jossa musiikki on kovalevyllä.




function lopetus() {

fuser -k "$kohde"

zenity --info \
--title="Poistuminen ohjelmasta" \
--text=" Ennen kuin irrotat soittimesi johdon\n tietokoneesta, muista ensin irrottaa soitin, jne..."  # Tähän vielä tarkemmat ohjeet miten tehdään työpöydältä.

exit
}




# Testataan onko soitin mountattu.
lista=`df | grep -o "$kohdenimi"`

if [ "$lista" != "$kohdenimi" ]; then
zenity --warning \
--text=" SOITINTA EI ILMEISESTI OLE\n LIITETTY TIETOKONEESEESI.\n\n Liitä soitin johdolla tietokoneeseesi\n ja käynnistä tämä ohjelma uudelleen."
exit
fi



vaihtoehto1="Lisää musiikkia soittimeen"
vaihtoehto2="Poista musiikkia soittimesta"
vaihtoehto3="Näytä soittimella nyt oleva musiikki listana"


while [ "1" ] # Tehdään looppi, jota jatketaan kunnes zenityn exit coden mukaan lopetetaan (ks. rivit alempana).
do

clear

valittutoiminto=$(
zenity --list \
--height "400" \
--width "400" \
--text " Tätä ohjelmaa voit käyttää kannettavan\n soittimesi musiikin lisäämiseen ja/tai poistamiseen.\n Laita rasti ruutuun ja valitse sitten OK." \
--title "Kannettavan soittimen musiikki" \
--radiolist \
--column "Valinta" \
--column "Toiminto" \
FALSE "$vaihtoehto1" \
FALSE "$vaihtoehto2" \
FALSE "$vaihtoehto3"
)

if [ "$?" != "0" ]; then
lopetus
fi


if [ "$valittutoiminto" == "$vaihtoehto1" ]; then

zenity --warning \
--text=" MUSIIKIN LISÄÄMINEN SOITTIMEESI\n\n Voit valita useita kansioita pitämällä\n Ctrl-näppäimen pohjassa ja klikkaamalla hiirellä\n sitten useiden kansioiden nimiä."

tiedostot=`zenity --file-selection --filename="$lahde" --directory --multiple --title="Valitse KOPIOITAVAT kansiot"`

cp -f -r --reply=yes "$tiedostot" "$kohde" | zenity --progress --pulsate --auto-close \
        --title="Kopioidaan" --text=" Musiikkia kopioidaan soittimellesi.\n Odota kunnes tämä ikkuna\n sulkeutuu automaattisesti."

if [ "$?" != "0" ]; then
zenity --error --text="Kopiointi keskeytyi."
fi

clear
fi



if [ "$valittutoiminto" == "$vaihtoehto2" ]; then

zenity --warning \
--text=" MUSIIKIN POISTAMINEN SOITTIMESTASI\n\n Voit valita useita kansioita pitämällä\n Ctrl-näppäimen pohjassa ja klikkaamalla hiirellä\n sitten useiden kansioiden nimiä."

tiedostot=`zenity --file-selection --filename="$kohde" --directory --multiple --title="Valitse POISTETTAVAT kansiot"`

rm -f -r "$tiedostot"

clear
fi


if [ "$valittutoiminto" == "$vaihtoehto3" ]; then

ls $kohde | zenity --text-info --title "Soittimellasi nyt olevat kansiot"

clear
fi


done


Pari kauneusvirhettähän tuossa koodissa on:
1) Zenity progress bar ei kopioitaessa liiku, mutta toimii hyvänä popuppina joka kertoo, että jotain sentään tapahtuu.
2) 'Popuppeja' on sinänsä liikaa, mutta satunnaiselle käyttäjälle lienee ihan ok että ennemmin saa ohjeita kaikkeen.
3) Tämä kopioi vain kokonaisia kansioita. Yksittäiset biisit oli jo liian vaikeaa seniorille  ;D
4) Ilman sudoa ei soitinta saa (helposti) mountattua, joten laitoin vain ohjeet siihen miten se tehdään.
5) Alussa tarkistetaan onko soitin mountattu, se voitaisiin varmaan tehdä nätimminkin.

Kertokaapa toki parannuksia.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 12.07.08 - klo:13.29
Onnistuukohan turhien pakettien poisto anacronin kautta? Väsäilin tällaisen skriptinpätkän, jonka laitoin /etc/cron.weekly -hakemistoon. Tässä käytin aptitude cleania, mutta epäilen sen toimivuutta koska sehän kysyy että poistetaanko paketit Y/n. Olisko muuta tapaa? btw, kumpaa olisi parempi käyttää nohupia vai &-merkkiä lopussa?
Koodia: [Valitse]
#!/bin/bash

# - Viikottaiset ajastetut toiminnat -
# 1. Ylimääräisten pakettien poisto

# nohup aptitude clean &
# echo "Viikottainen aptitude clean suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi

# 2. Vanhojen conffitiedostojen poisto, lainattu ubucleaneristä

OLDCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')
nohup aptitude purge $OLDCONF &
echo "Viikottainen vanhojen conf-tiedostojen poisto suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi

# 3. Locaten databeissin päivitys

nohup updatedb &
echo "Viikottainen updatedb locatelle suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi
                                         
echo "---------------------------------" >> /home/vellu/dokit/anacronlogi
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: janne - 12.07.08 - klo:13.41
Koodia: [Valitse]
# 3. Locaten databeissin päivitys

nohup updatedb &
echo "Viikottainen updatedb locatelle suoritettu:" >> /home/vellu/dokit/anacronlogi ; date >> /home/vellu/dokit/anacronlogi


eikös tuo ole hitusen päälekäinen locaten asentaman /etc/cron.daily/locate:n kanssa?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 12.07.08 - klo:14.33
Ei siellä /etc/cron.daily:ssä mitään locate tiedostoa ole. mlocate kylläkin, mutta se ei käsittääkseni päivitä mitään.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: janne - 12.07.08 - klo:18.12
Ei siellä /etc/cron.daily:ssä mitään locate tiedostoa ole. mlocate kylläkin, mutta se ei käsittääkseni päivitä mitään.

no, minulla on ja minulla se tarjoaa ko. tiedoston:
Koodia: [Valitse]
# dpkg -L locate | grep cron
/etc/cron.daily
/etc/cron.daily/locate

tosin tuo mlocate on locaten uusi implementaatio, joten voisin varmaan poistaa tuon locaten kokonaan. siltikin...

Koodia: [Valitse]
$ ls -l `which updatedb`
lrwxrwxrwx 1 root root 26 2008-06-25 20:46 /usr/bin/updatedb -> /etc/alternatives/updatedb
$ ls -l /etc/alternatives/updatedb
lrwxrwxrwx 1 root root 25 2008-07-12 18:08 /etc/alternatives/updatedb -> /usr/bin/updatedb.mlocate

ja sattumoisin tuo /etc/cron.daily suorittaa komennon /usr/bin/updatedb.mlocate jos se on olemassa ja säätää vielä sen prioriteettia jos /usr/bin/ionice on olemassa.


Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 12.07.08 - klo:23.45
Haikara studio 8.04:
Koodia: [Valitse]
root@v-machine:/home/vellu# ls -l 'which updatedb'
ls: cannot access which updatedb: No such file or directory
root@v-machine:/home/vellu# ls /etc/cron.daily/
0anacron  aptitude      find       mlocate            standard
apport    bsdmainutils  logrotate  OMA-dailyskripti   sysklogd
apt       exim4-base    man-db     OMA-dailyskripti~
root@v-machine:/home/vellu# ls -l /etc/alternatives/updatedb
lrwxrwxrwx 1 root root 25 2008-07-07 02:33 /etc/alternatives/updatedb -> /usr/bin/updatedb.mlocate
root@v-machine:/home/vellu# cat /etc/cron.daily/mlocate
#! /bin/sh

set -e

[ -x /usr/bin/updatedb.mlocate ] || exit 0

# See ionice(1)
if [ -x /usr/bin/ionice ]; then
    IONICE="/usr/bin/ionice -c3"
fi

$IONICE /usr/bin/updatedb.mlocate
root@v-machine:/home/vellu# dpkg -L locate | grep cron
Package `locate' is not installed.
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: janne - 13.07.08 - klo:00.00
Haikara studio 8.04:
Koodia: [Valitse]
root@v-machine:/home/vellu# ls -l 'which updatedb'
ls: cannot access which updatedb: No such file or directory

hipsut on väärin. `-hipsuilla sisällä olevan komento suoritetaan '-hipsuilla ei.


Koodia: [Valitse]
[ -x /usr/bin/updatedb.mlocate ] || exit 0

tuossa tarkistetaan onko tiedostolla /usr/bin/updatedb.mlocate suoritusoikeudet (ja onko scripti olemassa), jos ei niin lopetetaan. käytännös tuo on totta jos mlocate on asennettu.

Koodia: [Valitse]
# See ionice(1)
if [ -x /usr/bin/ionice ]; then
    IONICE="/usr/bin/ionice -c3"
fi

tuossa puolestaan tarkistetaan on sama kuin aikaisemmin ionicelle ja jos se täyttää ehdot, sijoitetaan se komennoksi IONICE-muuttujaan.

Koodia: [Valitse]
$IONICE /usr/bin/updatedb.mlocate

tässä suoritetaan /usr/bin/updatedb.mlocate joko ionicen kanssa tai ilman ja kuten tuossa aikaisemmassa postauksessani totesin, se sinun suorittamasi updatedb on linkki toiseen linkkiin /etc/alternatives/updatedb joka osoittaa täsmälleen samaan tiedostoon kuin minkä tuo mlocate-scriptikin tuolla cron.dailyssä suorittaa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 23.07.08 - klo:22.37
Mikä on komento jos haluaa tietää onko paketti asennettu? Siis kaipaisin sellasta yksinkertasta että jos asennettu niin tulostaa vaan esim. että 'installed' ja jos ei niin ei tulosta mitään.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: anttimr - 23.07.08 - klo:22.41
apt-cache policy paketin_nimi
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 23.07.08 - klo:23.28
Joo-o mutta koska on menossa skirptiin, jota mahdollisesti käytetään muunkin kuin suomen kielisissä ubuntuissa on tuo vähän hankala ja turha ruveta grep:in kautta pistämään..
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: anttimr - 23.07.08 - klo:23.38
Ainiin, olihan myös
dpkg --get-selections paketin_nimi

Palauttaa vastauksena 1. kentässä paketin nimen ja toisessa tilasta riippuen install / deinstall / purge /  mahdollisesti jotain muuta. Tai ilmoituksen, jos pakettia ei löydetty (joskus asennetuista). Hardyssä ilmoitus on suomeksi.

Skriptin voi varmasti kirjoittaa siten, että kielellä ei ole väliä. Shellissä toimivien ohjelmien suomentaminen tuppaa silti harmittamaan. 
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 23.07.08 - klo:23.53
Kiitos! Tämä näyttää toimivan.. heitin perään  '| grep -o install' yksinkertaistaakseni hieman  :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ooo - 28.07.08 - klo:22.02
Tämä Gimpin Script-Fu toiminto avaa kaikki kansiossa olevat jpg-kuvat (huom. _vain_ jpg-kuvat), muuttaa niiden koon halutuksi (ks. graafinen käyttöliittymä) ja antaa halutun määrän unsharp maskia ja tallentaa kuvat samaan kansioon jpg-muodossa (laadun voi määrätä) joko korvaten vanhat tiedostot tai lisäten nimen perään loppuliitteen (esim. tiedosto.jpg tai tiedosto-uusi.jpg)

Toimii itselläni Ubuntu 8.04:n Gimp 2.4.5:ssä ja (pienellä muokkaamisella?) muissakin versioissa.

Lähteinä / mallina käytin mitä netistä googlella löysi.


Ohje:
1) Tallenna koodi kotihakemistosi .gimp-2.4/scripts kansioon esim. nimelle batch_resize.scm
2) Avaa Gimp.
3) Valitse Laajennokset-valikosta Script-Fu -kohdan alta Päivitä skriptit.
4) Jatkossa voi aina avata tämän skriptin Gimpin Laajennokset-valikon kohdan Muut alta.


Koodia: [Valitse]

(define (script-fu-batch-scale-ratio globexp type suffix maxdimhoriz maxdimvertic jpgqual manus radius amount threshold)
 
    (define (resize-img n f)

        (let*     ((fname (car f))
                (img (car (gimp-file-load 1 fname fname))))
     
        (let* (           
            ; Seuraavat rivit lisäävät tallennettavan tiedoston nimeen halutun lisäyksen.
            (filename (car (gimp-image-get-filename img)))
            (basename (substring filename 0 (- (string-length filename) (+ 1 (string-length type)))))
            (outputfname (string-append basename (string-append (string-append suffix ".") type)))
                                   
            (drawable   (car (gimp-image-active-drawable img)))
            (cur-width  (car (gimp-image-width img)))
            (cur-height (car (gimp-image-height img)))
            (ratio      (min (/ cur-width cur-height)))
           
               (new-width maxdimhoriz)
              (new-height (/ new-width ratio))
        )
       
        ; Jos kuva onkin pystykuva, niin lasketaan uudet mitat uudestaan.
        (if (< cur-width cur-height)
              (begin
                  (set! new-height maxdimvertic)
                  (set! new-width (* new-height ratio))
              )
           )
   
        (gimp-image-undo-disable img)
        (gimp-image-scale img new-width new-height)
                           
        ; Käytetään unsharp maskia terävöittämään kuvaa haluttu määrä.
        (plug-in-unsharp-mask manus img (car (gimp-image-active-drawable img)) radius amount threshold)
       
        ; Tallennetaan kuva. Huomaa, että tässä jpg-laadun pitää olla välillä 0..1.                   
        (file-jpeg-save 1 img (car (gimp-image-get-active-drawable img)) outputfname outputfname (/ jpgqual 100) 0 0 0 "" 0 0 0 0)
        (gimp-image-delete img)
      )
    )
 
    (if (= n 1) 1 (resize-img (- n 1) (cdr f)))
  )
 
   
  ; Lisätään polkuun vielä loppuosa, jotta haetaan siis vain kansiossa olevat halutun tyyppiset kuvat.
  (set! globexp (string-append globexp "/*."))
  (set! globexp (string-append globexp type))
 
  (let* ((files (file-glob globexp 0)))
     (resize-img (car files) (car (cdr files))))
)



; Rekisteröidään skripti GIMP:ssä ja määritellään sen sijainti valikossa.
(script-fu-register "script-fu-batch-scale-ratio"
    _"_Muuta jpg-kuvien kokoa - batch resize & unsharp mask"
    "Muuta valitsemasi kansion kuvien kokoa, terävöitä ne ja tallenna ne jpg-muodossa."
    "Teppo Terävä"
    "2008, Teppo Terävä"
    "Jul 25, 2008"
    ""
    SF-DIRNAME "Kansio" "~"
    SF-STRING "Avattavien kuvien pääte (jpg, JPG, jpeg)" "jpg"
    SF-STRING "Lisää nimiin loppuosa (tyhjä kenttä = korvataan tied.)" "-uusi"
    SF-VALUE "VAAKAkuvien uusi leveys (px)" "650"
    SF-VALUE "PYSTYkuvien uusi korkeus (px)" "650"
    SF-ADJUSTMENT "Tallennettavan tiedoston JPG-laatu" '(86 0 100 1 1 0 0)
    SF-TOGGLE "Rasti, jos unsharp maskille käytetään alla olevia arvoja" TRUE
    SF-VALUE "Unsharp maskin säde" "0.1"
    SF-VALUE "Unsharp maskin määrä" "0.75"
    SF-VALUE "Unsharp maskin kynnysarvo" "0"
)
(script-fu-menu-register "script-fu-batch-scale-ratio"
          "<Toolbox>/Xtns/Misc")

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Ville Pöntinen - 11.09.08 - klo:22.43
Tervehdys!

Kun en mitään osaa, kopioin muualta ja kyselen sitten täällä neuvoja  :D



Olen vähän kustomoinut koneeni koteloa ja tuli tarve saada cd-asema avattua hiirellä.

(Jos asemassa on levy, saa aseman avattua valitsemalla "Irrota" esim. työpöydältä. Mutta entäs silloin, kun ei ole?)

Löysin täältä https://help.ubuntu.com/community/EjectCDLauncher ohjetta.

Tässä ohje vapaasti suomennettuna:


Luodaan ja avataan tiedosto:

Koodia: [Valitse]
gksudo gedit /usr/local/bin/eject_cd
Liitetään seuraava teksti:

Koodia: [Valitse]
#
# Try to unmount a CD-Rom device, then eject it.
#

DEVICE="$1"
ZENITY_BIN="/usr/bin/zenity"


#Ctrl-C trapping
trap ctrlc INT
ctrlc()
{
echo -e "\nAborted by user."
rm -rf $TMP_DIR
exit 2
}


#Show a dialog with zenity
#@param  string  The text to display
show_dialog()
{
if [ "$use_zenity" -gt "0" ] ; then
zenity --error --title "CD-Rom eject" --info-text "$1"
fi
}


#Get parameters
if [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then
echo "Usage: eject_cdrom [-q] DEVICE"
echo -e "Try to unmount DEVICE then eject it if successful.\n"
echo "Possible parameters:"
echo -e "-h, --help\tdisplay this help and exit."
echo -e "-z, --zenity\tuse zenity to displays errors in dialog windows."
exit 0
fi

if [ "$1" == "-z" ] || [ "$1" == "--zenity" ] ; then
if [ ! -x "$ZENITY_BIN" ] ; then
echo "You must install zenity before that."
exit 1
fi
use_zenity="1"

device="$2"
else
use_zenity="0"
device="$1"
fi


#Device check
#TODO: Check if DEVICE is truly a device.
if [ ! -e "$device" ] ; then
echo "Parameter DEVICE is not a file."
exit 1
fi


echo "Trying to eject CD-Rom..."

#Unmount
umount "$device" 2>/dev/null
last_err="$?"

if [ "$last_err" -eq "1" ] ; then
msg="Cannot unmount device $device (busy)."
echo "$msg"
show_dialog "$msg"
exit 1
fi

#Eject
eject "$device"
last_err="$?"

if [ "$last_err" -ne "0" ] ; then
msg="Cannot eject device."
echo "$msg"
show_dialog "$msg"
exit 1
fi

exit 0

Tallennetaan ja suljetaan.

Annetaan tiedostolle ajo-oikeus:

Koodia: [Valitse]
sudo chmod +x /usr/local/bin/eject_cd
Ja (Gnome-) ohje kuvakkeen tekemiseen:

Napsauta hiiren oikeata paneelin päällä ja valitse "Lisää paneeliin". Napsauta "Muun sovelluksen käynnistin" ja paina Lisää.

Nimi: Avaa cd-asema
(*) Komento:

Koodia: [Valitse]
/usr/local/bin/eject_cd /dev/scd0
Vielä napsautus kuvakkeen päällä ja tekstiruutuun

Koodia: [Valitse]
/usr/share/icons/gnome/scalable/devices/drive-optical.svg
(Alkuperäisessä ohjeessa eri ikoni.)


Ja nyt se toimii. Kuvakkeen napsautuksella asema aukeaa oli siellä levy tai ei. Ja aukeaa vaikka kuuntelin Ramonessia cd-levyltä Rytmilaatikolla (Rytmilaatikko lopetti toiston ja asema aukesi.)



Ja sitten niiden neuvojen perään:

Itse scriptissä on kuitenkin erilaisia viestejä. Miten scriptiä voisi hioa, että mahdolliset virheet tulisivat näkyviin graafisesti? Kuvakkeen kautta käynnistettynä ne eivät "mene" minnekään vaan kuvake vain nytkähtää...

Entä miten scriptistä saisi sellaisen, että se imaisisi kelkan sisään jos se sattuukin olemaan auki?




(*)Tämä on alkuperäisessä ohjeessa eri tavalla. Siellä viitataan otukseen /dev/cdrom, jota ei ainakaan minulla ole. Minulla tutkailu meni seuraavasti:

Koodia: [Valitse]
ville@thepontiset:~$ ls /dev/cd* -la
lrwxrwxrwx 1 root root 4 2008-09-11 20:02 /dev/cdrom3 -> scd0
lrwxrwxrwx 1 root root 4 2008-09-11 20:02 /dev/cdrw3 -> scd0

Ja kokeillin scriptiä päätteessä:

Koodia: [Valitse]
ville@thepontiset:~$ /usr/local/bin/eject_cd /dev/scd0
Trying to eject CD-Rom...

Jolloin asema aukesi. Eli /dev/scd0 osoittaa (ainakin minulla) ainoaan cd-asemaani. Onkos tämä vakio nykyään? Ja mikäs tuommoinen cdrom3 oikein on? Olen kyllä tämänkin Ubuntu-asennuksen aikana vaihtanut cd-aseman tilalle uuden, mutten sentään kolmesti (logiikalla cdrom0 > cdrom1 > cdrom2 > cdrom3  ??? ). Eli tältä osin scripti vaatinee tarkistamista / käsityötä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 12.09.08 - klo:02.26
(Jos asemassa on levy, saa aseman avattua valitsemalla "Irrota" esim. työpöydältä. Mutta entäs silloin, kun ei ole?)
.
.
.
Entä miten scriptistä saisi sellaisen, että se imaisisi kelkan sisään jos se sattuukin olemaan auki?
Tuota kelpaako ratkaisuksi (man ejectin mukaan laitteistoriippuvainen):

Koodia: [Valitse]
#!/bin/bash
if   [  $(grep /dev/scd0 /etc/mtab|wc -l) -eq 0  ]; then
eject -T /dev/scd0
else
umount /dev/scd0 && eject /dev/scd0 && exit 0
        echo Ei onnistu
fi

zenity ei KDE:n käyttäjältä taivu  ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 12.09.08 - klo:02.35
Meikäläisellä flash alkoi  keittää yli  ::)
Pari skriptiä, joilla voidaan vähentää sen käyttöä.


Youtubelinkit on mukavinta avata tällä lisävirityksellä suoraan soittimeen:

Tarvitsee youtube-dl:n asennuksen
$HOME/.kde/share/apps/konqueror/servicemenus/tuubi.desktop
Koodia: [Valitse]
[Desktop Entry]
ServiceTypes=text/html
Actions=katso-mp4;katso-flv;tallenna-mp4;tallenna-flv
Icon=video
Encoding=UTF-8
X-KDE-Submenu=Lataa Youtube-video
[Desktop Action katso-mp4]
Name=Katso Youtube-video MPlayerillä (mp4)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u a mp4
Icon=video
[Desktop Action katso-flv]
Name=Katso Youtube-video MPlayerillä (flv)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u
Icon=video
[Desktop Action tallenna-mp4]
Name=Tallenna ja katso Youtube-video (mp4)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u lataa mp4
Icon=video
[Desktop Action tallenna-flv]
Name=Tallenna ja katso Youtube-video (flv)
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/youtube %u lataa
Icon=video

$HOME/.kde/share/apps/konqueror/servicemenus/youtube

Koodia: [Valitse]
#!/bin/bash
#käyttäjätunnus
kt=
#salasana
ss=
soitin=/usr/bin/smplayer
url=$1

a=0

while [ -f /tmp/ytdl-$a ]
do
a=$( expr $a + 1)
done

if [ "$3" = "mp4"  ]
then
youtube-dl  -b  -2 -g  -u $kt -p $ss "$url" &> /tmp/ytdl-$a
paate=".mp4"
else
youtube-dl  -2 -g  -u $kt -p $ss "$url" &> /tmp/ytdl-$a
paate=".flv"
fi

if [ "$(cat /tmp/ytdl-$a|grep 'Error:'|wc -l)" -gt "0" ]
then
kdialog --msgbox "Osoite on väärin"
exit 0
fi

nimi=$(cat /tmp/ytdl-$a  | head -n1|sed 's/ /_/g')

osoite=$(cat /tmp/ytdl-$a| tail -n1)

if [ "$2" = "lataa"  ]
then
kohde=$(kdialog --title "Mihin tallenetaan?" --caption youtube-dl --getexistingdirectory .)
else
kohde=/tmp
fi

rm /tmp/ytdl-$a
b=0
perusnimi=$nimi
while [  -f "$kohde"/"$nimi" ] || [  -f /tmp/$nimi.log ]
do
b=$( expr $b +  1 )
nimi=$perusnimi-$b
done

lataus="$kohde"/"$nimi""$paate"

wget "$osoite" -O $lataus 2>/tmp/$nimi.log&

while ! [ $(du  $lataus |awk '{print $1 }') -gt "500" ]
do
sleep 1
done


seuraa()
{
pros=0

dcopRef=$(kdialog  --icon video --caption "Ladataan" --progressbar "Ladataan videota" 100)
dcop $dcopRef setLabel Odota...
dcop $dcopRef showCancelButton true

until [ "$pros" -eq "99" ] || [ "$pros" -eq "100" ]
do
if test "true" == $(dcop $dcopRef wasCancelled)
then
dcop $dcopRef close
kill %1
rm /tmp/$nimi.log
exit 0
fi
sleep 0.5
#Prosentit
pros=$(cat /tmp/$nimi.log | grep %| sed -e 's/.*[.][.]//g' -e 's/ //g'| awk -F % '{ print $1 }'|sed -e 's/^[.]//g' | tail -n1)

#Nopeus:
nopeus=$(cat /tmp/$nimi.log | grep %| sed -e 's/.*[.][.]//g' -e 's/ //g'| awk -F % '{ print $2 }'| sed  -e 's/\([MK]\).*/\1/g' | tail -n1)

#Koko
koko=$(cat /tmp/$nimi.log | grep %| awk '{print $1}'| tail -n1)

#Aikaa jäljelllä
aika=$(cat /tmp/$nimi.log  | grep %| sed -e 's/[.][.]*.//g' |awk '{print $4}'| tail -n1)

dcop $dcopRef  setLabel ""$nimi": Ladattu: $koko Nopeus: $nopeus Aikaa jäljellä: $aika"
dcop $dcopRef setProgress $pros;

done
dcop $dcopRef close
rm /tmp/$nimi.log
}

seuraa&
$soitin $lataus

if ! [ "$2" = "lataa"  ]
then
rm $lataus
else
echo "Hyvää päivää kirvesvartta"
fi

Flashin tappaja Konqueroriin:

$HOME/.kde/share/apps/konqueror/servicemenus/tapaflash.desktop
Koodia: [Valitse]
[Desktop Entry]
Encoding=UTF-8
ServiceTypes=text/html
Actions=kill
X-KDE-Priority=TopLevel

[Desktop Action kill]
Name=Tapa flash
Icon=editdelete
Exec=$HOME/.kde/share/apps/konqueror/servicemenus/tapaflash.sh %u

$HOME/.kde/share/apps/konqueror/servicemenus/tapaflash.sh
Koodia: [Valitse]
#!/bin/bash
killall nspluginviewer
killall npviewer.bin
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: beh - 12.09.08 - klo:11.16
Tervehdys!

Kun en mitään osaa, kopioin muualta ja kyselen sitten täällä neuvoja  :D
.
.
#Show a dialog with zenity
#@param  string  The text to display
show_dialog()
{
if [ "$use_zenity" -gt "0" ] ; then
zenity --error --title "CD-Rom eject" --info-text "$1"
fi
}
.
.
echo -e "-z, --zenity\tuse zenity to displays errors in dialog windows."
.
.
1.Itse scriptissä on kuitenkin erilaisia viestejä. Miten scriptiä voisi hioa, että mahdolliset virheet tulisivat näkyviin graafisesti? Kuvakkeen kautta käynnistettynä ne eivät "mene" minnekään vaan kuvake vain nytkähtää...

2.Entä miten scriptistä saisi sellaisen, että se imaisisi kelkan sisään jos se sattuukin olemaan auki?

1. vastaus löytyi skriptistä itsestään. Siis laita vain käynnistimen komentoon lisäksi "-z".

2. En tiedä...
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: beh - 12.09.08 - klo:11.35
Meikäläisellä flash alkoi  keittää yli  ::)
Pari skriptiä, joilla voidaan vähentää sen käyttöä.
.
.

Samoin    ;D Firefoxin käyttäjille suosittelen Flashblock -lisäosaa.

Eilen tuli sitten kirjoitettua tämmöinen. Lähetysmitapa on hieman erilainen kuin sinulla. Tein tämän pääasiassa kokonaisten soittolistojen lataukseen. Vaikutti toimivan. youtube-dl tarvitaan.

 Tähänkin voisi tietysti ympätä Konquerorin service menun.

Koodia: [Valitse]
#!/bin/bash

#directory where youtube-dl is located (and where videos are downloaded)
tmpDir=~/youtube-dl
youtube_dl=$tmpDir/youtube-dl.py

    #youtube-dl's options, see youtube-dl's help for more information:
#Name template
nameTPL='%(title)s.%(ext)s'
#other options
otherOpts='-b'


    #Login information.
useLogin=false #change to true if necessary
username=""
password=""




collectIDs ()
{
    for arg in "$@"
    do
        if [ $(echo "$arg" | grep -c "youtube.com/watch?v=") == 1 ]
            then
            arg="${arg#*=}"
            arg="${arg%%&*}" #just video's id remains
            videoIDs="$videoIDs $arg"
        elif [ $(echo "$arg" | grep -c "youtube.com/view_play_list?p=") == 1 ]
            then
                getPlaylist $arg
        fi
    done
}


getPlaylist ()
{
    arg="${1#*[pP]lay*[lL]ist[&?]p=}"
    arg="${arg%%&*}" #playlist's id remains
    playlistUrl="http://www.youtube.com/view_play_list?p=$arg"

    #later used to store video id's of the playlist
    playlist="$(wget -q -O - $playlistUrl)"

    #count number of pages in the playlist
    if [ $(echo "$playlist" |  grep -c 'class="pager') == 0 ]
        then
        nPages=1
        else
        nPages="$(echo "$playlist" |  grep  'class="pager' | grep -v '>Next<' | tail -1 | \
                sed 's/^.*>\(.*\)<.*$/\1/')"
    fi

    #get video-ids from first page:
    playlist="$(echo "$playlist" | grep 'class="v90WideEntry">' | \
    sed 's/^.*watch?v=\(.*\)&.*'$arg'.*$/\1/' | sed 's/^\(.*\)&.*$/\1/')"

    #and from other pages if necessary:
    if [ $nPages -ge 2 ]
        then
        for i in `seq 2 $nPages`
        do
            playlist="$playlist $(wget -q -O - $playlistUrl"&page="$i | grep 'class="v90WideEntry">' | \
            sed 's/^.*watch?v=\(.*\)&.*'$arg'.*$/\1/' | sed 's/^\(.*\)&.*$/\1/')"
        done
    fi

    videoIDs="$videoIDs $playlist"
}


downloadVideo ()
{
    videoUrl='http://www.youtube.com/watch?v='$1

    if [ $useLogin == true ]
        then
        /usr/bin/python $youtube_dl --username=$username --password=$password \
        --output=$nameTPL $otherOpts $videoUrl
        else
        /usr/bin/python $youtube_dl --output=$nameTPL $otherOpts $videoUrl
    fi
}




#main
collectIDs $@

for id in $videoIDs
do
    downloadVideo $id
done

exit 0
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Ville Pöntinen - 13.09.08 - klo:13.07
Tuota kelpaako ratkaisuksi (man ejectin mukaan laitteistoriippuvainen):

Koodia: [Valitse]
#!/bin/bash
if   [  $(grep /dev/scd0 /etc/mtab|wc -l) -eq 0  ]; then
eject -T /dev/scd0
else
umount /dev/scd0 && eject /dev/scd0 && exit 0
        echo Ei onnistu
fi

zenity ei KDE:n käyttäjältä taivu  ;)


Kelpaa, kiitos!

Mitenkäs saman saisi Windowsiin? Siellä olen vetänyt cd-asemasta kuvakkeen työpöydälle, mutta siinä ei kaksoisnapsautus tietenkään auta, vaan joudumme käyttämään hiiren oikeata + poista asemasta komentoa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Ville Pöntinen - 14.09.08 - klo:03.10
Ja nyt kun tänne kerran kirjoittelen:

Käytän shutdown, halt ja reboot komentoja ssh:n yli silloin tällöin töissäni, mutta voisiko koneen sammuttaa yhdellä kuvakkeella siististi? Esim. halt vain tappaa kaiken ennen sammutusta.

Eli millainen scripti sammuttaisi koneen niin, että käyttäjä kirjattaisiin ensin normaalisti ulos ja sitten sammutettaisiin kone? Eli Järjestelmä > Poistu > Sammuta klikkailua vastaava komento/scripti yhden painikkeen taakse?

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: retu - 17.09.08 - klo:01.06
Eikö shutdown toimi tarpeeksi siististi?

Koodia: [Valitse]
gksudo shutdown -P now
En ole käyttänyt halt komentoa, mutta man sivun mukaan se kutsuu shutdown komentoa ellei erikseen kielletä. Samalla man sivulla mainitaan myös poweroff komento eli taitaisi riittää komento "gksudo poweroff" kuvakkeen taakse.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: gdm - 17.09.08 - klo:04.09
Eikö shutdown toimi tarpeeksi siististi?

Koodia: [Valitse]
gksudo shutdown -P now
En ole käyttänyt halt komentoa, mutta man sivun mukaan se kutsuu shutdown komentoa ellei erikseen kielletä. Samalla man sivulla mainitaan myös poweroff komento eli taitaisi riittää komento "gksudo poweroff" kuvakkeen taakse.

Komentoa gksudo käytetään graafisille ohjelmille.
sudo on tekstipohjaisille.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: retu - 17.09.08 - klo:10.11
Siksi laitoinkin gksudo, puhe oli alasajokuvakkeesta ja tuo rimssu oli tarkoitettu launcherin command looraan.  ::)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: kasleht - 21.09.08 - klo:16.55
Käytän tätä kuvanpiennennykseen: http://www.suuronen.org/kutista (http://www.suuronen.org/kutista) Nyt kuitenkin tarvis pienentää satoja kuvia jotka sijaitsee eri kansioissa. Elikkä milläs minä saan tuon kyseisen skriptin myös käymään läpi alihakemistoja?

Kokeilin käyttää tälläistä niitten kuvien käymiseen läpi mutta ongelman tuottaa välit ja ääkköset.
Koodia: [Valitse]
for kuva in `dir $PWD`
do
    uusi="$PWD$kuva"
    for ukuva in `ls $uusi`
    do
        if [ $kuva = *.jpg ]; then
            kutistakuva "$ukuva"
        fi
    done
done
tuon varmaan voisi tehdä järkevimminkin.... Ja tuossa if lauseesta en ole varma toimiiko se?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: beh - 21.09.08 - klo:18.34
Tuo if-lause ei taida toimia. Kokeile tätä
if [ ${kuva##*.} = "jpg" ]

Ehto  toteutuu jos "kuva":n loppu on ".jpg".
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 21.09.08 - klo:18.46

Kokeilin käyttää tälläistä niitten kuvien käymiseen läpi mutta ongelman tuottaa välit ja ääkköset.


Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin... Lainausmerkkien käyttö saattaa auttaa.

rename 's/ /_/g','s/ä/a/g','s/ö/o/g','s/å/a/g','s/å/a/g','s/Ä/A/g','s/Ö/O/g','s/Å/A/g'  "tiedostonimi"
Sitten kun nuo on hoidettu voi lopullisen nimen putkittaa vaikka kunnolliseksi vaikka iconv:illa
iconv -c -f UTF-8 -t ASCII
Tuo siis poistaa kaiken muun hankalan merkistön nimestä.
poistaa nuo turvallisesti. Tällaiset asiat pitäisi toimia vuonna 2008.

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: kasleht - 21.09.08 - klo:19.17
Siis miten mä nyt oikein saan noitten kuvien nimet muutettua kunnollisiksi. Kokeilin suorittaa tuon rename homman for silmukalla onnistumatta... Nuo kuvat jotka haluan pienentää viemästä liikaa tilaa on erään seuran kuvagalleria kuvia joita muut ovat sinne laittaneet ja monet eivät tosiaan ymmärrä että kansion ja tiedoston nimissä olevat ääkköset ja välilyönnit saattavat aiheuttaa ongelmia...
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 21.09.08 - klo:20.42
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 21.09.08 - klo:21.00
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

Itseltä löytyy tällaisen tapainen pätkä yhdestä
Tuhon kun esim alkaa  polun osaksi Työpöytää tunkemaan niin rikkinäisiä linkkejä tulee 100 % varmasti.
for i in "$@"; do
   ln -s "$i" /tmp/älämölö
done
Linkitys toimii Työpöydän sisällä.

http://en.wikipedia.org/wiki/Coreutils#GNU_coreutils_capabilities

Muita ohjelmia: mplaex ei sulata välilöyntejä ollenkaan, eikä mmg ääkkösiä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 21.09.08 - klo:23.58
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

Itseltä löytyy tällaisen tapainen pätkä yhdestä
Tuhon kun esim alkaa  polun osaksi Työpöytää tunkemaan niin rikkinäisiä linkkejä tulee 100 % varmasti.
for i in "$@"; do
   ln -s "$i" /tmp/älämölö
done
Linkitys toimii Työpöydän sisällä.

En onnistunut toistamaan ongelmia. Tuo tuntui toimivan kaikissa kokeilemissani tapauksissa.

Lainaus
Muita ohjelmia: mplaex ei sulata välilöyntejä ollenkaan, eikä mmg ääkkösiä.

Tarkoitatko mplex:iä? Kyllä se minulla ymmärtää välilyönnit. Mmg ei edes ole komentoriviohjelma vaan GUI mkvmerge:lle ja jälkimmäinen puolestaan tuontui toimivan pikaisen testin perusteella sekä ääkkösten että välilyöntien kanssa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 22.09.08 - klo:00.51
Unohda ääkköset ainakin toistaiseksi jos meinaat käyttää coreutilsin ohjelmia (ln, cp jne)   :-\ . Saattavat osittain toimia, mutta eivät aina. Kaikki ohjelmat eivät edes ymmärrä välilyöntejä  laittoi ne sitten mihin tahansa lainausmerkkeihin...

Olisiko esimerkkejä tällaisista ohjelmista?

Itseltä löytyy tällaisen tapainen pätkä yhdestä
Tuhon kun esim alkaa  polun osaksi Työpöytää tunkemaan niin rikkinäisiä linkkejä tulee 100 % varmasti.
for i in "$@"; do
   ln -s "$i" /tmp/älämölö
done
Linkitys toimii Työpöydän sisällä.

En onnistunut toistamaan ongelmia. Tuo tuntui toimivan kaikissa kokeilemissani tapauksissa.
Tuo on mielenkiintoista ja hämmentävää (locale -a ei näytä minulla kuin UTF-8). Jostain kumman syystä sain tuon toimimaan sitten olemattomilla pythonin taidoillani.
Epäonnistuu minulla edelleen    ???  TyöpöytÃ-osa  näyttäisi olevan linkissä
Lainaus
Muita ohjelmia: mplaex ei sulata välilöyntejä ollenkaan, eikä mmg ääkkösiä.
Tarkoitatko mplex:iä? Kyllä se minulla ymmärtää välilyönnit. Mmg ei edes ole komentoriviohjelma vaan GUI mkvmerge:lle ja jälkimmäinen puolestaan tuontui toimivan pikaisen testin perusteella sekä ääkkösten että välilyöntien kanssa.

Joo mplex. Nyt onnistumaan saattoi olla kyse kiusallisesta '" {,} '-yhdistelmistä tai erikoisemmasta tapauksesta.  edelliseen siis tarkoitin mkvmergeä ja mkvextractia  8),. No sama tulos...
Koodia: [Valitse]
File identification failed for '/home/j-p/Työpöytä/testi.ogg'. Return code: 2


Error: The source file '/home/j-p/Työpöytä/testi.ogg' could not be opened successfully,
or retrieving its size by seeking to the end did not work.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 22.09.08 - klo:09.36
En onnistunut toistamaan ongelmia. Tuo tuntui toimivan kaikissa kokeilemissani tapauksissa.
Tuo on mielenkiintoista ja hämmentävää (locale -a ei näytä minulla kuin UTF-8).

Minulla se näyttää hieman enemmän...

Koodia: [Valitse]
$ locale -a | wc -l
442

Käytössä minulla on en_US.UTF-8.

Lainaus
Tarkoitatko mplex:iä? Kyllä se minulla ymmärtää välilyönnit. Mmg ei edes ole komentoriviohjelma vaan GUI mkvmerge:lle ja jälkimmäinen puolestaan tuontui toimivan pikaisen testin perusteella sekä ääkkösten että välilyöntien kanssa.
Joo mplex. Nyt onnistumaan saattoi olla kyse kiusallisesta '" {,} '-yhdistelmistä tai erikoisemmasta tapauksesta.  edelliseen siis tarkoitin mkvmergeä ja mkvextractia  8),. No sama tulos...
Koodia: [Valitse]
File identification failed for '/home/j-p/Työpöytä/testi.ogg'. Return code: 2


Error: The source file '/home/j-p/Työpöytä/testi.ogg' could not be opened successfully,
or retrieving its size by seeking to the end did not work.

Mplex:n toiminnan kokeilin hieman vanhemman Kubuntun alla mutta mkvmergeä ja symbolisia linkkejä taisin kokeilla OpenSUSE 11.0:n alla. Tiedä sitten johtuvatko ongelmasi jostakin omista asetuksistasi vai onko Ubuntu alunperinkin rikki noiden osalta. OpenSUSElla ne tuntuivat kuitenkin toimivan.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 24.09.08 - klo:23.11
Ajattelin, että Kaffeinea olisi mukava ajastella etänä.  :)
Koodia: [Valitse]
#!/bin/bash

export DISPLAY=:0

menneisyys()
{
echo "Älä elä menneisyydessä!" && exit 3
}

utopia()
{
echo "Tämä ei ole mahdollista" && exit 4
}

if ! [ -f $HOME/.kde/share/apps/kaffeine/channels.dvb ]
then
echo "Kanavia ei ole määritelty. Ei voida jatkaa" && exit 2
fi
echo Kanavat:
cat $HOME/.kde/share/apps/kaffeine/channels.dvb| sed  -e 's/#.*//'  -e '/^$/d'|\
awk -F '|' '{ print $20 ") " $2 }'|sort -n


tmpscript=$(mktemp)

echo "#!/bin/bash">>$tmpscript
echo "case "'$1'"">>$tmpscript
echo " in">>$tmpscript
cat $HOME/.kde/share/apps/kaffeine/channels.dvb| sed  -e 's/#.*//'  -e '/^$/d'|\
awk -F '|'  '{ print $20 ") kanava=" $2  ";;"}'|sed -e 's/=/="/' -e 's/;;/";;/' |sort -n >>$tmpscript
echo "*) echo Kanavaa ei ole && exit;;">>$tmpscript
echo "esac">>$tmpscript
echo "echo "'$kanava'"">>$tmpscript
read -p "Anna kanava: " kanava
kanava="$(sh $tmpscript $kanava)"
kanava='"'$kanava'"'
rm $tmpscript

if [ "$(echo $kanava|grep 'ei ole'|wc -l)" -gt 0 ]
then
echo $kanava && exit 1
else
echo Valitsit kanavan "$kanava"
fi
read -p "Ohjelman nimi: " nimi
nimi='"'$nimi'"'
echo "Muista käyttää kahta numeroa  kuukauden, päivän ja ajan suhteen!"
read -p "Anna vuosi VVVV: " vuosi
if [ "$(date +%Y)" -gt "$vuosi" ]
then
menneisyys
fi
read -p "Anna kuukausi KK: " kuukausi
if [ "$(date +%m)" -gt "$kuukausi" ] && [ "$(date +%Y)" -ge "$vuosi" ]
then
menneisyys
elif [ "$kuukausi" -gt 12 ]
then
utopia
fi

read -p "Anna päivä PP: " paiva
if [ "$(date +%d)" -gt "$paiva" ] &&  [ "$(date +%m)" -ge "$kuukausi" ] &&\
 [ "$(date +%Y)" -ge "$vuosi" ]
then
menneisyys
elif [  "$paiva"  -gt 31 ]
then
utopia
fi

echo "Seuraava toiminto aloitetaan $(cat $HOME/.kde/share/apps/kaffeine/dvbrc |grep BeginMargin\
|cut -d "=" -f2) minuuttia etuajassa."
read -p "Anna kellonaika: hh:mm:ss: " aika
if ! [ $(echo $aika|awk -F ':' '{ print NF }') -eq 3 ] || [ $(echo $aika|awk -F ':' '{ print $1 }') -gt 23 ] \
|| [ $(echo $aika|awk -F ':' '{ print $2 }') -gt 59 ] || [ $(echo $aika|awk -F ':' '{ print $3 }') -gt 59 ]
then
utopia
fi

echo "Seuraava toiminto lopetaan $(cat $HOME/.kde/share/apps/kaffeine/dvbrc |grep EndMargin\
|cut -d "=" -f2) minuuttia jäljessä."
read -p "Anna kesto: hh:mm:ss: " kesto
if ! [ $(echo $kesto|awk -F ':' '{ print NF }') -eq 3 ] || [ $(echo $aika\
|awk -F ':' '{ print $2 }') -gt 59 ] \
|| [ $(echo $aika|awk -F ':' '{ print $3 }') -gt 59 ]
then
utopia
fi

echo $aika $paiva.$kuukausi.$vuosi kesto: $kesto nimi: "$nimi"
echo "Ajettava komento: dcop kaffeine KaffeineIface dvbNewTimer "$nimi" "$kanava" "$vuosi-$kuukausi-$paiva"T"$aika" "$kesto""
echo "Mikäli jokin on väärin muut ajastukset voivat mennä sekaisin!"
read -p "Onko tämä oikein? (K/*)"  vastaus
if ! [ "$vastaus" = "K" ]
then
echo Keskeytetään && exit 0
fi
tmpscript=$(mktemp)
echo dcop kaffeine KaffeineIface dvbNewTimer "$nimi" "$kanava" \
 "$vuosi-$kuukausi-$paiva"T"$aika" "$kesto">>$tmpscript
sh $tmpscript
rm $tmpscript

Jostain kumman syystä lainausmerkit toimivat vasta, kun komennon ajaa erillisenä skriptinä. Mistäköhän johtuu?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 27.10.08 - klo:22.29
Heh, en ole sedia vielä(kään) jaksanut ruveta opettelemaan eikä muutenkaan nyt aivokapasiteetti riitä.. Mutta siis, kuinka sedillä onistuu (ts. miten tehdään) merkkijonon lopusta merkkien poistaminen niin kauan kunnes tulee & merkki (ja tuo & pitää siis myös poistua)?
Eli esimerkkinä abcdef&ghijkl pitäisi saada muotoon abcdef
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 27.10.08 - klo:22.39
Koodia: [Valitse]
$ echo "abcdef&ghijkl"| sed 's/&.*//g'
abcdef
?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 27.10.08 - klo:22.43
Sieltä tuli vastaus kuin apteekin hyllyltä :) kiits
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: snifi - 19.11.08 - klo:15.40
Lyhyt Python-skripti, jota voi käyttää vaikkapa sähköpostintarkistusohjelman lisänä. Vilkuttaa näppäimistön kolmoslediä kymmenesosasekunnin ajan kymmenen sekunnin välein. Esimerkiksi Korn:iin uuden saapuneen postin muistuttimeksi. Hiiren vasemman näppäimen painalluksen voi tämän jälkeen asettaa Korn:issa sammuttamaan ohjelman, komento silloin "killall LedBlinkForNewPost"

LedBlinkForNewPost:
Koodia: [Valitse]
#!/usr/bin/python

import os
import time

def blink_for(sek):
  os.system("xset led 3")
  time.sleep(sek)
  os.system("xset -led 3")

while True:
 blink_for(.1)
 time.sleep(10)


Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: gdm - 19.01.09 - klo:11.57
Nostetaanpa tätä vanhaa aihetta,

Ei niinkään scripti, vaan helppokäyttöisyystoiminto ssh:ille
Helpottaa huomattavasti jos useampia etäkäyttökoneita.
man ssh_config
Antaa paljon lisäoptioita mitä käyttää

Koodia: [Valitse]
cat .ssh/config
host haluttunimi
hostname osoite.ip/osoite.www
user kohteenkäyttäjätunnus
port portti

host perhe
hostname ******.bileet.be
user ***
port 8000

host kapsi
hostname kapsi.fi
user *****

tta@hellride:~$

jolloin yhteys muodostuu helposti, ssh host
Koodia: [Valitse]
ssh perhe
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: snifi - 19.01.09 - klo:15.12
Tähän keskusteluun yksi kysymys: Miten tehtäisiin pieni ja yksinkertainen ajanottoon soveltuva sekuntikello?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: retu - 19.01.09 - klo:15.46
Jos haluat kellottaa jonkin toiminnon suorittamiseen kuluvan ajan voit käyttää time (http://linux.fi/wiki/Time) komentoa.

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mgronber - 19.01.09 - klo:18.03
Ja jos pitää ottaa aikaa jostakin ulkoisesta tapahtumasta niin "time cat" käynnistää ajanoton ja ctrl + D pysäyttää sen.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: beh - 08.02.09 - klo:10.58
Weekalarmin Amarok 2:sen kanssa toimivaa versiota odotellessa tässä on yksinkertaisempi korvike. Voit asettaa herätysajan, äänen voimakkuudet alussa ja lopussa sekä äänenvoimakkuuden säätönopeuden.

Tämän saa toimimaan monilla muillakin soittimilla jos muokkaa nuo d-cop lausekkeet sopiviksi.

Koodia: [Valitse]
#!/bin/bash

#default alarm time; can also be given as an argument
alarmTime="07:00"
#fade in time in minutes
fadeInTime=10
#Volume; integers between 0-100
startVol=50
finalVol=100



if [[ $# == 1 ]]
  then
  alarmTime="$1"
fi

now="$(date +%s)"
alarmTime="$(date --date "today $alarmTime" +%s)"

delay=$(( $alarmTime-$now ))
#check if we are past $alarmTime
if [[ $delay -le 0 ]]
  then #alarm tomorrow
    delay=$(( $delay + 24*60**2 ))
fi

fadeInTime=$(( 60*$fadeInTime ))
if [[ $delay -le $fadeInTime ]]
  then
  fadeInTime=10
  else
  delay=$(( $delay - $fadeInTime ))
fi

volumeSeq=$(echo "$(for i in {1..10}; \
            do echo $(( $startVol + $i*( $finalVol-$startVol )/10 ));done)" | uniq)
fadeInCycle=$(( $fadeInTime/$(echo "$volumeSeq" | wc -l) ))



sleep $delay

dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet  int32:${startVol}

dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Play

for i in $volumeSeq;
  do
  sleep $fadeInCycle;
  dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet  int32:${i}
done

exit 0

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: aurinkolasit - 09.02.09 - klo:19.18
Moro,

Jos haluaapi kopioida isoja tiedostoja omalla koneellaan bashissa, olisi siistiä, jos näkis kopioinnin etenemisen. Tällöin voisi tietysti käyttää rsynciä lokaalisti:
Koodia: [Valitse]
rsync --progress src dst
Mutta mä halusin keksiä pyörän uudestaan ja käyttää kätevää pikku ohjelmaa pv. Asennus:
Koodia: [Valitse]
sudo apt-get install pv
Koodia: [Valitse]
#!/bin/bash

if (($#!=2)); then
        echo "Usage: "
        echo "$0 SRC DST"
        echo "For mulitple files, add double quotes around SRC argument"
        exit 1
else

for files in $1
do
        pv -p -r "$files" > $2/"$files"
done
fi

Kutsun tätä skriptiä nimellä cpy.sh. Tämä siis lyhykäisyydessään kopsaa haluamasi tiedosto(t) ja näyttää etenemisen bashissa.


Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Marbo - 18.03.09 - klo:15.45
ei kellää olis jotain hyvää scriptiä millä sais telkku tiedot vaikka mysqliin tai muuhun?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 18.03.09 - klo:20.27
ei kellää olis jotain hyvää scriptiä millä sais telkku tiedot vaikka mysqliin tai muuhun?

Telkun tiedot saat XML-tiedostoon xmltv:llä.

konffit kuntoon
Koodia: [Valitse]
tv_grab_fi --configureja tiedot hakuun
Koodia: [Valitse]
tv_grab_fi --output tvguide.xml
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 21.03.09 - klo:23.36
Tuo KMPlayer ei oikein luotettavasti näyttänyt KDE4 toimivan vielä Konquerorissa upotettuna.

Väänsin seuraavan skriptin, jolla voi katsella ja ladata ohjelman ohjelman osoitetta vastaan. Tai no tämä on oikeastaan homehtunut kovalevyllä kuukausia, pientä fiksailua vain.

Koodia: [Valitse]
#!/bin/bash
testi()
{
if [ "$?" -eq "1" ]
then
echo osoitetta ei ole
exit 1
fi
}
osoite()
{
if [ "$sivu" =  "" ]
then
echo "Et antanut osoitetta"
exit 1
fi

asx=$(echo $sivu|grep -e id=.* -o|cut -d "=" -f2)
wget "$sivu" -O /tmp/"$asx" --quiet
testi
nimi=$(grep '<span class="smaller-more">' /tmp/"$asx"| sed -e 's/<span class="smaller-more">//g' -e 's/<.*//g' )
      nimi=$(echo $nimi| sed -e 's/ //g')
rm /tmp/"$asx"
wget "http://www.yle.fi/java/areena/dispatcher/"$asx".asx?bitrate=1000000" -O /tmp/"$asx"-ylen_hyvää_palvelua --quiet
testi
video="$(grep  HREF  /tmp/"$asx"-ylen_hyvää_palvelua |sed -e 's/http/mms/g' -e 's/.*HREF="//g' -e 's/"><.*//g'|head -n1)"


if [ $(echo "$video"|grep wma$|wc -l)  -gt 0 ]
then
cache="200"
paate=wma
elif [ $(echo "$video"|grep wmv$|wc -l)  -gt 0 ]
then
cache="700"
paate=wmv
else
echo "Tähän en ole keksinyt keinoa. Tarvitaan URL suoraan wmv/wma -tiedostoon." && exit 3
fi
  rm /tmp/"$asx"-ylen_hyvää_palvelua
echo ""
echo ==================================================================================
echo "Ohjelman osoite: $video"
echo "Ohjelman nimi: $nimi"
echo ==================================================================================
echo ""
}


tallennus()
{
if [ "$kohde" ==  "kde" ]
then
kohde=$(kdialog --title "Mihin tallenetaan?" --caption YLE-Areena --getexistingdirectory .)
if [ "$kohde" =  "" ]
then
echo kohdetta ei valittu
exit 2
fi
elif ! [ -d "$kohde" ]
then
echo Kansiota "$kohde" ei ole olemassa
exit 2
fi
osoite
a=0
lataus="$kohde"/"$nimi"."$paate"
while [ -d "$lataus" ] || [ -f "$lataus" ]
do
a=$( expr "$a" + 1 )
lataus="$kohde"/"$nimi"-"$a"."$paate"
done
}

lataa()
{
tallennus
echo mplayer -dumpstream  $video -dumpfile "$lataus"
mplayer -dumpstream  "$video" -dumpfile "$lataus"
}

katso()
{
osoite
echo mplayer "$video" -cache $cache
mplayer "$video" -cache $cache
}

ohje()
{
cat <<EOF
Katso:
ylelataa -o URL -k

Lataa:
ylelataa -o URL -l "kansio"
-l kde: KDE-dialogi
EOF
}

if [ $# -eq 0 ]
then
ohje
exit 0
fi


while getopts o:l:kh opt; do
case $opt in
o) sivu="$OPTARG" ;;
l) kohde="$OPTARG"  && lataa  ;;
k) katso  ;;
h) ohje && exit 0  ;;
esac
done

sleep 2
exit 0
Tällä sen voi kytkeä Konqueroriin
$HOME/.kde/share/kde4/services/ServiceMenus/yle.desktop

Koodia: [Valitse]
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,text/html
MimeType=text/html;
Actions=katso;tallenna;
Encoding=UTF-8
X-KDE-Submenu=YLE-Areena

[Desktop Action katso]
Name=Katso Video
Exec=konsole -e $HOME/.bin/ylelataa -o '%U' -k
Icon=video-x-ms-wmv
[Desktop Action tallenna]
Name=Tallenna video
Exec=konsole -e $HOME/.bin/ylelataa -o '%U' -l kde
Icon=video-x-ms-wmv

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: snifi - 23.03.09 - klo:15.59
Kysymys tähän ketjuun: Miten konsoliohjelmassa toteutetaan se osa, joka piirtää ja kirjoittaa tarvittavat tekstit konsoli-ikkunaan (esim. curses-kirjastoilla), ja ohjelmaa lopetettaessa palauttaa konsolin samaan tilaan jossa se oli ennen ohjelman käynnistystä?

(kuten esim man-komento:)
$ man ls
...manuaalisivun selausta... ...painetaan: q
$ man ls # takaisin komentotulkkiin

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 23.03.09 - klo:17.23
Ööh.. Onko olemassa ohjelmaa joka ei tee mitään muuta kuin odottaa (lopettamista)?
sleep komento ei käy koska se vaatii aikamäärän.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Jone - 23.03.09 - klo:17.48
Ööh.. Onko olemassa ohjelmaa joka ei tee mitään muuta kuin odottaa (lopettamista)?
sleep komento ei käy koska se vaatii aikamäärän.
En tiedä kuinka "oikein" tämä on mutta
Koodia: [Valitse]
readodottaa kunnes painaa enteriä.. jos tätä tarkoitit?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 23.03.09 - klo:20.25
Ööh.. Onko olemassa ohjelmaa joka ei tee mitään muuta kuin odottaa (lopettamista)?
sleep komento ei käy koska se vaatii aikamäärän.
En tiedä kuinka "oikein" tämä on mutta
Koodia: [Valitse]
readodottaa kunnes painaa enteriä.. jos tätä tarkoitit?

read ajaisi asian muuten mutta koska se on bashiin sisäänrakennettu, se ei näy prosessina eikä sitä täten voida lopettaa kill komennolla
Idea on siis laittaa skripti odottamaan että se saa "luvan" lopettaa.. tämä lupa annettaisiin komentona tappamalla tuo odottava prosessi (huom kommennon suorittajana toimii erillinen ohjelma enkä esim minä itse komentoriviltä) .. ideas?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: simppeli - 23.03.09 - klo:22.02
Osaisiko/viitsisikö kukaan koodata minulle ja tänne foorumille jakoon sellaista bash koodinpätkää joka loisi annetunnimisen käyttäjätunnuksen, loisi sille random salasanan, loisi kotihakemiston ja muuttaisi omistajan oikeaksi ja lopuksi näyttäisi käyttäjätunnuksen ja salasanan. Aa, joo ja kaikki saisi onnistua yhdellä komennolla ja sen perässä olevalla käyttäjätunnuksella, onnistuisiko se joltain gurulta täällä? Ite ku en oikein osaaa näitä pro juttuja  :-\, toivonmukaan joku minua joku tässä auttaisi. ::)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: AlbertRetro - 23.03.09 - klo:22.50
Isipapan koneen meinasit sitten kertalinttuusta kaapata. :) ;) :D ;D
Vai siellä kirjastossa sittenkin?

Terveisin Alpertti
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: simppeli - 24.03.09 - klo:14.59
Isipapan koneen meinasit sitten kertalinttuusta kaapata. :) ;) :D ;D
Vai siellä kirjastossa sittenkin?

Terveisin Alpertti
okei, okei, ei sille käyttäjälle nyt roottejä sopisi antaa  :o, vaan se tulisi omalle palvelimelle ihan hyötykäyyttön. :D
edit: Huomasi sartkastisuutta viestissäsi :o
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: eDIT - 04.04.09 - klo:20.40
Seuraava pätkä tarkastaa mahdolliset uudet kommentit IRC-Galleriassa. Vaatii curl:in.

Koodia: [Valitse]
#!/bin/bash

TUNNUS=
SALASANA=
##
if [ -z "`which curl`" ]; then
echo "Tarvitset curl:in voidaksesi käyttää tätä skriptiä"
exit 0
fi

if [ -z $TUNNUS ]; then
echo "Ei tunnusta, lopetetaan"
exit 0
else
if [ -z $SALASANA ]; then
echo "Ei salasanaa, lopetetaan"
exit 0
fi
fi
##

curl -d login=$TUNNUS -d passwd=$SALASANA -c /tmp/.igcookie -b /tmp/.igcookie http://irc-galleria.net/login.php
curl -c /tmp/.igcookie -b /tmp/.igcookie http://irc-galleria.net/index.php -o /tmp/.igindex > /dev/null 2>&1
LOGOUTURL=`cat /tmp/.igindex | grep mmlogout | sed 's/.*href="//g' | sed 's/".*//g' | sed 's/^/http:\/\/irc-galleria.net/g'`
CHKCOMMENTS=`cat /tmp/.igindex | grep mmnewcomments | sed 's/.*placeholder">//g' | sed 's/<\/span>.*//g'`

if [ -z $CHKCOMMENTS ]; then
echo "Sinulle ei ole uusia kommennteja."
else
echo "Sinulle on $CHKCOMMENTS uutta kommenttia."
fi

curl -c /tmp/.igcookie -b /tmp/.igcookie $LOGOUTURL > /dev/null 2>&1
rm /tmp/.igindex
rm /tmp/.igcookie

exit 0

Tunnuksien ja salasanojen scriptiin tallentaminen omalla vastuulla.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: adjektiivi - 04.04.09 - klo:21.57
Saisiko jotenkin scriptin että: avaa firefoxin, pitää päällä pari sekunttia, samuttaa firefoxin, käynnistää hetken päästä taas firefoxin uudelleen ja sitä rataa.. ja tekisi tätä vaikka niin pitkään kuin toisin sanotaan  ???
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 04.04.09 - klo:22.27
Saisiko jotenkin scriptin että: avaa firefoxin, pitää päällä pari sekunttia, samuttaa firefoxin, käynnistää hetken päästä taas firefoxin uudelleen ja sitä rataa.. ja tekisi tätä vaikka niin pitkään kuin toisin sanotaan  ???

Koodia: [Valitse]
#!/bin/bash
while [ 1 ] ; do
  firefox&
  pid=$!
  sleep 2
  kill -TERM  $pid
done
?
Tuossa 2 s ei ikkuna kerkeä edes ilmestymään minulla.

Yhtenä rivinä
Koodia: [Valitse]
while [ 1 ] ; do   firefox&   pid=$! ;   sleep 2;   kill -TERM  $pid; done  :P
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: adjektiivi - 04.04.09 - klo:22.46
Saisiko jotenkin scriptin että: avaa firefoxin, pitää päällä pari sekunttia, samuttaa firefoxin, käynnistää hetken päästä taas firefoxin uudelleen ja sitä rataa.. ja tekisi tätä vaikka niin pitkään kuin toisin sanotaan  ???

Koodia: [Valitse]
#!/bin/bash
while [ 1 ] ; do
  firefox&
  pid=$!
  sleep 2
  kill -TERM  $pid
done
?
Tuossa 2 s ei ikkuna kerkeä edes ilmestymään minulla.

Yhtenä rivinä
Koodia: [Valitse]
while [ 1 ] ; do   firefox&   pid=$! ;   sleep 2;   kill -TERM  $pid; done  :P

Tuo ei sammuta firefoxia ollenkaan, se käynnistää vain monta?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: UbunTux - 04.04.09 - klo:22.58
Saisiko jotenkin scriptin että: avaa firefoxin, pitää päällä pari sekunttia, samuttaa firefoxin, käynnistää hetken päästä taas firefoxin uudelleen ja sitä rataa.. ja tekisi tätä vaikka niin pitkään kuin toisin sanotaan  ???

Koodia: [Valitse]
#!/bin/bash
while [ 1 ] ; do
  firefox&
  pid=$!
  sleep 2
  kill -TERM  $pid
done
?
Tuossa 2 s ei ikkuna kerkeä edes ilmestymään minulla.

Yhtenä rivinä
Koodia: [Valitse]
while [ 1 ] ; do   firefox&   pid=$! ;   sleep 2;   kill -TERM  $pid; done  :P

Tuo ei sammuta firefoxia ollenkaan, se käynnistää vain monta?
Sulje kaikki firefoxin prosessit aluksi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: adjektiivi - 04.04.09 - klo:23.02
Saisiko jotenkin scriptin että: avaa firefoxin, pitää päällä pari sekunttia, samuttaa firefoxin, käynnistää hetken päästä taas firefoxin uudelleen ja sitä rataa.. ja tekisi tätä vaikka niin pitkään kuin toisin sanotaan  ???

Koodia: [Valitse]
#!/bin/bash
while [ 1 ] ; do
  firefox&
  pid=$!
  sleep 2
  kill -TERM  $pid
done
?
Tuossa 2 s ei ikkuna kerkeä edes ilmestymään minulla.

Yhtenä rivinä
Koodia: [Valitse]
while [ 1 ] ; do   firefox&   pid=$! ;   sleep 2;   kill -TERM  $pid; done  :P

Tuo ei sammuta firefoxia ollenkaan, se käynnistää vain monta?
Sulje kaikki firefoxin prosessit aluksi.

Kiitoksia!   :)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: beh - 05.04.09 - klo:12.27
Yhtenä rivinä
Koodia: [Valitse]
while [ 1 ] ; do   firefox&   pid=$! ;   sleep 2;   kill -TERM  $pid; done  :P
Pienenä kuriositeettina, bashissa on true -komento, jolla saa hieman siistimmän päättymättömä loopin. (while true ...)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: SuperOscar - 18.08.09 - klo:19.26
Herätetäänpä ketju...

Oheinen skripti tuli tehtyä, kun jouduin kaiken aikaa asentelemaan yhtä konetta uudelleen. Skripti lukee tiedostosta, mitä paketteja koneelle pitää asentaa, ja asentaa ne. Aptitude on helppo vaihtaa zypperiin tai yumiin; totta kai ongelmaksi tulevat myös distrosta toiseen vaihtuvat pakettien nimet, mutta tämä on kierrettävissä luomalla useita eri lähdetiedostoja.

Skripti nopeuttaa kuitenkin kummasti koneen käyttöönottoa – siis jollei ole päässyt luomaan omaa asennuslevyään tai käyttämään varsin lupaavalta näyttävää SUSE Studiota!

Pitäisi vielä keksiä, miten shiftiä käyttäen voisi saada skriptin lukemaan useampia komentorivillä annettuja tiedostoja.

Koodia: [Valitse]
#!/bin/sh
# -----------
# mustinstall
# -----------
# Skripti lukee parametrina annetusta tiedostosta, mitä paketteja
# koneelle pitää asentaa. Tiedostossa annetaan paketti kullakin rivillä,
# rivi voi sisältää myös #-merkin edeltämiä kommentteja.
#
# 18.8.2009 / Viimeisin muutos (TN).

if [ -z "$1" ]; then
    echo $0: Käyttö: mustinstall TSTO
    exit 1
fi

if [ -r "$1" ]; then
    echo mustinstall: Luetaan tiedostoa "$1"
    while read pkg; do
        pkg=`echo ${pkg} | sed "/#/ d"`
        if [ -n "${pkg}" ]; then
            dpkg-query -l ${pkg} > /dev/null 2>&1
            if [ $? -ne 0 ]; then
                must="${must} ${pkg}"
            fi
        fi
    done < "$1"
    echo mustinstall: Asennetaan ${must} riippuvuksineen
    sudo aptitude install ${must}
else
    echo mustinstall: Tiedostoa ei löydy tai sitä ei voi lukea: "$1"
fi

Itse luettava tiedosto, joka parametrina skriptille annetaan, näyttää esim. tältä:

Koodia: [Valitse]
#
# Välttämättömät apuohjelmat
#
zsh
unison
unison-gtk
#
# Palomuurin hallinta
#
guarddog
#
# Palvelut
#
openssh-server
#
# TeX
#
texlive-full
scalable-cyrfonts-tex
kile
#
# Ohjelmointi
#
idle
#
# Multimedia ja grafiikka
#
kubuntu-restricted-extras
dvdauthor
imagemagick
mjpegtools
inkscape
krita-kde4
#
# Pelit
#
kdegames
pysol
pysol-cardsets

Muoks: Viime vaiheessa mukaan hupsahtanut bugi korjattu.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Jiku - 21.08.09 - klo:12.54
Kyllästyin noihin rippausohjelmien valikko-hässäköihin ja tein skriptin joka käyttää VLC:tä ja lsdvd:tä rippaamaan DVD:n dreamboxin digiboksille sopivaan muotoon poltetuilla teksteillä.
Tämä on vielä vaiheessa oleva ja tarkoitus olisi tälle tehdä graafinen käyttöliittymä jotenkin, jos jaksaa/viitsii/keksii miten.
noita $komento -parametrejä muokkaamalla VLC:n voi komentaa rippaamaan johonkin muuhunkin muotoon.

Kaikenlaiset muutokset ja ideat on enemmän kuin tervetulleita!

Koodia: [Valitse]
#!/bin/bash
vhakemisto="/home/jani/share/" #muista loppuun /-merkki

#####################################################################
#                                                                   #
# Ripppaa DVD:ltä pyydetyt raidat Dreamboxilla toimivaksi mpg:ksi   #
#                                                                   #
# Tarvittavat ohjelmat: lsdvd, vlc, beep                            #
#                                                                   #
#####################################################################

#levyn nimen etsiminen
vnimi=`lsdvd -q 2>/dev/null |grep Disc|cut -c 13-`
vnimi=$vhakemisto$vnimi.mpg



clear
# pisimmän titlen etsiminen ja titlen valinta
pisin=`lsdvd -q 2>/dev/null|grep Longest |cut -c 16-18`
pisin=`echo $pisin|bc` #pisin title
echo "TITLET"
echo Pisin title on $pisin.
read -p "Valitse title: " vtitle
echo


# listataan tekstitysraidat
clear
echo "TEKSTITYS"
`lsdvd -q -t $vtitle -s >tekstit 2>/dev/null`
lrivi=0
cat tekstit | while read line; do
lrivi=`expr $lrivi + 1`;
if   [ $lrivi -gt 2 ] ;then
echo $line |cut -c 11-72;
fi
done;
read -p "Valitse tekstitysraita: " vtekstitysraita
vtekstitysraita=`echo $vtekstitysraita -1|bc` #vähennetään raidan numerosta 1




# listataan ääniraidat
clear
echo "ÄÄNIRAIDAT"
`lsdvd -q -t $pisin -a >audiot 2>/dev/null`
lrivi=0
cat audiot |cut -c 8-100| while read line; do
lrivi=`expr $lrivi + 1`;
if   [ $lrivi -gt 2 ];then
echo $line |cut -c 1-40;
fi
done;
read -p "Valitse ääniraita: " vaaniraita
vaaniraita=`echo $vaaniraita -1|bc` #vähennetään raidan numerosta 1
komento='vlc --play-and-exit -I dummy -vvv dvdsimple://@'$vtitle' --audio-track='$vaaniraita' --sub-track='$vtekstitysraita' --sout="#transcode{vcodec=mp2v,vb=2048,acodec=mp2a,ab=192,scale=1,channels=2,deinterlace,audio-sync,soverlay,scale=0.5}:standard{dst='$vnimi',access=file}"'

echo $komento>komento
sh komento
rm audiot tekstit komento
echo "Valmista tuli"
beep

edit0: audion koodauksessa pikkuinen moka.

edit1: Graafinen versio (http://jii.pastebin.com/f51cd7456) Zenityllä. Sellaista purkkaa että M$ jää toiseksi ;)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Jiku - 15.12.09 - klo:19.18
Yritin etsiä valmista tickeriä, joka näyttäisi näytöllä itse määrättyjä tietoja. En löytänyt niin purkkavirittelin itse.
Laitoin apunäytön yläkulmaan paneelin jonka taustavärin laitoin mustaksi.
Sitten gnome-osd-properties :lla siirsin OSD-tekstien näytön kyseisen paneelin päälle.

Skripti hakee viiden minuutin välein tiehallinnon sivuilta paikallisen sään. Säätilan lisäksi skripti näyttää tällä hetkellä paljonko katsomattomia valvontakameran tallenteita on.
kohdan "#tulostellaan näytölle tiedot" jälkeen niitä voi lisäillä ja poistella miten haluaa.

apuskripti "viesti" helpottaa viestin tulostamista näytölle (muuta fontti sellaiseksi joka on asennettu koneelle)
/bin/viesti
Koodia: [Valitse]
#!/bin/bash
#käyttö: viesti <sekunnit> <väri> <"viesti>
#viesti 3 yellow "moi moi"
aika=`echo $1*1000|bc`

gnome-osd-client -f "<message id='viesti' hide_timeout='$aika' osd_fake_translucent_bg='off'><span font='Tiresias Infofont 18' foreground='$2' >$3</span></message>"

/bin/infopalkki
Koodia: [Valitse]
#!/bin/bash
viimeisin="00:00"
viive=5 #sekuntia
nuku=6 #sekuntia
COUNTER=0
         while [  $COUNTER -lt 10 ]; do
             
#VERRATAAN AIKAA
nyt=`date +%H:%M`
nytd=`date +%s -d"$nyt"`
viimeisind=`date +%s -d"$viimeisin"`
ero=`echo "($nytd - $viimeisind) /60" |bc`



#JOS KULUNUT n MINUUTTIA...
if [ $ero -ge 5 ] || [ $ero -lt 0 ];
then

#haetaan netistä:
#***************LOPEN SÄÄ****************
wget http://alk.tiehallinto.fi/alk/kelikamerat/kamera-C0451702.html -O /tmp/loppi 2>/dev/null
cat /tmp/loppi |grep deg >/tmp/loppi2
#ilma
string=`cat /tmp/loppi2 |grep 45%`
str=${string#*004e61\"\>}
ilma=${str%\ \&deg*}
#tie
string=`cat /tmp/loppi2 |grep -ve 45%`
str=${string#*004e61\"\>}
tie=${str%\ \&deg*}
#säätiedotuksen aika
string=`cat /tmp/loppi |grep TAMMELA`
str=${string#*TAMMELA\ }
saaaika=${str%\<\/B\>*}
#*************/LOPEN SÄÄ***************

viimeisin=`date +%H:%M`
fi

#tulostellaan näytölle tiedot
kamera=`ls -1 /www/motion/cam/swf/ |wc -l`
viesti 7 white "$ilma°   tie: $tie°   ($saaaika)"
sleep 8



viesti 2 white "$nyt     Cam:$kamera"
sleep 3





 
         done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: mrl586 - 16.12.09 - klo:00.07
Joku voisi tehdä skriptin, joka ensimmäisellä ajokerralla
1) luo kotihakemistoon kansion openttd
2) asentaa paketit git-core git-svn
3) lataa openttd:n uusimman trunk buildin git-svn:ää käyttäen
4) asentaa openttd:n kääntämiseen tarvittavat paketit
5) siirtää kansion ~/openttd/os/debian yhtä tasoa ylemmäksi

Seuraavilla suorituskerroilla
1) varmistaa, että kotikansiossa on kansio openttd ja että kääntämiseen tarvittavat riippuvuudet on asennettu
2) siirtyy kansioon openttd
3) päivittää kansion sisällön käyttäen seuraavia komentoja:
Koodia: [Valitse]
git stash
git svn rebase
git stash apply
git stash clear
4) tarkistaa, onko openttd:n trunk muuttunut
5) Jos on, kysytään käyttäjällä, haluaako hän luoda deb-paketin. Paketti luodaan kansiossa ~/openttd komennolla:
Koodia: [Valitse]
dpkg-buildpackage -rfakeroot -uc -us
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 12.01.12 - klo:19.04
Nostetaanpas tätä aihetta, kun tuli kirjoitettua uusi, yllättävän näppärä, scripti. Kaverit vähän esittelivät AutoIt:llä tekemäänsä kuvankaappausohjelmaansa, niin minä ajattelin näyttää miten se tehdää Unix-tyylillä.

Eli tämä scripti ottaa kuvan halutusta työpöydän osasta (scrot:illa), tallentaa sen Dropboxin kansioon ja sitten laittaa Public-linkin leikepöydälle (käyttää siihen xclip:ä). Sen voi sitten liittää minne haluaa. Idea on lisätä tämä scripti pikanäppäimeksi työpöytäympäristöön, jotta sitä voi helposti käyttää.

Testattu vain Arch Linuxilla toistaiseksi, mutta pitäisi toimia mainiosti muissakin.
Käyttö, levittäminen ja muokkaus täysin vapaata.
http://dl.dropbox.com/u/4305182/etc/scrottaa.sh

Muokkaus: Poistin liitteen, koska tilani loppui.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 16.01.12 - klo:23.22
Nostetaanpas tätä aihetta, kun tuli kirjoitettua uusi, yllättävän näppärä, scripti. Kaverit vähän esittelivät AutoIt:llä tekemäänsä kuvankaappausohjelmaansa, niin minä ajattelin näyttää miten se tehdää Unix-tyylillä.

Eli tämä scripti ottaa kuvan halutusta työpöydän osasta (scrot:illa), tallentaa sen Dropboxin kansioon ja sitten laittaa Public-linkin leikepöydälle (käyttää siihen xclip:ä). Sen voi sitten liittää minne haluaa. Idea on lisätä tämä scripti pikanäppäimeksi työpöytäympäristöön, jotta sitä voi helposti käyttää.

Testattu vain Arch Linuxilla toistaiseksi, mutta pitäisi toimia mainiosti muissakin.
Käyttö, levittäminen ja muokkaus täysin vapaata.
http://dl.dropbox.com/u/4305182/etc/scrottaa.sh
Olisi näppärä, jos näissä debianeissa(kai ubu ja minttu on myös debianeita?) toimisi näin yksinkertaisesti :
Koodia: [Valitse]
CLIPBOARD='clipboard'Ei ainakaan ota ctrl-v gimpin kanssa, tallettaa kyllä hakemistoon.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 17.01.12 - klo:01.48
Lainaus
Olisi näppärä, jos ........

Kokeilin hieman tätä:

Koodia: [Valitse]
sudo apt-get install xclip
Sitten päätteessä pieni koe:

Koodia: [Valitse]
echo "höpö höpö" | xclip -selection clipboard
Painetaanpas sitten Ctrl-V täällä foorumilla:  höpö höpö

Kulkee ainakin tähän suuntaan.

Kertokaa miten menee toiseen suuntaan tuolla --- lähden nukkumaan välillä  ::)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 17.01.12 - klo:09.39
Olisi näppärä, jos näissä debianeissa(kai ubu ja minttu on myös debianeita?) toimisi näin yksinkertaisesti :
Koodia: [Valitse]
CLIPBOARD='clipboard'Ei ainakaan ota ctrl-v gimpin kanssa, tallettaa kyllä hakemistoon.
Tuo tosiaan tehdään sillä xclip-komennolla, kuten ajaaskel sanoi ja tuon CLIPBOARD=jotain rivin merkitys on vain valita mitä leikepöytää käyttää (kommentissa lukee). Kokeile tuota scriptiä päätteessä niin näet onko koneeltasi asentamatta joku noista erikoisemmista komennoista mitä tuo käyttää (ainakin jos tein tarkistuksen oikein). Tässä tapauksessa xclip.

Muuten onko joku onnistunut lisäämään tuon pikanäppäimeksi 11.10:n 3D (=perus, ei 2D) Unityyn? Yritin ensin näppäimistön asetuksista, mutta kuulemma ei toimi, koska ei käytä Metacityä ja sitten Compiz config settings managerilla, mutta se ei auttanut sen enempää. KDE:ssä Archilla onnistui helposti.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: retu - 17.01.12 - klo:12.09
Olisi näppärä, jos näissä debianeissa(kai ubu ja minttu on myös debianeita?) toimisi näin yksinkertaisesti :
Koodia: [Valitse]
CLIPBOARD='clipboard'Ei ainakaan ota ctrl-v gimpin kanssa, tallettaa kyllä hakemistoon.
En nyt varmaan ymmärtänyt, mutta jos tässä oli kyse työpöytäkuvan saamisesta leikepöydälle, niin sehän onnistuu PrtScr-näppäimellä. Se ottaa kuvakaappauksen ja sitten tulee kysymys tallennatko/kopioitko leikepöydälle.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 17.01.12 - klo:16.14
Itselleni tuli tuosta mieleen lähinnä kaksisuuntainen kommunikaatio:   bash <---> leikepöytä.  Pikakokeessa sain päätteestä tekstit tulemaan leikepöydälle ja sieltähän niitä voi tiputtaa minne vaan eteenpäin Ctrl-V: n avulla.  Skriptikin voi käyttää leikepöytää tuolla tavalla.
Auki jäi vielä miten tuo kulkee toiseen suuntaan eli miten skripti lukisi leikepöydän sisällön.
   
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 21.01.12 - klo:14.51
Vieläkään en saanut tuota scriptiä lisättyä pikanäppäimeksi Ubuntu 11.10:een, mutta tein siitä päivitetyn version, joka toimii suoraan ja nyt vaatii dropboxin. Edellinen siis toimii ilmankin, mutta vaatii Dropboxin userid:n asettamisen. Vanhan saa vielä tuosta vanhasta viestistäni (liitteenä).

http://dl.dropbox.com/u/4305182/etc/scrottaa.sh

Lisäksi tuo xclip näyttäisi toimivan näin:
Koodia: [Valitse]
tomin@tomin-workstation:~$ echo "Hienoa" | xclip -selection "primary"
tomin@tomin-workstation:~$ xclip -out -selection "primary"
Hienoa
tomin@tomin-workstation:~$
Tätä voi sitten ohjailla minne haluaa bashin normaaleilla ohjauksilla. Vinkkinä kannattaa lukea ohjeet ('xclip -h' ja 'man xclip'). ;)

Poistin liitteen, koska tilani loppui. Pidän kyllä dropboxissa ja kyselläkin saa (yksityisviestillä vaikka) jos tuo ei toimi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Mistofelees - 27.01.12 - klo:12.36
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista. Tämän pikku skriptin avulla voi purkaa kaikki .tar, .tar.gz ja tar.bz2 tiedostot ilman kryptisiä optioita. Laita tämä vaikkapa /usr/local/bin/untar nimiseen tiedostoon.

TAR:n kanssa kannattaa opetella myös 'P' -parametrin käyttö. Itse tein scripti-kasan, jonka jouduin levittämään moneen hakemistoon luokan koneissa:

Tehdään kasa:
tar -cvPf kasa.tar /usr/bin/s1.sh /home/bin/s2.pl /usr/local/sbin/s3,sh

Levitetään kasa koneeseen:
tar -xvPf kasa.tar

Tämä ei oikeastaan ole scripti, mutta tulipa mieleen.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 04.02.12 - klo:18.44
Putkitus ja globaali muuttuja:  Vikaa etsin hetken aikaa...
 
Tein nimittäin skriptissä tavalliseen tapaan putkituksen

    komento1 |  komento2

    , jossa komento2 kutsuu edelleen samaisessa skriptissä sijaitsevaa funktiota.

Kaikki toimi muuten hienosti mutta funktion päivittäessä globaalin muuttujan arvoa tuo päivitys meni aina harakoille. Tieto kulki globaalin muuttujan kautta funktiolle päin mutta takaisin päin sieltä ei tullutkaan mitään, globaali muuttuja ei päivittynyt. 

Kahlasin hetken nettiä ja sen perusteella tuo on ominaisuus eikä vika putkitusta käytettäessä.

http://stackoverflow.com/questions/6255303/bash-piping-prevents-global-variable-assignment (http://stackoverflow.com/questions/6255303/bash-piping-prevents-global-variable-assignment)

eli jos on tarve päivittää jotain globaalia muuttujaa tuolla "putkessa" niin ei onnistu, parempi toteuttaa tuo kohta ilman putkitusta.   
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 08.02.12 - klo:16.24
Koneesi nykyiset ohjelmalähteet esiin yhdellä kertaa:

Koodia: [Valitse]
cd /etc/apt&& find . -name "*.list" | xargs -n 1 cat | grep "deb"&& cd
PS. Tuo ei välttämättä toimi muissa jakeluissa kuin Ubuntu ja "yhteensopivat".



Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 11.04.12 - klo:15.10
Pitkän tauon jälkeen palauttelin mieleeni bashin alkeita ja siitä syntyi yksinkertainen laskuri prossun lämmöille:
Koodia: [Valitse]
#!/bin/bash

# Alku kysymykset ja asetukset
echo "Prossun lämpötilan tilastointi" ;echo ""
echo "Monenko sekunnin välein lämpötila mitataan?" ;read KERRAT
echo "Montako kertaa lämpötilaa tilastoidaan? " ;read VASTAUS
echo "Tiedoston nimi tulosteille (oletus $TIEDOSTO)" ;read TIEDOSTO
MINSAT=$[KERRAT*VASTAUS/60] ; TUNNIT=$[KERRAT*VASTAUS/60/60]

# laskuri
echo " Prosessorin lämmöt $MINSAT minuutin / $TUNNIT tunnin ajalta. Kirjoitetaan tiedostoon $TIEDOSTO"
  for muuttuja in $(seq $VASTAUS)
  do
  echo "Mittauskerta nro: $muuttuja"
  sleep $KERRAT
  sensors |grep temp1 | cut -c 16-19
  sensors |grep temp1 | cut -c 16-19 >> $TIEDOSTO
done
# cat $TIEDOSTO | xargs

Jotta tästä olisi edes jotain hyötyä jollekkin, niin  pitäisi saada laskettua tuloksista keskilämpötila, suurin ja pienin lämpötila. En vain keksi miten syöttää tulokset vaikka qalculatelle tai muulle laskimelle. Tai laskea jollain muulla tavalla.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 11.04.12 - klo:17.28
Jotain laskuja olen joskus laskenut bc:llä. Auttaisiko se?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 12.04.12 - klo:01.32
Lainaus
Jotain laskuja olen joskus laskenut bc:llä. Auttaisiko se?
Sillähän se onnistui. Jouduin taistelemaan yön tunneille, kun muuttujat eivät ymmärtäneet desimaaleja.
No nyt se on valmis ja toimii. Vielä pitäisi keksiä joku käyttötarkoitus tuolle :). Ehkä siitä on apua ylikellottajalle.
Koodia: [Valitse]
#!/bin/bash

## Prosessorin lämpötilan seuranta työkalu ##
# Alku kysymykset ja asetukset
read -p "Kuinka kauan lämpötilaa mitataan? (minuuttia) >" MINSAT
KERRAT=$[MINSAT*20] ; SUMMA=0.0 ; MAX=1

# laskuri
for muuttuja in $(seq $KERRAT)
  do
  sleep 3
  TULOS=$(sensors |grep temp1 | cut -c 16-19)
  echo "Mittauskerta nro: $muuttuja. Lämpötila : $TULOS C"
  SUMMA=$(echo "$SUMMA+$TULOS" | bc)
  BC=$(echo "$TULOS>$MAX" | bc)
if [ "$BC" = 1 ]
then
  echo "* Uusi maximi ******* $TULOS C *******"
  MAX=$TULOS
fi
done

# Loppu summa summarum
KESKIARVO=$(echo "$SUMMA/$KERRAT" | bc)
echo "Keskiarvo  : $KESKIARVO   C"
echo "Maksimi    : $MAX C"

PS. Vanha Opteroni ei noussut kuin 57C piitä laskemalla, vaikka kelloja on nostettu  +25%
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 12.04.12 - klo:15.21
Ottaahan se desimaalejakin, kun niin käskee.
Koodia: [Valitse]
echo "scale=10;1/7" |bcja tuolla voi tehdä vaikka muunnoksia:
Koodia: [Valitse]
echo "ibase=16;obase=A;3D |bcvai tarkoititko, että bash ei tykännyt?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 12.04.12 - klo:18.32
Vanhojen Linux-BASH-gurujen töissä on vaikka mitä, mutta noiden töiden löytäminen on melkein mahdotonta. Kun kerää töitä noilta guruilta skriptiajurin tietokantoihin mitenkään niitä seulomatta niin vaikka noista töistä löytääkin vain pieniä palasia omiin projekteihinsa niin kasaaminen on nopeaa.

Tässä esimerkiksi rullahiiren lukeminen:
- tämä rullahiiren lukija toimii tekstitilassa. x&y on sen kirjainpaikan koordinaatit joita hiiriosoitin osoittaa kun hiiren rullaa näpsäytetään.
- kun rullaa näpäytetään tulostuu merkityksellisellä rivillä kolmantena merkki ! ja senjälkeen y ja sitten x ascii-muodossa.
- näytön vasen yläkulma on 0 0 ja ja oikea alakulma <tekstirivien luku näytölläsi> <tekstirivin pituus näytölläsi>.
- seuraavaksi lasketaan x&y desimaalisina. 
- kun haluat käyttää tätä ali-rutiinina skriptissäsi korvaa viimeinen echo sanalla break;   . X ja y siirtyvät globaalialueella
- Jos ylä- ja sivupalkin alueella näpsäyttää omii käyttöjärjestelmä näpsäyksen ja tekee omia juttujaan; senkun vaan sulkee avautuneet ikkunat ja jatkaa hommia.
- Eikä oikeakaan laitakaan välttämättä toimi. Vakioissakin olisi varmasti virittämisen varaa.

Koodia: [Valitse]
#!/bin/bash
while true; do 
 echo -en "\e[?1003h"; read -sn6 -t 0.05 key ; echo -en "\e[?1000l";[[ ${key:3:1} = "!" ]] && x=$(LC_CTYPE=C printf '%d' "'${key:4:1}") && y=$(LC_CTYPE=C printf '%d' "'${key:5:1}"); echo -en '\rrullaa on näpäytetty rivillä: '$((y - 33))'    kirjainpaikalla: '$((x - 33))'           '; done
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.) | gedit käynnistys
Kirjoitti: K-Veikko - 15.04.12 - klo:18.16
En tykkää gedit'in antamasta oletusnimestä "Nimetön asiakirja 1", joten käynnistän gedit'in skriptillä

Koodia: [Valitse]
#!/bin/sh

# AIKA=$(date +%Y-%m-%d_%T)
# AIKA=$(date +tekstia_%F_%T)
# man date

AIKA=$(date +%Y-%m-%d_%H-%M-%S.txt)
cd $HOME/TMP/
/usr/bin/gedit $AIKA

- Tietenkin $HOME/TMP/ -hakemisto (tai vastaava) on jo oltava olemassa.
- Skriptin saa kätevästi yläpalkkiin, kun siirtää sinne gedit'in kuvakkeen. -> ominaisuudet -> suoritettavaksi komennoksi laittaa tuon skriptin. (esim $HOME/.skripti-kaynnistys-gedit)

Tiedoston vaeltaessa eri palvelimien välillä (esim Ubuntu one), sen aikaleima saattaa matkalla hävitä. Nyt nimessä säilyy edes jonkinlainen tieto luontipäivästä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 21.04.12 - klo:11.58
Teinpä käskyjonon asteiden muuttamiseksi radiaaneiksi. Se toimii perus asennuksella, siis ilman lisäpakettien apua:

asteet=30.72; radiaanit=$(echo "scale=10; $asteet * $(echo "scale=10; 4*a(1)" | bc -l) / 180 " | bc ); echo $asteet' astetta on: '$radiaanit' radiaania'

- luvut ovat muuten tekstijonoja.
- Piin arvoon ainakin sai 50 oikeaa numeroa, loppuja 10000:tta en viitsinyt tarkistaa. Tarkkuutta saa justeeraamalla scale:a.
- ilmanmuuta näppärämpiäkin löytyy, siitähän tämä Linux on hyvä - tai peruna jos ottaa sen toisella tavalla.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 25.04.12 - klo:12.32
Skriptit ovat hitaita. Mutta itseasiassa  ne ovat 1..2 kertaluokkaa nopeampia kuin mitä väitetään; päädyin mielipiteeseen koska:

BASH:in alimman tason käskyt ovat todella liukkaita käsitellä ja avuksi onkin tehty grep, awk, sed ... ; ne ovat miellyttävämpiä käyttää mutta vastaavasti hitaampia. Koska ne on tehty käsittelemään tiedostoja niin eihän niiden hitaus missään näy; kyllä levy on se hitain jokatapauksessa.

Aloinpa tänäaamuna laittaa skriptini levylle kirjoituksia kuntoon: levyviittauksissa sallitaan että kun kansioon viitataan niin merkki / saa olla // tai /// tai ... Mutta lopulta mylly kaatuu tuommoisiin nimiin ja jokatapauksessa inhottavan näköistähän se on. Päätin poistaa turhat.  Teinpä temppuja monenlaisia mutta lopulta päädyin seuraaviin:
apu=${KansionNimi%%[[:alnum:]]*}; KansionNimi=${KansionNimi:${#apu}} # siistitään kansionnimi alkamaan aakkosnumerolla
apu=${KansionNimi%[[:alnum:]]*}; KansionNimi=${KansionNimi:0:$((${#apu}+1))} # siistitään kansionnimi päättymään aakkosnumeroon

Rupesin sitten pähkäilemään kuinka nopeita ne ovat. Enpähän sano mitään sillä tulos on naurattavan nopea.

 
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 25.04.12 - klo:13.40
Lainaus
Skriptit ovat hitaita. Mutta itseasiassa  ne ovat 1..2 kertaluokkaa nopeampia kuin mitä väitetään;
Ei ole mikään nopeusraja tullut vastaan niissä tarkoituksissa mihin niitä itse olen tehnyt.  Omaan kirjoitusnopeuteeni verrattuna suorastaan rajattoman nopeita.   Varsinainen ilon aihe on miten paljon pienellä pätkällä skriptiä voi saada aikaan, tavanomaisilla ohjelmoitikielillä saisi usein näpytellä näppäimistöä pitkästi.  
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 25.04.12 - klo:14.34
Varsinainen ilon aihe on miten paljon pienellä pätkällä skriptiä voi saada aikaan, tavanomaisilla ohjelmoitikielillä saisi usein näpytellä näppäimistöä pitkästi.  

Tottapa haastat, olen ihan samaa mieltä. Mutta täytyy myöntää että olen hölmön haavoittuva c++:n harrastajien nopeudella kehumiselle ja BASH:in halveksunnalle.

Skriptien siemeniä: Linux:issa voi tulostaa siten, että ensin ohjelma ei vaivaudu muotoilemaan tulostusta ollenkaan ja ohjelman loppuun liitetään Linuxin muotoilu-ohjelman kutsu. Tähän tapaan:
esimerkki 1: for m in {0..32}; do for n in {0..10}; do echo -n  $[ ( $RANDOM % 10000 )  + 1 ]' '; done; echo; done | column -t
esimerkki 2: cat /etc/passwd | column -ts:

- noita muotoiluohjelmia on monia muitakin ja niillä paljon kytkimiä joten teoriassa tulostuksen saisi helpohkosti kunnolliseksi. Muita muotoiluohjelmia tusina, esimerkiksi: paste, expand, fmt, newform, csplit, pr, stty, tput ....tai kaikkeehan voi käyttää kaikkeen.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 29.04.12 - klo:18.45
Aloinpa miettiä miksi BASHista puuttuu desimaaliluvut. Ilmeisesti se on kehittäjien tapa kertoa että se johtaisi eksponenttimuotoiseen esitykseen ja on parempi olla  sotkeutumatta sellaiseen joka on jossain mielessä kelvotonta. On niitä desimaaliluvuilla laskevia sovelluksia silti monia, tässä muutama. Esimerkeistä selviää vasta periaate ja ne vaativat vielä etupäätä.
Teoriassa sinit ja kosinit tunnetaan, pii, logaritmit .... joskaan niitä ei noihin noinvain tungeta.
- luvun numeromäärän kasvaessa siirrytään muissa sovelluksissa lähes aina eksponenttimuotoon mutta tässä ei sillä eksponenttimuodossa tarkkuus romahtaa.
- ja tosiaan BASHiin pätee: kenties nämä jopa laskee väärin joissakin tapauksissa mutta enpähän edes välitä sillä parempia skriptejä on noin miljoona.
- BASH on aina hidas tai sanottaisiinko ei-nopea. Ja jos tekee hommat väärin niin almannakkaa tarvitaan.
Koodia: [Valitse]
esimerkki 1:
#!/bin/bash
function laske () {
tulos=$(eval echo $(echo '"'$(echo ${@} | tr -d " " )'"') | bc -l)
}
laske 0.123456789012345678901234567890123456789 +0.00000000000000000000000000000000000001 +123456789012345678901234567890123456789 *1
echo $tulos
read -p 'paina enter jatkaakseesi'
# keno on  tutkinnassa; taitaa se tuloksessa ollakin
# laskettavia voi teoriassa laittaa kuinka monta vaan eikä sitä täydy kertoa missään.
# kaikki normaalit laskutavat +, -, *, /, %(=jakojäännös) tunnetaan ilmanmuuta ja lisää saa pikkuisen virittämällä.
# desimaaleissa löytyy. Niiden määräämistä en hallitse, kai se scale pitäisi ahtaa johonkin.

esimerkki 2:
#!/bin/bash
# awk siirtyy eksponenttiesitykseen kun numerot ei muuten riitä. Awk kykenee myösa sineihin sun logaritmeihin.
luvut[0]='1 2 3.33333'
luvut[1]='4 5 6.66666'
luvut[3]='7 8 9.99999'
echo -e 'matriisin\n '"${luvut[@]/%/\n}""\n"
echo -e ' '"${luvut[@]/%/\n}" |  awk '{summa+=$3} END {print "sarakkeen 3 summa on: ",summa}'
echo ${luvut[1]} | awk '{s=0; for (i=1; i<=NF; i++) s=s+$i; print "rivin 1 summa on: "s}'  
echo -e ' '"${luvut[@]/%/\n}" | awk '{for (i=1; i<=NF; i++) s=s+$i}; END{print "koko matriisin summa: "s}'
read -p 'paina enter jatkaakseesi

- ongelmat ratkesi bc:llä  - ainakin 138 numeron tarkkuuteen.
- kun tekee etupään geditistä saa laskimen, joka kelpaa vaikka veroilmoituksen vähennysten laskemiseen - pennilleen valtion budjetissa. Tietenkään kukaan ei kuvittelisikaan käyttävänsä tällaista, mutta mikäli vaivautuu tekemään muun laskutusjärjestelmän - noin pari vuotta ja kaikki kaupalliset jäisi toiseksi.
- kaupallinen ei koskaan ole luotettava. Itsetehdyssä jokainen lisäpaketti johon joutuu turvautumaan pienentää sekin luotettavuutta.

Toinen asia: olen käyttänyt skriptieni funktionimissä ääkkösiä muutamia kuukausia ja hyvin tuntuu toimivat. Tiedostonimissä on ollut ääkköset jo vuosia. Samoin välilyönti on ongelmaton kunhan laittaa tiedostonimen sulkeisiin -  kenoa ei kannata tiedostonimissä käyttää.

Uusi: Aina sillointällöin läppärini bluetooth lakkaa toimimasta. Takaisin toimintaan sen saa käskyllä: sudo service bluetooth restart . Mutta minun päässäni  ei muistia olekaan joten neljän sanan muistaminen on mahdotonta. Mutta kun käsky on kerran annettu pysyy se Ubuntun muistissa ikuisesti ja sen saa suoritettua uudestaan käskyllä: !?bluetooth
- tosin historia on vain 500 riviä alkuunsa. Sen saa rajoittamattomaksi kun laittaa tiedostoon .bashrc käskyn: export HISTSIZE=""
- muistikoot ovat nykyään niin suuria ettei se ei aiheuta vaikeuksia koskaan.
- !?käskyn_osa toimii kaikissa tilanteissa.



 
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 09.05.12 - klo:13.18
Nopeuksien noustessa suureksi time-käsky näyttää turhan karkeasti. Verkosta löysin tällaisen jolla on nanosekunnin resoluutio. Olisi  oikein  mielenkiintoista tietää mikä on sen todellinen tarkkuus?
En löytänyt netistä.

Koodia: [Valitse]
#!/bin/bash
# mitattava rutiini laitetaan lauseiden: Alkuhetki=$(date +%N) ja Loppuhetki=$(date +%N) väliin.
Alkuhetki=$(date +%N)
echo $(awk -F':' '$6 ~ /home/ && $3 >= 500 { print $1 }' /etc/passwd)
Loppuhetki=$(date +%N)
echo 'Aika nanosekunteina: '$(echo $Loppuhetki-$Alkuhetki | bc )

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: retu - 10.05.12 - klo:11.42
En tiedä, mutta veikkaan että nanosekunti. Perustunee prosessorin kellolaskuriin, joten nykyisillä prossuilla on ihan hyvin mahdollista.

Eri asia on sitten että tuon date-komennon ajamiseen kuluu pikemminkin millisekunteja.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 10.05.12 - klo:14.21
Viiveet ovat kummassakin aikamäärityksessä samat sulkien toisensa pois. Värinäähän voi silti olla, mutta koetapas seuraavaa:
Laita ajoitettavaksi käskyksi: sleep 1  . Tuloksena onkin noin 1.005 + värinä. Eihän tuollaista aikaansaa mikään.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 10.05.12 - klo:20.47
Lainaus
Verkosta löysin tällaisen jolla on nanosekunnin resoluutio. Olisi  oikein  mielenkiintoista tietää mikä on sen todellinen tarkkuus?

Kokeilitko:

Koodia: [Valitse]
date +%N;date +%N
Arviosi ?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 11.05.12 - klo:06.41
Mielenkiintoista, tuohan kestää kauan - ihan liian kauan.

Laskeskelin paljonko ne vaihtelee. Sekin tuntuu olevan luokkaa 0.2ms - joskus voi tulla paljonkin isompi ero.

Ihan mutua: tuntuu että viimeaikoina asiat ovat sentään melkolailla parantuneet.

Tein skriptin asian tutkimiseksi, se kertoo eron millisekunneissa:
Koodia: [Valitse]
for n in {0..50}; do ajat=$(date +%N;echo -n '  ';date +%N); aika1=${ajat%% *}; aika2=${ajat##* }; echo "$aika2 - $aika1" | bc ; done
mutta sitten eksyin pikkuisen sivuraiteelle: linuxin voi ladata RAMmiin. Se tuntuu vaikuttavan.

Rammiin lataaminen on yksinkertaisinta tehdä live-CD:ltä - kuulemma CD-asemakin  vapautuu muuhun käyttöön boottaamisen jälkeen , mutta en ole varma kun itse boottaan USB-tikulta. Lataaminen käy näin:
Aloita boottaus live-CD:ltä ja valitse kieli: kieli on pakko valita vaikka valitsisi englannin. Seuraavaksi painetaan nappia f6 ja sitten nappia ESC  ja kirjoitetaan toram ja painetaan return.

Toinen juttu: kyllä BASH on kiva kun sen toiminta on aivan ennustettavissa: esimerkiksi kun haluaa tietää kuinka monta riviä on jonkun kansion kaikissa tiedostoissa (paljonko lokeihin on kirjoitettu, paljonko historioihin jne.) niin käsky on:
wc -l <kansio polkuineen>/*  | awk {'print $1'} | tail -1

Ennustettavuudesta puheenollen:
Koodia: [Valitse]
#!/bin/bash
luvut[0]='1 2 3'
luvut[1]='4 5 6'
luvut[3]='7 8 9'
echo 'matriisi on: '; echo -en ' '"${luvut[@]/%/\n}"
echo -e ' '"${luvut[@]/%/\n}" |  awk '{summa+=$1} END {print "sarakkeen 1 summa on",summa}'

Tai esimerkiksi gedit <kansio polkuineen>/* joka on erittäin mukava käyttöohjeiden kanssa sillä niitähän ei koskaan saa laittaa yhteen pötköön niinkuin melkein aina on tehty - sillä tuloksena on sellainen tiiliskivi jota kukaan ei lue. Ja kun ne jakaa tiedostoihin niin niiden lukumäärät ja nimet vaihtelevat kokoajan ja ellei editori ota sitä automaattisesti huomioon niin koodia joutuu puukottamaan usein. Kauan sitten kuvittelin että hyper-linkit ovat ratkaisu tähän, mutta eivät ne ole.

Tulipa eteen ongelma: matriisin kopioiminen toiseen matriisiin: BASHissa matriisin jäseniä voi määritellä siellä-täällä vaikka epäjärjestyksessä. Kopiointiin tulee lisäongelma indexien siirtämisestä. Koko homma onnistuu kootulla-käskyllä:
Koodia: [Valitse]
for n in ${!matriisi[*]}; do matriisinkopio[$n]=${matriisi[$n]}; done
- käsky toimii myös assosiatiivisilla matriiseilla. Mutta assosiatiivisten matriisien indexit ja sisällöt on jotenkin solmussa.

Pitipä lukea päiväukset sun muut. Sehän onnistuu yhdellä käskyllä: (muuten IFS on .välilyönti)
IFS=". " read -r viikonpaiva vuosi kuukausi paiva tunti minuutti sekunti alue <<< $(date); unset IFS



Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: vellu@vmach - 13.06.12 - klo:13.22
Tämä ei ole skripti, vaan alias .bashrc:hen lisättäväksi. Tätä ilman en tulisi toimeen:
Koodia: [Valitse]
alias herätys='echo "Moneltako se herra aikoo heräillä?" ;read WAKEUP ; echo mpg321 "/home/vellu/temppi/herätysbiisit/*.mp3" | at $WAKEUP'
ps. Polku pitää muuttaa ja asentaa mpg321. Aika muodossa 07:15 tai 0715.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Jakke77 - 11.09.12 - klo:15.11
nostellaanpa
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: JoniR - 31.07.13 - klo:11.38
Hei,
Osaisiko joku auttaa tälläisessä ongelmassa.
Haluaisin scirptin, joka käy läpi kohde kansiossa olevat alikansiot ja muodostaa kaikkiin kansioihin symbolisen linkin joka ohjaa tiettyyn paikkaan.
Esim näin:
/home/joni/temp/work/kuvat/index/tiedosto.txt <<-- Tiedosto johon haluan linkin viittaavan
Kansiorakenne, jonne haluan linkkien muodostuvan:
-a
--a.a
--a.b
-b
--b.b

Yritin tämän tyylisellä scriptillä, mutta ei oikein tuottanut tulosta(tässä ei nyt ole tuota alihakemistojen looppaustakaan)
Koodia: [Valitse]
#!/bin/bash

SOURCE="/home/joni/temp/work/kuvat/index"
DEST="/home/joni/temp/work/kuvat/a"

cd -- "$SOURCEDIR"

find -type f -exec ln --symbolic -- "$SOURCEDIR"/{} "$DESTDIR"/{} \;

exit

Tässä on sellainen ongelma, että linkit yrittää muodostua ihan väärään paikkaan:
Koodia: [Valitse]
ln: creating symbolic link `/./CreateSym': Permission denied
ln: creating symbolic link `/./index/tiedosto.txt': No such file or directory

Olen ilmeisesti lähtenyt ratkaisemaan ongelmaa vähän väärästä suunnasta, mutta nyt ajatustasollakin olen täysin jumissa :)

-Joni
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 01.08.13 - klo:09.21
Lainaus
Olen ilmeisesti lähtenyt ratkaisemaan ongelmaa vähän väärästä suunnasta

Ei suinkaan.

"find" hakee kaikki haarat ellet sitä erikseen estä.  Tuo linkin teko menee näin (päin):

Koodia: [Valitse]
ln -s   <tähän_se_kohdekansio_tai_tiedosto>    <tähän_minne_se_linkki_tehdään_ja__sen_nimi>
Esimerkki:
Ajatellaan että meillä on Matin kotikansion alla /bash kansio.  Haluamme luoda paikkaan /home/matti linkin jonka nimi on "pässi-jutut".  Kirjoitellaan  näin:

Koodia: [Valitse]
ln -s  /home/matti/bash    /home/matti/pässi-jutut
Kerron lisää kun ehdin ellet sitä ennen pääse eteenpäin näillä.

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: JoniR - 01.08.13 - klo:11.47
Jotenkin hämäännyin tuosta Find tulostuksesta eilen. Sehän ei tosiaan tulostanut absoluuttistapolkua joten tuo linkki yritettiin lisätä aina kansioon /./.
Noh tänään uudelleen ja nyt homma toimii. Kiitos ajaaskel avusta.
Koodia: [Valitse]
#!/bin/bash
for D in $(find /home/joni/temp/work/kuvat/kansiot/ -mindepth 1 -maxdepth 5 -type d) ; do
    ln -s /home/joni/temp/work/kuvat/index/tiedosto.txt $D/tiedosto.txt 2>/dev/null
done
-Joni
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Postimies - 03.08.13 - klo:20.05
Valokuvien pienennys vaikka nettigalleriaan - koko kansio

Koodia: [Valitse]
for I in *.JPG ; do convert -quality 75 -resize 1400x930 -strip -quality 75 -auto-orient -unsharp 0.0x1+1+0 $I ${I%.JPG}_ter.jpg ; done
-strip  poistaa metadatan
-unsharp tekee terävöinnin. Digijärkkärin kuvat tykkää tuosta. 0.0x1+1+0 sopiva lähtöarvo
-resize uusi kuvan koko. Myös prosentteina esim 30%
-auto-orient  käännetään kuva automaattisesti
-quality pakkauksen laatu. Vaikuttaa kokoon paljon

Vaatii imagemagic paketin. Optioita tuossa paketissa on paljon. Vesileima vielä tekemättä. Ehdotuksia otan vastaan.


Lisäsin kooditägit --- ajaaskel
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 08.08.13 - klo:21.30
react2load  --- Kuorman mittaus ja ylikuormittavan ohjelman sammutus

Kirjoittelin koodinpätkän joka arvioi prosessin CPU-kuormaa prosenteissa ja jos kuorma on pidempään esimerkiksi yli 90 % (=juminut, seonnut tai mitä hyvänsä) niin lähettää sammutuskäskyn kyseiselle prosessille.   Käyttöesimerkki jos valvottavan ohjelman nimi on vaikkapa "rtmpdump":

Koodia: [Valitse]
./react2load  90  15  rtmpdump
eli jos kuorma on 90% yhtäjaksoisesti vähintään 15 s ajan niin "rtmpdump" saa sammutuskäskyn.
Ohjelma sammuttaa itsensä lopetettuaan ensin valvottavan kohteensa toiminnan eli ei jää turhaan roikkumaan tehtyään tehtävänsä.  Tehtävä toimenpide voisi olla jotain muutakin kuin "killall", helppo muuttaa tuohon jos tarvitsee.

Tuota voi soveltaa pelkkään kuorman mittaukseenkin kun antaa prosenttiarvoksi yli sata ja sammuttaa sen Ctrl-C: llä lopuksi:

Koodia: [Valitse]
./react2load  101 15  rtmpdump
Laitoin esille tänne:

http://www.homelinuxpc.com/download/react2load (http://www.homelinuxpc.com/download/react2load)

Kirjoitin yksinkertaisen kuormageneraattorin jolla pääsee kokeilemaan täydellä kuormalla (100 %) sekä pienemmillä osakuormilla.  Skripti löytyy täältä nimellä "load2cpu":

http://www.homelinuxpc.com/download/load2cpu (http://www.homelinuxpc.com/download/load2cpu)

Tuolla pääsee kokeilemaan niin että yhteen päätteeseen kuormaa päälle CPU: lle ja toiseen mittaus/ pakkosammutus.

Mukavasti lähtee läppärissäni ainakin tuuletin pyörimään kun laittaa täyden CPU-kuorman päälle.

Käyttöohje kuten kaikilla skripteillä, tiputuksen jälkeen ajo-oikeus päälle joko graafisesti tai sitten päätteessä:
Koodia: [Valitse]
chmod +x  react2load

chmod +x  load2cpu

ja ajaminen tehdään antamalla skriptin nimen eteen pakolliset piste ja kauttaviiva ./  ennen nimeä kun ollaan kansiossa missä skriptit (=bash ohjelmat) sijaitsevat.

Kannattaa huomata että valvottavalla ohjelmalla tulisi olla yksilöivä nimi / ohjelmaa tulisi olla käynnissä vain yksi kappale samaan aikaan tai vain yksi niistä sammuu. Ohjelmaa on toki helppoa muuttaa jos tarve on muuta.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 17.01.14 - klo:19.23
SD-kortilta vain uudet kuvat talteen --->  ~/Kuvat/Valokuvat/Kamerasta

Tarve oli kerätä ajoittain talteen kameran kortilta vain ne uudet kuvat / videot omalle koneelle johonkin hakemistoon ilman mitään lajittelua jollain nopealla tavalla ja niin että kaikki tulee talteen ilman erityistä pähkäilyä.  Kirjoittelin pikku skriptin joka tekee tuon ainakin itselleni sopivalla tavalla "rsync" ohjelman avulla.  Tuo rsync kopioi vain muuttuneet eli tässä tapauksessa ne uudet valokuvat talteen.  Keksin tuolle nimen "sdup"  (SD-kortilta upload).   Se kopioi oletuksena uudet tiedostot SD-kortilta "DCIM" kansion alta --->  ˝/Kuvat/Valokuvat/Kamerasta jonka alta löytyy kameran kortilla näkyvät kansiot, itselläni 100_FUJI ja 101_FUJI joissa itse valokuvat ovat. 
Kuvien talteenotto on nopea ja helppo toimenpide jos laitat tuon vaikka kotikansioosi ja annat sille ajo-oikeuden:

Koodia: [Valitse]
./sdup
Eteen ei tarvitse tuota piste-kauttaviiva yhdistelmää jos kopioit skriptin "polun varteen" eli vaikka --> /usr/local/bin kansioon.   Jos oletuskansio valokuville ei ole hyvä niin voit antaa oman kohdekansiosi:

Koodia: [Valitse]
./sdup   /home/ville/jotain_parempaa_valokuville
Laitoin skriptin esille:

http://www.homelinuxpc.com/download/sdup (http://www.homelinuxpc.com/download/sdup)

Uudempi versio "sdup2"täällä:
http://www.homelinuxpc.com/download/sdup2 (http://www.homelinuxpc.com/download/sdup2)

Toiminnasta:  Skripti etsii kameran korttia "/media" -kansion kyseisen käyttäjän haaroista olettaen löytävänsä sen sillä että SD-kortilla on DCIM kansio ja kopioi "rsync" ohjelmalla uudet kuvat haluttuun paikkaan. En ole kokeillut toimiiko tuo missä määrin oikein muiden kameroiden kanssa kuin omani, Fujifilm FinePix HS35.
Skripti näyttää mitä se yrittää tehdä ja kysyy vahvistuksen ennen toimenpidettä.  Vain "K" niin kuin "kyllä" kelpaa hyväksynnäksi.  Myös kirjoitusoikeus kohdekansioon tarkastetaan ennen kopiointiyritystä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Postimies - 17.01.14 - klo:21.55
Ideana hyvä. Nykyisillä muistikorteilla kun voi olla yli tuhatkin kuvaa.

Voisi katsoa myös kansion /run/media/$USER/*/DCIM sisällön.
 /usr/local/bin on hyvä paikka kaikille käyttäjille.
Vaihtoehtona tietysti käyttäjän oma /bin kansio, joka yleensä
sisältyy polkumääreeseen. Sitä en muista kirjoittaako -a
vanhempien tiedostojen päälle jos sattuu kuvien numerot
olemaan samat. Kiva lisä olisi jos muuttaisi tiedostojen nimet
pienellä. Eli DSC_0629.JPG olisi dsc_0629.jpg
Saḿalla ExifTool voisi pistää exif-dataan tekijänoikeustiedot.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 18.01.14 - klo:15.02
Lainaus
Voisi katsoa myös kansion /run/media/$USER/*/DCIM sisällön.

Kirjoitin funktion joka varmistelee kumpi paikka on käytössä.  Funktio lukee listasta nuo paikat eli sitä on helppoa täydentää jos uusia paikkoja ilmenee.  Uusi versio on esillä.

Tuo ylikirjoitusasia saattaa olla hieman ongelmallinen, käsittäisin että rsync on suunniteltu ylikirjoittamaan.  Täytyisi hieman kokeilla mitä kamera tekee kun vaihtaa korttia tai tyhjää kortin eli miten helposti kävisi että kameran kortilla saman nimisessä kansiossa samalla nimellä olisi eri kuva kuin aiemmin vai onko tuo mahdollista ollenkaan ?

Nuo tiedostonimet olisi helppoa muokata mielivaltaisesti mutta siitä seuraisi että rsync kopioisi aina kaiken uudestaan kun samannimistä / aikaleimaista tiedostoa ei ole kohteessa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Postimies - 18.01.14 - klo:17.10
Tuo uusi paikka levyille (/run/media/$USER/jokumedia) on sekoittanut monien (varmuuskopio) scriptit. Itsekin ihmettelin tuota päivityksen jälkeen. Samoin eth0 on nykyään enp2s0. Ei tuotakaan heti keksinyt..

Kameroita on monenlaisia. Jos asetuksissa on, että tyhjä kortti aloitetaan esim. numerosta DSC_0001.JPG niin päällekirjoituksen vaara on olemassa. Itselläni on kaksi kameraa, josta syystä saman nimisiä tiedostoja löytyy. FAT-systeemissä joku raja tiedostojen lukumäärelle. Siksi niitä pitää tunkea alihakemistoihin. Kun tiedostaja vielä luetaan listasta eikä puusta niin tiedoston haku on kovin hidasta.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: nm - 18.01.14 - klo:18.58
Tuo uusi paikka levyille (/run/media/$USER/jokumedia) on sekoittanut monien (varmuuskopio) scriptit.

udisks2:n muutos. Debianissa ja Ubuntussa siirto /run-hakemistoon on kumottu epästandardina ja sijainti on /media/$USER/jokumedia.


Samoin eth0 on nykyään enp2s0.

Tämä taas taitaa olla systemd:n ideointia, mutta ehkä siitä tulee jossain vaiheessa yleinen standardi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 01.02.14 - klo:19.39
Ideoin hieman jos tiedostot nimeäisi kameran kortilla olevien tiedostojen päiväyksen mukaan jo ennen loppukopiointia eli tekisi linkkilistan josta rsync kopioisi mutta kokeillessani huomasin että idea ei toimi:  Samalla tiedostopäivällä + kellon ajalla on yllättäin useampia tiedostoja kameran kortilla:

ln: failed to create symbolic link ”/tmp/sdup2/2013-12-27_12:33:36-JPG”: Tiedosto on olemassa

-rw-r--r-- 1  76969152 2013-12-27 12:33:36.000000000 +0300 DSCF1118.MOV
-rw-r--r-- 1    1082735 2013-12-27 12:33:36.000000000 +0300 DSCF1119.JPG
-rw-r--r-- 1    1114761 2013-12-27 12:33:36.000000000 +0300 DSCF1120.JPG


Yllättävää ja harmillista sillä tuo olisi pyörinyt nopeasti. Sillä olisi mahdollisesti välttänyt eri kameroista tuotujen tiedostojen nimikonfliktit ja saman nimisten tiedostojen ylikirjoituksen.
Kokeilen seuraavaksi lisää  EXIF "CreateDate" kentän hakua kuvatiedostosta, tämä taitaakin onnistua...  

Edit:
No nyt se toimii aika mukavasti.  Tiedostot tallettuvat nimettynä uudestaan kuvanottopäivän + kellonajan mukaan joka luetaan kuvan EXIF-tiedoista.

Kuvat/Valokuvat/Kamerasta_nimetty/2014-01-31_12:33:23.jpg

Tein tuonne syntymään uuden kansion "Kamerasta_nimetty" johon kuvat siirtyvät SD-kortilta. Isot kirjaimet muuttuvat pieniksi tiedostotyypissä eli SD-kortin ".JPG" ---> ".jpg".  Koska toiminta on hieman erilainen kuin vanhemmassa versiossa joka kopioi nimeämättä mitään niin muutin nimenkin tälle "sdup2": ksi.  Vanhaa ja uutta voi halutessaan käyttää rinnakkainkin.

Tämä "sdup2"tarvitsee "exif" ohjelman toimiakseen:

Koodia: [Valitse]
sudo apt-get install exif
Itse "sdup2" on täällä:

http://www.homelinuxpc.com/download/sdup2 (http://www.homelinuxpc.com/download/sdup2)


Ajo-oikeus ja polun varteen kuten ylempänä kerrottu.

Edit2
Parantelin ja korjasin tätä hieman.  Koekäytön perusteella tuntuisi tekevän tehtävänsä aika hyvin. Se nimeää kuvat niiden ottopäivän mukaan (exif) ja videot tiedostopäiväyksen mukaan.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 02.03.14 - klo:13.29
chkver

Pikku skripti joka näyttää versiotietoja ja virtualisointialustan (VMware, QEMU). Esimerkkinäyttö kolmelta eri koneelta:

./chkver
Issue:            Red Hat Enterprise Linux Server release 6.5 (Santiago)
Bit width:        64 bits
Kernel:           2.6.32-431.el6.x86_64
Sound:            No ALSA found
Virtual:          VMware

./chkver
Issue:            Red Hat Enterprise Linux Server release 5.10 (Tikanga)
Bit width:        32 bits
Kernel:           2.6.18-371.3.1.el5
Sound:            No ALSA found
Virtual:          QEMU

./chkver
Issue:            Linux Mint 15 Olivia
Bit width:        32 bits
Kernel:           3.8.0-19-generic
Sound:            Advanced Linux Sound Architecture Driver Version k3.8.0-19-generic.
Virtual:          Physical machine

En ole kokeillut muilla alustoilla näyttääkö tämä mitään järkevää mutta jos kokeilet esim. XEN: ssä niin on toki hauska kuulla mitä tuo näyttää.

http://www.homelinuxpc.com/download/chkver (http://www.homelinuxpc.com/download/chkver)


PS: Ääniongelmatilanteessa se huomaa jos ALSA ei ole latautunut (jolloin esim. sudo modprobe snd_--jotain voi auttaa tilapäisesti).  Ylläolevissa esimerkeissä sitä ei tosin kuulunutkaan löytyä.

PPS:  Tässä skriptissä on puute.  Toiminta perustuu "dmesg" tulosteen seulontaan mutta jossain tilanteessa jolloin viestejä tulee paljon tuo osa jossa virtualisoinnin jäljet näkyy häipyykin niin että se ei enää näy ja skripti tulkitsee koneen fyysiseksi. On olemassa myös muita keinoja tunnistaa virtualisointi skriptissä mutta harmillista vain ne vaativat korotetut oikeudet (sudo). 
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 21.09.14 - klo:15.49
Tulinpa äsken kirjoittaneeksi tällaisen:
Koodia: [Valitse]
#!/bin/sh

KERNEL_ORG=www.kernel.org

kernels=$(wget -O - $KERNEL_ORG 2> /dev/null |\
    grep -A 2 -E '(mainline|stable|longterm|linux-next):' |\
    sed -re 's/<\/?\w+>//g'|tr -d ' \t' |tr '\n' '\t' |\
    sed -re 's/\t*--\t*/\n/g' )

echo -e "\033[1mtree\tversion\trelease date\033[0m\n$kernels" |\
    awk -F "\t" '{ printf("%-12s\t%-8s\t%-10s\n", $1, $2, $3) }'
Käyttäkää miten haluatte. Kätevä lisää tuohon vielä vipuset, joilla saa valittua että tarkastellaan vaikka vain mainline:n versiota. Tuo on nopeasti kokoon häkätty, joten siellä on pari sed:iä ja tr:ää, joita en jaksanut yhdistää. Melko varmasti pelkällä yhdellä sed:lläkin olisi selvinnyt. Toisaalta aiemmin tuossa oli montakin noita sed:n lauseita, siksi nuo e-vivut tuolla.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 21.09.14 - klo:18.59
Nuo \-merkit rivien lopuissa ovat varmaankin ohje kääntäjälle siitä, että asia jatkuu seuraavalla rivillä ? Onko niiden käyttämiseen mitään ohjetta ? Vai onko lause vain helpompi kasata kun käyttää niitä ?

Kun sudo on annettu on se jonkinaikaa voimassa. Joskus salasan voimassaolo olisi mukava tietää. Sen saakin tietää seuraavasti;
function OnkoSudoSalasanaAnnettu { sudo -n uptime 2>&1 | grep "load" | wc -l ; }; OnkoSudoSalasanaAnnettu;
joka tulostaa 1 jos salasana on voimassa ja 0 mikäli salasana ei ole voimassa.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 21.09.14 - klo:20.47
Joskus on kivempi lukea ja editoida lyhyempiä rivejä komento komennolta kuin yhtä piiiiitkää pötköä joka alkaa mennä ulos reunoista. Ei tuossa sen kummempaa, käyttösääntö on että sen kenoviivan jälkeen ei saa olla muuta kuin LF merkki eli rivin siirto.
Muita käyttöjä tuolle kenoviivalle on merkin suojaus eli "eskeippaus", toisin sanoen jos/kun merkillä on jokin erikoistoiminto jossain komennossa niin voidaan kertoa että nyt ei tarkoiteta sitä toimintoa vaan kyseistä merkkiä sellaisenaan. Tuokin käyttö näkyy tuolla Tominin koodissa. Lisäksi joitakin ennalta varattuja erikoismerkkejä voidaan käyttää kenoviiva-alkuisina lyhenteinä.

 
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 21.09.14 - klo:21.45
Nuo \-merkit rivien lopuissa ovat varmaankin ohje kääntäjälle siitä, että asia jatkuu seuraavalla rivillä ? Onko niiden käyttämiseen mitään ohjetta ? Vai onko lause vain helpompi kasata kun käyttää niitä ?

ajaaskel tosiaan kertoikin kaiken oleellisen tuosta merkinnästä. Itselläni on tapana rajata aina kaikki korkeintaan 80:een merkkiin (joskus lyhempäänkin tarpeen mukaan) ja siksi jaoin komennon tuolla tavalla useammalle riville. Mielestäni tuolla tavalla siitä sai erittäin luettavan ja jokaisella on oma tyylinsä noita kirjoittaa kun tällaisessa omassa skriptissä ei ole mitään valmiita tyylisääntöjä, joita pitäisi noudattaa.

Ainakin ohjelmointikielille on omat tyylisääntönsä, mutta en tiedä olisiko shellille jotain tyylisääntöjä.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 23.09.14 - klo:07.33
Olen yrittänyt saada järkeä "regular expression":iin. Joten kiitosta edellisestä toimivasta esimerkistä ja selvityksistä sillä ne selvittivät taas monta asiaa.


Tein skriptin: Tuhannen mittaus-arvon keskiarvon laskenta. Sensors-ohjelma on minulle aikapaljon mysteeri enkä tiedä kuinka sitä voi käyttää luotettavasti. Mutta itse asia onkin se, että tarvittaessa BASH toimii sangen vilkkaasti; esimerkiksi tässähän on kyse tuhannen mittauksen keskiarvosta - ja lisäksi tämän skriptin kuluttama aika menee pääasiassa siihen mittaukseen ja laskenta on nopea.

- keskihajonta ja mitä nyt haluaakin onnistuu awk:illa yhtä nopeasti. Awk on myös matematiikka-nero ja se osaa sinit, logaritmit ja vaikka mitkä - tosin tarkkuus on vain 22 numeroa.

Koodia: [Valitse]
#!/bin/bash
n=0
while true; do
  mittaus[$n]=$(sensors | grep "Core 0" | awk {'print $3'})
  [[ $n -gt 1000 ]] && echo ${mittaus[*]} | awk '{for(i=1;i<=NF;i++) t+=$i; print "ytimen lämpötila: ",t/1000; t=0}' && n=0
  let n++
done

**
Lueskelin LinuxJournalista "regular expressioneista" ja yksi esimerkki oli: ps aux | grep -E ’2[1-9]{1,3}’ . Siitä näkee suoraan että Ubuntussa tuo ei toimi tuommoisena ja sitä täytyy muuttaa. Toimiva käskyn muoto onkin: ps aux | grep -E 2[1-9]{1,3\} . Siis kaksi muutosta.
Onko niin, että linuxien BASH:it eroaa toisistaan noin paljon ? Miksi hommasta ei ole varoitettu missään ?
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 20.12.14 - klo:11.51
Kuka kolkuttelee koneeni UFW palomuuria... ?

Tulin uteliaaksi kun syslogissa näkyi sadoittain palomuurin koputtelijoita joka päivä ja kirjoitin pikku putken joka poimii syslogista rivit joilla on "BLOCK", seuloo sieltä vain SRC-osoitteen ja syöttää sen "host" -ohjelmalle jolloin saadaan lista domaineista siltä osin kun kyseinen ip löytyy dns: stä.

Koodia: [Valitse]
grep BLOCK /var/log/syslog | grep -o -E  'SRC=[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'| sed 's/SRC=//g' | xargs -i{} host {}205.179.59.59.in-addr.arpa domain name pointer 205.179.59.59.broad.np.fj.dynamic.163data.com.cn.
26.231.38.125.in-addr.arpa domain name pointer no-data.
100.111.126.209.in-addr.arpa domain name pointer static-ip-209-126-111-100.inaddr.ip-pool.com.
106.93.174.93.in-addr.arpa domain name pointer voip.katxoweb.com.
66.188.210.62.in-addr.arpa domain name pointer 62-210-188-66.rev.poneytelecom.eu.
Host 43.79.77.218.in-addr.arpa. not found: 3(NXDOMAIN)
Host 65.144.240.61.in-addr.arpa not found: 2(SERVFAIL)
.
.


Jos haluat vain ip-osoitteet niin tuo lyhenee:

Koodia: [Valitse]
grep BLOCK /var/log/syslog | grep -o -E  'SRC=[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'| sed 's/SRC=//g'
218.77.79.55
208.88.178.59
220.72.35.91
.
.


Niiden osoitteiden sijainnin joilla ei ole reverse-domainia voi tutkia "whois <ip_osoite>" kyselyllä:

Koodia: [Valitse]
whois 220.72.35.91
query : 220.72.35.91


# KOREAN(UTF8)

조회하신 IPv4주소는 한국인터넷진흥원으로부터 아래의 관리대행자에게 할당되었으며, 할당 정보는 다음과 같습니다.

[ 네트워크 할당 정보 ]
IPv4주소           : 220.72.0.0 - 220.91.255.255 (/12+/14)
서비스명           : KORNET
기관명             : 주식회사 케이티
기관고유번호       : ORG1600
주소               : 경기 성남시 분당구 정자동 KT본사 206
우편번호           : 463-711
할당일자           : 20020902

[ IPv4주소 책임자 정보 ]
이름               : IP주소관리자
전화번호           : +82-2-500-6630
전자우편           : kornet_ip@kt.com
.
.

Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: petteriIII - 21.12.14 - klo:13.43
Voisitko antaa pientä avitusta tästä hommasta tai kertoa mistä kannattaa hakea tietoa koska ainakin minä olen tässä asiassa aivan urpo: katsoin onko koputuksia ja mitään ei ollut. Laitoin cufw:n päälle ja otin heti uuden listauksen. Koreasta oli tullut jotakin, ehkä tosiaan vain koputus jonka kaltaisia on tullut ennenkin ja kilpistynyt palomuuriin.
- ja kymmenen minuuttia myöhemmin koputuksia oli jo toista tusinaa.
- en ylläpidä serveriä ja kaikkihan vakuuttaa ettei Ubuntussa tarvitse tehdä käyttäjä-koneelle mitään vaan jo perusasetus riittää estämään lähes kaiken ja käyttäjä-koneen täydellinen suojeleminen on melko mahdotonta jokatapauksessa. Ja kohta sanotaan että tuli jo housuihin, enää ei kannata tehdä mitään.
**
jo pari vuotta sitten aloin ihmetellä time-käskyn ilmoittamia aikoja. Kesti näin kauan saada minkäänlaista varmuutta, ja vieläkin asia on epäselvä sillä itse käyttöjärjestelmä sekoittaa. Mutta seuraavaa on selvinnyt:

1. time-käskyyn verrattuna tarkkuus paranee ainakin dekadilla mitattaessa ajat funktiolla: aika=$(date +%s.%N) , mutta toisaalta ilmoitettu aika kuvannee yksinomaan time-käskyn real-aikaa.
2. time-käskyllä on taipumus ilmoittaa liian suuria arvoja kun aika on pieni - esimerkiksi kun todellinen ajankulu on 2-2.3 ms niin time-käsky voi ilmoittaa jonkin ajan väliltä 4-7ms. Nopeiden funktioiden ajoittaminen menee siis ihan metsään ja keskiarvojenkin määritys jää epämääräiseksi.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 21.12.14 - klo:18.52
Lainaus
Voisitko antaa pientä avitusta tästä hommasta....

Jatkoin tuonne näistä palomuuriasioista:

http://forum.ubuntu-fi.org/index.php?topic=48144.0 (http://forum.ubuntu-fi.org/index.php?topic=48144.0)
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: ajaaskel - 29.12.14 - klo:23.44
Ne ketkä nauhoittelevat Areenasta voivat olla kiinnostuneita skriptistä joka muuntaa kansiollisen .flv -tiedostoja toiseen kansioon .mp4 -tiedostoiksi.  Kirjoittelin tuon skriptin kun tarvitsin itse.  Nuo .mp4 -muotoiset näyttävät toimivan paremmin soittimissa kun halutaan hyppiä nopeasti videon sisällä paikasta toiseen.   Latauksen ja ajo-oikeuksien antamisen jälkeen käyttö on yksinkertaista:

Koodia: [Valitse]
./flv_mp4   <kansio_josta_luetaan_flv>  <kansio_jonne_tehdään_muunnettu_mp4>
Nuo kansiot pitää olla olemassa.   Jos haluat kokeilla vain yhdellä tai muutamalla ensimmäisellä videolla niin voit antaa lukumäärärajan tuohon perään:

Koodia: [Valitse]
./flv_mp4   <kansio_josta_luetaan_flv>  <kansio_jonne_tehdään_muunnettu_mp4>   3
Tuo muuntaa vain 3 ensimmäistä ja luovuttaa sitten.
Vastaavasti voit myös määrätä että onnistuneen muunnoksen jälkeen se alkuperäinen .flv poistetaan:

Koodia: [Valitse]
./flv_mp4   <kansio_josta_luetaan_flv>  <kansio_jonne_tehdään_muunnettu_mp4>   3   --delete
Jos haluat tehdä kaikki kerralla ja poistaa alkuperäisen niin sitten vastaavasti:

Koodia: [Valitse]
./flv_mp4   <kansio_josta_luetaan_flv>  <kansio_jonne_tehdään_muunnettu_mp4>  --delete
Skripti kirjoittelee lokitiedostot onnistuneista ja epäonnistuneista tiedostoista erikseen.  Itselläni ainut syy epäonnistumiseen oli että alkuperäinen tiedosto oli katkennut, muunsin aika ison määrän noita.
Muunnokseen käytetään "avconv" tai "ffmpeg" ohjelmaa, jompikumpi tarvitaan mutta skripti tunnistaa kumpi on saatavilla ja käyttää sitä.
 

Täältä se löytyy:

http://www.homelinuxpc.com/download/flv_mp4 (http://www.homelinuxpc.com/download/flv_mp4)

Tuota voi hyödyntää myös runkona jos tarvitset jonkun muun muunnoksen kansiosta toiseen, säätää vain hieman tilanteen mukaan.
Otsikko: Vs: Pienet näppärät scriptit (bash, python, perl yms.)
Kirjoitti: Tomin - 12.01.17 - klo:23.08
Eli tämä scripti ottaa kuvan halutusta työpöydän osasta (scrot:illa), tallentaa sen Dropboxin kansioon ja sitten laittaa Public-linkin leikepöydälle (käyttää siihen xclip:ä). Sen voi sitten liittää minne haluaa. Idea on lisätä tämä scripti pikanäppäimeksi työpöytäympäristöön, jotta sitä voi helposti käyttää.

Joskus kauan sitten on tämäkin tullut tänne lähetettyä. Sen jälkeen tuota on jokusen kerran tullut uudistettua ja nyt tänään tuo toimii myös Wayland-istunnossa, kun käytetään GNOMEa. Muutokset eivät ole suuria, mutta scrot ei ole enää ainoa työkalu (välttämätöntä Wayland-istunnossa). Jos tuota käyttää Wayland-istunnossa, niin XWayland on vaadittu, koska xclip ei toimi muuten. Jos joku tietää miten GNOME Shellin (tai jonkun muunkin työpöydän tai komposoijan) Wayland-istunnossa voisi tehdä saman ilman XWaylandiä, niin kertokaa toki. X11:sta alla toimii suoraan, tosin saatat haluta korjata Dropboxin kuvahakemiston ja joissain tapauksissa ehkä myös Dropboxin komennon oikeaksi.

Lisäksi nykyinen versio ei enää käytä noita public-linkkejä tai Public-hakemistoa, koska niitä ei enää voi käyttää Dropboxin komentorivisovelluksella. Sen sijaan täytyy käyttää jaettuja linkkejä. Niillä ei saa suoraa linkkiä kuvaan, joten nyt linkit osoittavat Dropboxin sivulle, jonka keskellä kuvakaappaus on.

Skripti vanhoine versioineen löytyy tuolta: https://gist.github.com/Tomin1/fc772002b9eea66f6ae4