Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: honorguard 08 Května 2008, 01:28:39
-
Řekl jsem si že nebudu lakomý a podělím se o své skriptíky které jsem si za svou kariéru napsal a používám je skoro na všech netovkách. Kdo ví, třeba někdo přihodí i své skriptíky :).
Svátek.php zobrazí kdo má zrovna dnes svátek. Vytáhne si dnešní datum a poté pomoci case a poté normálně zobrazí svátek. Takže stačí použít příkaz include :). Jen bych ještě rád řekl že když jsem ho psal tak jsem měl na stole před sebou kalendář, všechno jsem opisoval růčo a ještě jsem neuměl psát všemi deseti :D.
http://www.edisk.cz/stahnout-soubor/08675/svatek.php_14.61KB.html (http://www.edisk.cz/stahnout-soubor/08675/svatek.php_14.61KB.html)
Návštěvnost.php je takové mé vlastní počítadlo návštěvnosti. Používá se přes cookies, které mají expiraci 10 minut. Návštěvnost ukládá do souborů které průběžně aktualizuje. Po té stačí jednoduchým skriptem zjistit číslo v souboru. Ale uznávám že toplist toho umí víc.
http://www.edisk.cz/stahnout-soubor/16087/navstevnost.php_2.33KB.html (http://www.edisk.cz/stahnout-soubor/16087/navstevnost.php_2.33KB.html)
Taky bych chtěl říct že jsou to moje úplně první 2 skripty (psal jsem je když mi bylo 15) a už jsem je nepřepisoval a prostě je používám. Kdyby jste třeba někdo měl nějaký nápad na vylepšení apod. tak řekněte. Jinak můžete přihazovat i svoje.
-
Paráda určitě děkujeme.... mám návštěvní knihu: http://new_book.vipersoftware.net/book.php?rid=1&page=1
a pak mám něco jako takovej soukromej downloadovací nástroj: http://xshare.vipersoftware.net/
časem až zpracuju do nějaké pohodlné instalace, tak také přihodím... teda pokud o to bude nějakej zájem :D Jinak není to objektově, tak mě pak za ten kód moc neukamenujte :D :D
-
He :) sem si chtel stahnout svatek a podivej co mi to udelalo s adresou ve firefoxu :D kdyz sem dal ale zpet tak se mi pak objevil dialog na save... maj tam naky mouchy asi.
(http://img265.imageshack.us/img265/1497/obrazovkaac9.th.png) (http://img265.imageshack.us/my.php?image=obrazovkaac9.png)
-
Nějaké PHP skripty, které používám:
http://www.edisk.cz/stahnout-soubor/17771/PHP_skripty.rar_316.92KB.html (http://www.edisk.cz/stahnout-soubor/17771/PHP_skripty.rar_316.92KB.html)
Třeba se budou někomu hodit ;)
-
Přemýšlel jsem že přenesu ještě nějaké skritptíky (mám je v souboru classes.php kde mám funkce a metody třeba na návštěvní knihu, řazení článků apod.), ale spíš radši poděkuji MARPovi. Těch skriptů tam máš fakt požehnaně :).
-
MP3TO64
Nevím jestli má někdo stejný problém jako já, ale můj telefon má malou kapacitu. Nejsou k němu ani sluchátka a tak když si chci do něj poslat nějaku písničku tak si ji převedu do 64bitrate. Vím že to není moc dobrá kvalita, ale na zvuku z repráčku mého telefonu se to vůbec nepozná. Nebaví mě věčné štelování gui a nastavování různých parametrů tak jsem ukecal kamaráda aby mi napsal bash skript. Dávám ho s jeho svolením sem. Jsou k němu potřeba programy MPLAYER a LAME:
http://www.edisk.cz/stahnout-soubor/39068/mp3to64.sh_478B.html (http://www.edisk.cz/stahnout-soubor/39068/mp3to64.sh_478B.html)
A ještě sem dám jeden svůj skriptík. Pro ostatní je asi úplně zbytečný, ale já programuju php atp. a tak když nainstauju systém, tak potřebuju apache, php, php+mysql atd. Nikdy si nepamatuju jak se ty balíky jmenují a vyhledávání v adeptu mě nebaví, takže jsem si napsal jednoduchý instalační skript. Není potřeba ho pouštět se sudo protože má sudo v sobě, takže se na heslo zeptá.
Instaluje balíky: apache2 php5-mysql libapache2-mod-php5 mysql-server.
http://www.edisk.cz/stahnout-soubor/38266/lamp_install.sh_260B.html
Ještě mě tak napadlo... je ve hvězdách kdy někdo z nás třeba smaže svůj edisk, nebo kdy uloz.to něco změní a přestanou fungovat odkazy... Nezaložíme například nějaký společný edisk účet kam budeme skripty dávat? Nebo nějakou doménu třeba na .ic.cz... nějaká jednoduchá stránka aby nám to nesmazali se vždycky najde...?
-
Nooo tak nějakou doménu se dá.... já už se pokoušel o http://vipersoftware.net/linux a nástroj na sdílení jsem si taky dělal (používá to kámoška) http://xshare.vipersoftware.net
-
No moc aktuální informace tam nejsou... Teda aspoń Debian Etch už má podle mě něco za sebou :D. Jestli by to šlo nějak aby lidi mohli přidávat tak by to bylo ok, ale chtělo by to nějak zakázat mazání, aby nepřišel rADo a naše skritpy nám nevymazal :D.
-
No moc aktuální informace tam nejsou... Teda aspoń Debian Etch už má podle mě něco za sebou :D. Jestli by to šlo nějak aby lidi mohli přidávat tak by to bylo ok, ale chtělo by to nějak zakázat mazání, aby nepřišel rADo a naše skritpy nám nevymazal :D.
No tak to je takovej pokus.... nikdo se nějak moc nechytnul, tak jsem to dál nerozvíjel... pokud by měl někdo zájem to udržovat ve spolupráci se mnou, tak proč ne.... nahrávat a mazat by mohli moderátoři samozřejmě....na ně by byl kontakt a ty by to třídili přes svoje mailíky.....nijak zvlášt bych to nekomplikoval.
Upravili by jsme logo... přidali sekce.... PHP/HTML + Java + shell + já nevím co ještě.... ;)
-
No tak proč ne... teď už chybí jen nějaký dobrovolník který se o to bude starat :).
-
:D :D tak o tom to přesně je :D
-
ukazu Vam par svych skriptiku, ktere denne pouzivam ::
#!/bin/bash
# let's find quickly what should be found
# from cmdline ..
# feel free to edit it ;)
# regards by ntz
if [ -z "$1" ]; then
echo "nothing to search?"
exit 1
fi
SEARCH_TARGET=$(echo $@ | sed 's/\ /+/g')
firefox -new-tab "google.com/search?&q=$SEARCH_TARGET" &
exit 0
****
#!/bin/bash
# opens suggested manpage as new tab in firefox..
#-------------------------------------------------
man $1 --html="firefox -new-tab" &>/dev/null &
exit 0;
****
#!/usr/bin/perl -w
#
# should hopefuly calculate given expression..
# in some cases need to enclose input string between double-quotes
#--------------------------------------------------------------
# print eval("@ARGV")."\n"; // ::one line solution..
# note, that using 'eval' function is not so safe, because
# 'eval' function evaluates given parameter as a expression..
# so e.g. parameter "system('ls -la')" returns output of same
# command, like given to shell ..
# regards by ntz
use strict;
sub CALCUL_IT {
my $PAYBACK = eval("@_");
print "$PAYBACK\n";
}
&CALCUL_IT(@ARGV);
exit 0;
-
Moc pěkný, sice nevim na co je ten třetí, ale jinak ty první dva jsou hustý... k tomu nedávno ten návod na síťování... poslední dobou exceluješ :D.
-
ten treti je pouha perlova kalkulacka ::
~> calc.pl "8 * (2 ** 6) / 100"
5.12
ps. ;) diky, navod o sitovani je starsi a bo vic to nejhodnotnejsi v nem jsou pouze odkazy na dokumentaci jinde .. moje invence temer nulova..
zdravi ntz
-
Další PHP skripty zde: http://www.jaknaweb.com/scripty/php-scripty/ruzne
-
Díky Marpíku!!! Ty skripty jsou fakt super... hlavně jich je strašně moc hodně užitečnejch ;).
-
To víš...strýček Google > php skripty ke stažení nebo jen php skripty ;)
-
Nahodna "status message" pri kazdem spusteni Pidgina. Muj prvni plugin/perl skript... budte schovivavi, bugy hlaste na blogu..kuju
http://blog.starenka.net/programming/2008-05-05-random-status-message-plugin-for-pidgin
-
offline validace HTML
Sice nic moc, ale já jsem s tím plně spokojen. Snad to někomu pomůže. Není problém rozšířit skript např. o:
- rekurzivní procházení podadresářů (ale na mojich pár stránek to nepotřebuju)
- jiné soubory než php (mám jedině php)
tak jsi s tim klidně někdo pohrajte :)
Doinstalovat:
sudo apt-get install wdg-html-validator
#!/bin/bash
VYSTUP="vysledekValidace.txt";
rm $VYSTUP;
for I in *.php;
do
echo "--------------------------------------------------------------------------------" >> $VYSTUP;
echo "Zpracovavam soubor" $I":" >> $VYSTUP;
validate http://localhost/$I >> $VYSTUP;
echo "Soubor" $I "zpracovan"
echo "--------------------------------------------------------------------------------" >> $VYSTUP;
done
-
Otevirani a zavirani CDROMky jednim cvaknutim mysi (napr na ikonku v panelu) pomoci scriptu :D
viz tento clanek na mem blogu (http://lukasklika.cz/linux/jak-otevrit-a-zavrit-cdromku-pomoci-scriptu-v-linuxu/).
#!/bin/bash
touch /home/$USER/cdrominfo
cdromvar=$(cat /home/$USER/cdrominfo)
if [ "$cdromvar" == "1" ]; then
eject -t
cdromvar="0";
else
eject
cdromvar="1";
fi
cat /dev/null > /home/$USER/cdrominfo
echo $cdromvar > /home/$USER/cdrominfo
exit 0
-
Blbej 'skriptik', kt. ukaze teplotu cpu a disku. Pro pridani disku pridat dalsi sdax (uricte by to slo i elegantneji, ale mam jen jeden :) )
#!/bin/bash
echo -e "$(sensors | grep Core)\n/dev/sda: +$(sudo smartctl -a /dev/sda | grep Temperature_Celsius | cut -d" " -f37).0°C ($(sudo fdisk -l | grep "Disk /dev/sda" | cut -d" " -f3)GB)"
vypise neco ve stylu:
starenka@miniwanka:~$ temperatures
Core 0: +50.0°C (crit = +85.0°C)
Core 1: +52.0°C (crit = +85.0°C)
/dev/sda: +39.0°C (120.0GB)
pokud nemate, je potreba baliky: smartmontools a lm-sensors
-posleze pustit sensors-detect a nejaky ze senzeru (zrejme jen cpu) zavest to jadra....
-
Blbej 'skriptik', kt. ukaze teplotu cpu a disku. Pro pridani disku pridat dalsi sdax (uricte by to slo i elegantneji, ale mam jen jeden :) )
..
<< no, vzhledem k tomu, ze na nej potrebujes rootovsky prava a jeste pres sudo tak skutecne blbej je ;)
-
:)
rad se necham poucit jak na smartcl bez roota... 8)
-
skriptík pro uživatele e17.. pokud se nastaví, aby se spouštěl po startu Enlightenmentu, tak vždy při startu extrahuje edje soubor s wallpaperem, vytahá z něj proměnné(jestli se má obrázek roztáhnout, vycentrovat atd.) a aplikuje obrázek z edje souboru s použitím těch parametrů jako root pixmapu pro falešnou průhlednost. Pokud jej dáte do /usr/bin a změníte wallpaper, vždy bude stačit zadat do terminálu "názevscriptu" pro update.
NEPODPORUJE ANIMOVANÉ WALLPAPERY, THEME WALLPAPERY A STAŽENÉ EDJE SOUBORY Z NETU! POUZE PRO UŽIVATELSKÉ WALLPAPERY.
Další verze přidá možná podporu pro ty výchozí/stažené. Přidat podporu animovaných nebo theme wallpaperů je nemožné.
Ve skriptu je podpora překladů. Script je přeložen do češtiny a angličtiny s automatickou detekcí vašeho jazyka.
#!/bin/bash
# EasyLinux fake transparency script
# Licensed under GPL.
# Created by quaker.
# checks
# Translations
CS_TEXT() {
PACKAGE_MISSING="chybi."
PACKAGE_INSTALLED="je nainstalovan."
DIRCREATE="Vytvarim adresar.."
DIREXIST="Adresar existuje, preskakuji."
DIRNOTEXIST="Adresar neexistuje, vytvarim."
COPYING="Kopiruji soubor do faketrans adresare."
DECC="Rozbaluji.."
SETUP="Aplikuji zmeny."
HELP="Pouziti:
./faketrans - Aplikuje aktualni obrazek pozadi Enlightenmentu jako root pixmap
Parametry scriptu:
--force-scale|-s : Nepouzije konfiguraci .edj souboru a aplikuje obrazek roztazeny.
--force-fit|-f : Nepouzije konfiguraci .edj souboru a aplikuje obrazek jako dlazdice.
--force-center|-c : Nepouzije konfiguraci .edj souboru a vycentruje obrazek.
--help|-h : Vypise tuto zpravu.
"
INVALID="Spatny argument."
FORCE_SCALE="Pouzit parametr --force-scale nebo -s."
FORCE_FIT="Pouzit parametr --force-fit nebo -f."
FORCE_CENTER="Pouzit parametr --force-center nebo -c."
WITHOUT="Nezadan parametr, aplikuji z konfigurace."
}
EN_TEXT() {
PACKAGE_MISSING="is missing!"
PACKAGE_INSTALLED="is installed."
DIRCREATE="Creating directory.."
DIREXIST="Directory exists, skipping."
DIRNOTEXIST="Directory doesn't exist, creating."
COPYING="Copying file to the faketrans directory."
DECC="Decompressing.."
SETUP="Applying changes."
HELP="Using:
./faketrans - Applies Enlightenment background as a root pixmap
Script parameters:
--force-scale|-s : Doesn't use .edj configuration and scale the image.
--force-fit|-f : Doesn't use .edj configuration and tile the image.
--force-center|-c : Doesn't use .edj configuration and center the image.
--help|-h : Prints this message.
"
INVALID="Bad argument."
FORCE_SCALE="Used parameter --force-scale or -s."
FORCE_FIT="Used parameter --force-fit or -f."
FORCE_CENTER="Used parameter --force-center or -c."
WITHOUT="You didn't use a parameter, applying from .edj configuration."
}
# Check what language you are using
# If you want for example sk language, write
#if [ "$(echo $LANG | sed 's/_.*$//')" = "cs" ]; then
# CS_TEXT;
#elif [ "$(echo $LANG | sed 's/_.*$//')" = "sk" ]; then
# SK_TEXT;
# else
# EN_TEXT;
#fi
if [ "$(echo $LANG | sed 's/_.*$//')" = "cs" ]; then
CS_TEXT; else
EN_TEXT;
fi
for check in sed Esetroot edje_decc tee enlightenment_remote; do
if [ -z "$(which $check)" ]; then
echo "$check $PACKAGE_MISSING"
exit 1
else
echo "$check $PACKAGE_INSTALLED"
fi
done
# Variables.
faketrans_dir="$HOME/.faketrans"
log_file="/tmp/faketrans.log"
# Functions
function get_wallpaper()
{
where=$(/usr/bin/enlightenment_remote -default-bg-get|grep "REPLY: ")
get=$(echo ${where:8}|sed 's/"//')
echo $get|tee $log_file
echo "$DIRCREATE"|tee -a $log_file
if [ -d "$faketrans_dir" ]; then
echo "$DIREXIST"|tee -a $log_file
rm -rf $faketrans_dir/*
else
echo "$DIRNOTEXIST"|tee -a $log_file
mkdir "$faketrans_dir"
fi
echo "$COPYING"|tee -a $log_file
cp $get $faketrans_dir
}
function decc_file()
{
decc_file=$(ls $faketrans_dir)
cd "$faketrans_dir"
echo "$DECC"|tee -a $log_file
/usr/bin/edje_decc $decc_file|tee -a $log_file
cd *
}
function set_up()
{
echo "$SETUP"|tee -a $log_file
getedc=$(cat $(ls|grep edc)|grep "image {")
name=$(echo ${getedc:17}|sed 's/"; }//')
echo $name|tee -a $log_file
getstyle=$(cat $(ls|grep edc)|grep "data {")
style=$(echo ${getstyle:22}|sed 's/"; }//')
echo $style|tee -a $log_file
}
function print_help()
{
echo "$HELP"
echo "$VERSION"
}
function print_bad()
{
echo "$INVALID"
}
# Body
if [ "$#" = "0" ]; then
echo "$WITHOUT"
get_wallpaper
decc_file
set_up
case $style in
0) Esetroot -scale "$name"|tee -a $log_file
;;
1) Esetroot -fit "$name"|tee -a $log_file
;;
2) Esetroot -center "$name"|tee -a $log_file
esac
elif [ "$#" = "1" ]; then
case $1 in
--force-scale|-s)
echo "$FORCE_SCALE"
get_wallpaper
decc_file
set_up
Esetroot -scale "$name"|tee -a $log_file
;;
--force-center|-c)
echo "$FORCE_CENTER"
get_wallpaper
decc_file
set_up
Esetroot -center "$name"|tee -a $log_file
;;
--force-fit|-f)
echo "$FORCE_FIT"
get_wallpaper
decc_file
set_up
Esetroot -fit "$name"|tee -a $log_file
;;
--help|-h) print_help
;;
*)
print_bad
print_help
esac
else
print_bad
print_help
fi
exit 0
-
Tenhle paskvil jsem si napsal na třídění fotek z dovolený. Není to nic moc, ale možná by se to někomu mohlo hodit.
#!/bin/bash
#Rozdeli soubory s urcitou priponou ve slozce dle data vytvoreni
echo -n "Přípona souborů ke zpracování:"
read koncovka
ls -l *.$koncovka | awk '{print $6}' | sort | while read datum
do
mkdir -p ../rozdelene
mkdir -p ../rozdelene/$datum
done
echo "Složky vytvořené, začínám třídit"
for soubor in *.$koncovka; do
datum_vyt=$(ls -l $soubor | awk '{print $6}')
cp $soubor ../rozdelene/$datum_vyt/
done
-
Jsem bordelář, proto jsem si napsal scriptík, který mi sám uklidí plochu :)
Ale pozor - pokud ho uložíte na plochu, uklidí i sám sebe :D
Cílový adresář (proměnná slozka) si upravte podle své potřeby.
#!/bin/bash
slozka=/media/mojesoubory/uklid/$(date +%F)
mkdir $slozka
for i in /home/$USER/Plocha/*; do
mv $i $slozka;
done
-
Momentálně, když jsem tvořil asi 3 aplikace na server, tak jsem potřeboval docela třídu na řetězce... no vím o dobrý QString jenže jsem se chtěl vyhnout nutnosti dalších knihoven, tak jsem napsal něco vlastního... není to žádnej zázrak, ale to co jsem potřeboval to splnilo. Bude-li mít někdo zájem podělím se s ním o zdrojové kódy. Jsou jak pro KDevelop, make z konzole nebo Visual Studio. ;)
-
Hromada skriptů je na: http://www.linuxsoft.cz/
-
Taky přispěji se svou troškou do mlýna.
Používám následující skript pro vytvoření mp3 z flashového videa z youtube. Výhoda mého skriptu je, že lze zadat jednotlivé adresy do souboru, ze kterého se pak jednotlivé adresy načtou, flashová videa se stáhnou, převedou na mp3, automaticky se pojmenují tak, jak jsou na youtube pojmenovaná (z html kódu obsah značky <title>) a stažený flash soubor je hned smazán. Skriptu můžete jako argument zadat buď externí soubor s adresami, nebo rovnou jednotlivé adresy, ze kterých chcete stahovat. Pokud skript nemá žádný argument, předpokládá se, že je v místě uložení skriptu soubor pojmenovaný url.txt se seznamem url adres.
Pro správnou funkčnost je třeba mít nainstalovaný balíčky youtube-dl a mplayer. Možná ještě něco, ale to už si nepamatuji.
#!/bin/bash
if [ $# = 0 ]; then
INPUT="url.txt"
echo \#\#\# - Url z defaultniho souboru \"url.txt\".
elif [ -f $1 ]; then
INPUT=$1
echo \#\#\# - Url z externiho souboru \"$1\".
fi
NOERROR=1
if [ ${#INPUT} -gt 0 ]; then
NOERROR=0
while read INPUTLINE
do
URL="$(echo $INPUTLINE)"
#stazeni html pro zjisteni nazvu videa
wget $URL
FILE=$(ls watch*)
#ulozeni nazvu videa z tagu <title>
FILENAME=$(cat $FILE | grep "<title>" | sed 's#<title>YouTube - ##;s#</title>##')
#oriznuti o pripadne mezery na zacatku nazvu + koncovka
FILENAME="$(echo $FILENAME.mp3)"
rm $FILE
#stazeni flashoveho videa
youtube-dl $URL
FLASH=`ls *.flv`
# pro prevod videa do mpg
# ffmpeg -i $FILE "$video_FILE.mpg"
mplayer -dumpaudio $FLASH -dumpfile "$FILENAME"
rm $FLASH
done < $INPUT
#argument by mel byt url adresa
else
for ARG in $@
do
START=${ARG:0:4}
if [ $START = http ]; then
#stazeni html pro zjisteni nazvu videa
wget $ARG
FILE=$(ls watch*)
#ulozeni nazvu videa z tagu <title>
FILENAME=$(cat $FILE | grep "<title>" | sed 's#<title>YouTube - ##;s#</title>##')
#oriznuti o pripadne mezery na zacatku nazvu + koncovka
FILENAME="$(echo $FILENAME.mp3)"
rm $FILE
#stazeni flashoveho videa
youtube-dl $URL
FLASH=`ls *.flv`
# pro prevod videa do mpg
# ffmpeg -i $FILE "$video_FILE.mpg"
mplayer -dumpaudio $FLASH -dumpfile "$FILENAME"
rm $FLASH
#nastaveni priznaku
NOERROR=0
else
echo \#\#\# - Url adresa musi zacinat \"http\".
fi
done
fi
if [ $NOERROR = 1 ]; then
echo \#\#\# ERR - Zadane argumety nebyly soubory ani url adresou.
fi
-
Toto je skript na čištění systému od starých a (většinou) zbytečných souborů.
Maže staré soubory z koše, staré náhledy z Nautilu a cache apt-getu.
Gró tohoto skriptu nepochází z mého pera, ale z http://ubuntuforums.org/showthread.php?t=698649&highlight=trash od uživatele tweedledee.
Další podrobnosti viz poznámky přímo ve skriptu.
Upozornění: skript používá příkaz rm, který může potencionálně vymazat důležité soubory. Pokud si chcete skript vyzkoušet nejdříve nanečisto, zálohujte ho, a pak nahraďte ve svém oblíbeném editoru řetězce "rm -v", "rm -fv" a "rm -rfv" řetězcem "echo". Tím se zamýšlené soubory k výmazu pouze zobrazí (v Terminálu), a nevymažou. Pokud jste si omylem vymazali nějaké důležité soubory, nadávky pošlete do /dev/null a náměty ke zlepšení sem.
Jakékoliv (konstruktivní) připomínky a náměty ke skriptu vítám : )
#! /bin/bash
#-----------------------------------------------------------
PromazNahledy(){
#Starší náhledy než x dnů budou vymazány
NahledyLimitDnu=120
echo "Mažu náhledy ..................................."
echo
find ~/.thumbnails -iname '*.png' -atime +$NahledyLimitDnu -type f -exec rm -v '{}' \;
}
#----------------------------------------------------------
VymazCacheAptu(){
echo "Mažu cache apt-getu ------------------------------"
echo
sudo apt-get clean
sudo -k
}
#---------------------------------------------------------
PromazKos(){
echo "Mažu koš ..................................."
echo
# Promaže koš, v závislosti na zadaných kritériích
# Složky jsou brány jako celek
# Používá ctime (soubor změněn/přemístěn) při kontrole stáří souboru
# Nikdy nemaže soubory mladší 1 dne
# Nemaže soubory vlastněné jiným vlastníkem než tím, který tento skript spouští
# Všechny údaje by měly být celá nezáporná čísla
# Cesta ke koši: zkontrolujte, jestli souhlasí
# Freedesktop dejte 0 pokud systém neukládá info (adresář ../Trash/info)
# tzn. má všechny soubory v adresáři Trash, ne v podadresářích "files" a "info"
# jinak 1 (u novějších Gnome)
CestaKeKosi=~/.local/share/Trash
Freedesktop=1
# Chcete smazat i odpovídající soubory v info (viz Freedesktop výše)?
# 1=ano. Musíte mít ale taky nastaveno Freedesktop=1.
InfoPryc=1
# Limity pro soubory ve dnech
# Definice velikosti souborů viz níže
DnuSoubory=90
DnuSouboryVelke=30
DnuSouboryMamut=7
DnuAdresare=90
DnuAdresareVelke=45
DnuAdresareMamut=10
# Spodní hranice velikosti souborů a adresářů v MB
VlkstVelkehoSouboru=10
VlkstMamutSoub=100
VlkstVelkehoAdr=15
VlkstMamutAdr=150
# Celkový max. limit velikosti koše v MB. Mazat se začne až po jeho překročení.
# Nebo možno nastavit MazatITak - viz níže
MaxVlkst=2000
# 1, pokud chcete promazat koš i v případě, že je jeho velikost menší než MaxVlkst
MazatITak=1
# O kolik dnů/MB je možné slevit směrem dolů, pokud je potřeba se dostat pod MaxVlkst
DnuSouboryDolu=1
DnuSouboryVelkeDolu=1
DnuSouboryMamutDolu=1
DnuAdresareDolu=1
DnuAdresareVelkeDolu=1
DnuAdresareMamutDolu=1
VlkstVelkehoSouboruDolu=1
VlkstMamutSoubDolu=2
VlkstVelkehoAdrDolu=1
VlkstMamutAdrDolu=3
# Minimální velikost, pod kterou se nejde
# Nataveno na 3 např. nesmaže soubory mladší než 3 dny
DnuSouboryMin=1
DnuSouboryVelkeMin=1
DnuSouboryMamutMin=1
DnuAdresareMin=1
DnuAdresareVelkeMin=1
DnuAdresareMamutMin=1
VlkstVelkehoSouboruMin=1
VlkstMamutSoubMin=1
VlkstVelkehoAdrMin=1
VlkstMamutAdrMin=1
#-------------------------------------------------------------
VycistitKos() {
# mazeme soubory
# normální
TP="$1"
find "$TP" -maxdepth 1 -type f -ctime +$DnuSoubory -execdir rm -fv '{}' +
# velké
find "$TP" -maxdepth 1 -type f -ctime +$DnuSouboryVelke -size +${VlkstVelkehoSouboru}M -execdir rm -fv '{}' +
# mamutí
find "$TP" -maxdepth 1 -type f -ctime +$DnuSouboryMamut -size +${VlkstMamutSoub}M -execdir rm -fv '{}' +
# složky
# normální
find "$TP" -maxdepth 1 -type d -ctime +$DnuAdresare -execdir rm -rfv '{}' +
# velké
for i in `find "$TP" -maxdepth 1 -type d -ctime +$DnuAdresareVelke`
do
if [ `du -sm "$i"|awk '{print $1}'` -gt $VlkstVelkehoAdr ]
then
rm -rfv "$i"
fi
done
# mamutí
for i in `find "$TP" -maxdepth 1 -type d -ctime +$DnuAdresareMamut`
do
if [ `du -sm "$i"|awk '{print $1}'` -gt $VlkstMamutAdr ]
then
rm -rfv "$i"
fi
done
}
PromazatInfo() {
# promaž "undelete" informace
find "$CestaKeKosi/info" -maxdepth 1 -type f -execdir ls '{}' + |sed -e 's/.\///' |sed -e 's/.trashinfo$//' > /tmp/VycistitKos_trashinfo.list
while read line
do
ls "$CestaKeKosi/files/${line}" > /dev/null 2>&1
if [ $? -ne 0 ]
then
rm -rfv "$CestaKeKosi/info/${line}.trashinfo"
fi
done < /tmp/VycistitKos_trashinfo.list
rm -rfv /tmp/VycistitKos_trashinfo.list
}
Vetsi() {
if [ $1 -gt $2 ]
then
return $1
else
return $2
fi
}
export IFS=$'\n'
KontrolniSoucet=$(($DnuSouboryDolu + $DnuSouboryVelkeDolu + $DnuSouboryMamutDolu + $DnuAdresareDolu + $DnuAdresareVelkeDolu + $DnuAdresareMamutDolu))
# vymazat soubory, pokud je nastaveno mazání i při nedosažení max. limitu pro koš
if [ $MazatITak -eq 1 ]
then
if [ $Freedesktop -eq 1 ]
then
VycistitKos "$CestaKeKosi/files"
else
VycistitKos "$CestaKeKosi"
fi
fi
# smyčka dokud se nedostaneme pod maximum
while [ `du -sm $CestaKeKosi|awk '{print $1}'` -gt $MaxVlkst ]
do
if [ $Freedesktop -eq 1 ]
then
VycistitKos "$CestaKeKosi/files"
else
VycistitKos "$CestaKeKosi"
fi
if [ $(($DnuSoubory + $DnuSouboryVelke + $DnuSouboryMamut + $DnuAdresare + $DnuAdresareVelke + $DnuAdresareMamut)) -eq $KontrolniSoucet ]
then
# míň už to nejde
break
fi
# snížit o dané dny/MB, ale ne pod dané minimum
Vetsi $((DnuSoubory - $DnuSouboryDolu)) $DnuSouboryMin
DnuSoubory=$?
Vetsi $((DnuSouboryVelke - $DnuSouboryVelkeDolu)) $DnuSouboryVelkeMin
DnuSouboryVelke=$?
Vetsi $((VlkstVelkehoSouboru - $VlkstVelkehoSouboruDolu)) $VlkstVelkehoSouboruMin
VlkstVelkehoSouboru=$?
Vetsi $((DnuSouboryMamut - $DnuSouboryMamutDolu)) $DnuSouboryMamutMin
DnuSouboryMamut=$?
Vetsi $((VlkstMamutSoub - $VlkstMamutSoubDolu)) $VlkstMamutSoubMin
VlkstMamutSoub=$?
Vetsi $((DnuAdresare - $DnuAdresareDolu)) $DnuAdresareMin
DnuAdresare=$?
Vetsi $((DnuAdresareVelke - $DnuAdresareVelkeDolu)) $DnuAdresareVelkeMin
DnuAdresareVelke=$?
Vetsi $((VlkstVelkehoAdr - $VlkstVelkehoAdrDolu)) $VlkstVelkehoAdrMin
VlkstVelkehoAdr=$?
Vetsi $((DnuAdresareMamut - $DnuAdresareMamutDolu)) $DnuAdresareMamutMin
DnuAdresareMamut=$?
Vetsi $((VlkstMamutAdr - $VlkstMamutAdrDolu)) $VlkstMamutAdrMin
VlkstMamutAdr=$?
done
# promazat info, pokud nastaveno k promazání
if [ $Freedesktop -eq 1 ]
then
if [ $InfoPryc -eq 1 ]
then
PromazatInfo
fi
fi
}
PromazNahledy
PromazKos
VymazCacheAptu
exit 0
-
Tohle je jednoduchej script v pythonu kterej jsem si napsal na ukladani rozlicnejch scriptu. Je rychlej a jednoduchej, data uklada do souboru .SCRIPTBOOK v domovskem adresari. V pripade ze je vyplneno pole URL po kliknuti na nej se zadana adresa otevira ve firefoxu. V pripade ze se nekomu chce, muze k tomu napsat moznost vyhledavani.
(http://top100cyprus.com/scriptbook.png)
SPCRIPTBOOK.py
#! /usr/bin/env python
import pickle, os,pygtk,webbrowser,sys
pygtk.require("2.0")
import gtk
class scriptbooks:
def __init__(self,loaded_scriptbook_list = None):
if not loaded_scriptbook_list:self.scriptbook_list = {}
else:
self.scriptbook_list = loaded_scriptbook_list["SPCRIPTBOOK"]
if loaded_scriptbook_list["SETTINGS"]:
self.SETTINGS = {}
self.SETTINGS["browser"] = loaded_scriptbook_list["SETTINGS"]["browser"]
else:
self.SETTINGS = {"browser":"firefox"}
print self.SETTINGS["browser"]
self.SPCRIPTBOOK_FILE = {"SETTINGS":self.SETTINGS,
"SPCRIPTBOOK":self.scriptbook_list}
def show_scriptbook_list(self):
for key, item in self.scriptbook_list.iteritems():
print key
print "\t",item
def get_scriptbook(self,name):
return self.scriptbook_list[name]
def get_scriptbooks(self):
keys_list = self.scriptbook_list.keys()
keys_list.sort()
print keys_list
return keys_list
def add_new_scriptbook(self,new_scriptbook):
self.scriptbook_list[new_scriptbook["name"]] = new_scriptbook
self.save_scriptbook_list()
def remove_scriptbook(self,scriptbook):
if scriptbook in self.scriptbook_list.keys():
self.scriptbook_list.pop(scriptbook)
self.save_scriptbook_list()
def modify_scriptbook(self,scriptbook,field,data):
if field == "name":
self.scriptbook_list[data] = self.scriptbook_list.pop(scriptbook)
else:
self.scriptbook_list[scriptbook][field] = data
self.save_scriptbook_list()
def save_scriptbook_list(self):
print"saving scriptbook_list..."
HOME = self.get_home_dir()
try:
FILE = open(os.path.join( HOME,".SPCRIPTBOOK"),"w")
pickle.dump(self.SPCRIPTBOOK_FILE,FILE)
FILE.close()
except:
print"Warning!Could not write:",os.path.join(HOME,".SPCRIPTBOOK")
def get_home_dir(self):
try:
HOME = os.getenv("HOME")
except:
HOME = "./"
print "Home dir is:",HOME
return HOME
def load_scriptbook_list():
try:
FILE = open(os.path.join(os.getenv("HOME") ,".SPCRIPTBOOK"),"r")
scriptbooks = pickle.load(FILE)
FILE.close()
return scriptbooks
except:
return {"SETTINGS":{"browser":"firefox"},"SPCRIPTBOOK":{}}
def dump(scriptbooks):
'''writes scriptbooks to file '-w filename' or /tmp/SPCRIPTBOOK.txt if there is no filename'''
names = scriptbooks.keys()
names.sort()
if len(sys.argv) == 3:
filename = sys.argv[2]
else:
filename = "/tmp/SPCRIPTBOOK.txt"
print "dumping to :",filename
FILE = open(filename,"w")
for item in names:
print
print item
FILE.write("\n\n"+item)
for a , b in scriptbooks[item].iteritems():
if a =="name":
pass
else:
if a =="code":
print a,":\n"
FILE.write("\t"+a+" :\n\n")
print b,"\n"
FILE.write(b+"\n")
else:
print a,"\t\t:\t",b
FILE.write("|\t"+a+" \t\t| "+b)
FILE.write("\n---------------------------------------------------------\n")
FILE.close()
def print_help():
print
print "SPCRIPTBOOK.py"
print
print "Usage:\tSPCRIPTBOOK.py [-w [filename]]"
print
print "if no filename specified it will be saved in '/tmp/SPCRIPTBOOK.txt'"
print
print "'SPCRIPTBOOK.py -h' print this message."
print
class MainWindow:
def __init__(self,data = None):
self.show_scriptbook_window = False
self.remove_scriptbook_window = False
self.modify_window = False
self.yes_no_window = False
self.SPCRIPTBOOK = scriptbooks(load_scriptbook_list())
if len(sys.argv) > 1 and sys.argv[1] == "-w":
dump(self.SPCRIPTBOOK.scriptbook_list)
self.temp_scriptbook = {"name":"",
"url":"",
"code":"",
"extra":""}
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_position(gtk.WIN_POS_CENTER)
self.window.set_size_request(800,600)
self.window.set_title("SPCRIPTBOOK")
self.window.connect("delete_event",self.delete_event)
vbox = gtk.VBox()
self.window.add(vbox)
scrolled_area = gtk.ScrolledWindow()
scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
vbox.pack_start(scrolled_area,True)
box = gtk.VBox()
scrolled_area.add_with_viewport(box)
for item in self.SPCRIPTBOOK.get_scriptbooks():
button = gtk.Button(item)
button.connect("clicked",self.show_scriptbook,item)
box.pack_start(button,False,False)
button.show()
box.show()
hbox = gtk.HBox(homogeneous=True)
button = gtk.Button("Add New")
button.connect("clicked",lambda x:self.modify_scriptbook())
hbox.pack_start(button)
button.show()
button = gtk.Button("Remove")
button.connect("clicked",self.remove_scriptbook_win)
hbox.pack_start(button)
button.show()
button = gtk.Button("Close")
button.connect("clicked",self.delete_event,data)
hbox.pack_start(button,expand = True,padding = 5)
button.show()
vbox.pack_start(hbox,False,False)
hbox.show()
vbox.show()
scrolled_area.show()
self.window.show()
def show_scriptbook(self,widget,scriptbook):
print"showing scriptbook...",scriptbook
self.show_scriptbook_window = gtk.Window()
self.show_scriptbook_window.connect("delete_event",self.delete_event,"show window")
self.show_scriptbook_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.show_scriptbook_window.set_position(gtk.WIN_POS_CENTER)
self.show_scriptbook_window.set_size_request(600,500)
self.show_scriptbook_window.set_title("SPCRIPTBOOK")
vbox = gtk.VBox()
self.show_scriptbook_window.add(vbox)
scrolled_area = gtk.ScrolledWindow()
scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
vbox.pack_start(scrolled_area,True)
box = gtk.VBox()
scrolled_area.add_with_viewport(box)
CONT = self.SPCRIPTBOOK.get_scriptbook(scriptbook)
frame = gtk.Frame("Name")
label = gtk.Label(CONT["name"])
frame.add(label)
frame.show()
label.show()
box.pack_start(frame)
frame = gtk.Frame("Url")
event_box = gtk.EventBox()
frame.add(event_box)
label = gtk.Label(CONT["url"])
event_box.add(label)
event_box.show()
event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK)
event_box.connect("button_press_event", lambda x,y:self.open_url(CONT["url"]))
label.modify_fg(gtk.STATE_NORMAL,event_box.get_colormap().alloc_color("blue"))
frame.show()
label.show()
box.pack_start(frame)
frame = gtk.Frame("Code")
label = gtk.Label(CONT["code"])
label.set_selectable(True)
scrolled_area2 = gtk.ScrolledWindow()
scrolled_area2.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
scrolled_area2.add_with_viewport(label)
scrolled_area2.set_size_request(500,280)
frame.add(scrolled_area2)
scrolled_area2.show()
frame.show()
label.show()
box.pack_start(frame)
frame = gtk.Frame("Misc")
label = gtk.Label(CONT["extra"])
label.set_selectable(True)
frame.add(label)
frame.show()
label.show()
box.pack_start(frame)
modify = gtk.Button("Modify")
modify.connect("clicked",lambda x:self.modify_scriptbook(CONT))
vbox.pack_start(modify,False,False)
modify.show()
button = gtk.Button("Close")
button.connect("clicked",self.delete_event2,"show window2")
vbox.pack_start(button,False,False)
button.show()
vbox.show()
scrolled_area.show()
box.show()
self.show_scriptbook_window.show()
self.window.quit()
def temp_scriptbook_modify(self,key,item):
self.temp_scriptbook[key] = item
def modify_scriptbook(self,scriptbook = None):
if self.show_scriptbook_window:self.show_scriptbook_window.destroy()
if scriptbook:
for key, item in scriptbook.iteritems():
if item != "":
self.temp_scriptbook_modify(key,item)
self.modify_window = gtk.Window()
if scriptbook:title = "Modify scriptbook"
else: title = "Add new scriptbook"
self.modify_window.set_title(title)
self.modify_window.set_position(gtk.WIN_POS_CENTER)
self.modify_window.set_size_request(600,500)
vbox = gtk.VBox()
self.modify_window.add(vbox)
scrolled_area = gtk.ScrolledWindow()
scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
vbox.pack_start(scrolled_area,True)
box = gtk.VBox()
scrolled_area.add_with_viewport(box)
frame = gtk.Frame("Name")
name_entry = gtk.Entry()
if scriptbook:name_entry.set_text(scriptbook["name"])
frame.add(name_entry)
frame.show()
name_entry.show()
box.pack_start(frame,False,False)
frame = gtk.Frame("Url (e.g. http://www.google.com)")
url_entry = gtk.Entry()
if scriptbook:url_entry.set_text(scriptbook["url"])
frame.add(url_entry)
frame.show()
url_entry.show()
box.pack_start(frame,False,False)
frame = gtk.Frame("Code")
code = gtk.TextView()
code.set_editable(True)
self.codebuffer = code.get_buffer()
if scriptbook:self.codebuffer.set_text(scriptbook["code"])
scrolled_area2 = gtk.ScrolledWindow()
scrolled_area2.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
scrolled_area2.add_with_viewport(code)
scrolled_area2.set_size_request(500,280)
frame.add(scrolled_area2)
scrolled_area.show()
box.show()
scrolled_area2.show()
code.show()
frame.show()
box.pack_start(frame,False,False)
frame = gtk.Frame("Misc.")
misc_entry = gtk.Entry()
if scriptbook:misc_entry.set_text(scriptbook["extra"])
frame.add(misc_entry)
frame.show()
misc_entry.show()
box.pack_start(frame,False,False)
button = gtk.Button("Cancel")
button.connect("clicked",self.modify_window_destroy)
vbox.pack_end(button,False,False)
button.show()
button = gtk.Button("Apply")
button.connect("clicked",self.add_scriptbook,name_entry,url_entry,misc_entry)
vbox.pack_end(button,False,False)
button.show()
vbox.show()
self.modify_window.show()
def modify_window_destroy(self,widget):
self.modify_window.destroy()
def open_url(self,url):
if url:
try:
print "Opening '"+url+"' in webbrowser"
webbrowser.open_new(url)
self.show_scriptbook_window.destroy()
gtk.main_quit()
return 0
except:
self.warning("Could not open url in webbrowser!")
else:
print"There is no url to open."
def temp_scriptbook_change(self,entry,item):
self.temp_scriptbook[item] = entry.get_text()
for key,item in self.temp_scriptbook.iteritems():
print key,item
def add_scriptbook(self,widget,name_entry,url_entry,misc_entry):
if self.temp_scriptbook["name"] != "" and self.temp_scriptbook["name"] != name_entry.get_text():
print "removing scriptbook....",self.temp_scriptbook["name"]
self.remove_scriptbook(None,self.temp_scriptbook["name"])
self.temp_scriptbook["name"] = name_entry.get_text()
self.temp_scriptbook["url"] = url_entry.get_text()
self.temp_scriptbook["code"] = self.codebuffer.get_text(self.codebuffer.get_start_iter(),self.codebuffer.get_end_iter())
self.temp_scriptbook["extra"] = misc_entry.get_text()
if self.temp_scriptbook["name"] != "":
self.SPCRIPTBOOK.add_new_scriptbook(self.temp_scriptbook)
if self.show_scriptbook_window:self.show_scriptbook_window.destroy()
if self.window:self.window.destroy()
if self.modify_window:
self.modify_window.destroy()
self.window.destroy()
MainWindow.__init__(self)
else:
self.warning("You can't add a scriptbook with out a name.")
def warning(self,message,yesno = False):
warning = gtk.Window()
warning.set_title("Warning!")
warning.set_position(gtk.WIN_POS_CENTER)
box = gtk.VBox(True)
warning.add(box)
label = gtk.Label(message)
box.pack_start(label)
label.show()
button = gtk.Button("Ok")
button.connect("clicked",lambda x:warning.destroy())
box.pack_start(button,False,False)
button.show()
box.show()
warning.show()
def remove_scriptbook_win(self,data):
print "Removing scriptbook..."
self.remove_scriptbook_window = gtk.Window()
self.remove_scriptbook_window.set_title("Remove scriptbook")
self.remove_scriptbook_window.set_position(gtk.WIN_POS_CENTER)
self.remove_scriptbook_window.set_size_request(500,350)
vbox = gtk.VBox()
scrolled_area = gtk.ScrolledWindow()
scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
vbox.pack_start(scrolled_area,True)
box = gtk.VBox()
scrolled_area.add_with_viewport(box)
for item in self.SPCRIPTBOOK.get_scriptbooks():
button = gtk.Button(item)
button.connect("clicked",self.yes_no,item)
box.pack_start(button,False,False)
button.show()
box.show()
scrolled_area.show()
self.remove_scriptbook_window.add(vbox)
button = gtk.Button("Close")
button.connect("clicked",lambda x:self.remove_scriptbook_window.destroy())
vbox.pack_start(button,False,False)
button.show()
vbox.show()
self.remove_scriptbook_window.show()
def yes_no(self,data,scriptbook):
self.yes_no_window = gtk.Window()
self.yes_no_window.set_title("Are you sure?")
self.yes_no_window.set_position(gtk.WIN_POS_CENTER)
Vbox = gtk.VBox()
self.yes_no_window.add(Vbox)
label = gtk.Label("Do you realy want to remove'"+scriptbook+"'?")
Vbox.pack_start(label)
label.show()
hbox = gtk.HBox()
Vbox.pack_start(hbox)
button = gtk.Button("Yes")
button.connect("clicked",self.remove_scriptbook,scriptbook)
hbox.pack_start(button,True,False)
button.show()
button = gtk.Button("No")
button.connect("clicked",lambda x:self.yes_no_window.destroy())
hbox.pack_end(button)
button.show()
hbox.show()
Vbox.show()
self.yes_no_window.show()
def remove_scriptbook(self,data,scriptbook):
self.SPCRIPTBOOK.remove_scriptbook(scriptbook)
if self.remove_scriptbook_window:self.remove_scriptbook_window.destroy()
if self.yes_no_window:self.yes_no_window.destroy()
self.window.destroy()
if self.modify_window:self.modify_window.destroy()
MainWindow.__init__(self)
def delete_event(self,widget,data = None):
if data == "show window":
self.show_scriptbook_window.destroy()
else:
self.window.destroy()
gtk.main_quit()
return 0
def delete_event2(self,widget,data = None):
if data == "show window2":
self.show_scriptbook_window.destroy()
return 0
def main():
gtk.main()
return 0
if "-h" in sys.argv:
print_help()
else:
if __name__ == "__main__":
MainWindow()
main()
-
v tom skripte od krchyho mi vyhadzuje chybu :
line 61: syntax error: unexpected end of file
neviete cim to je?
-
v tom skripte od krchyho mi vyhadzuje chybu :
line 61: syntax error: unexpected end of file
neviete cim to je?
Tím, že jsi skript zkopíroval špatně a není celý. Zkus to znovu. :)
-
Hej to bolo ono diky moc. ;D
-
Ahoj..
Prevod suboru.Celkom uzitocny script z flv to mp3 z youtube - otestovane aj z xvid - to mp3.
#!/bin/sh
# this script should convert files from FLV to WAV and then to MP3
echo " "
echo " Welcome to FLV to MP3 converter! version 0.1"
echo " "
infile_name="$@"
# exit if the user did not enter anything:
if [ -z "$infile_name" ]; then
echo " "
echo "You did not tell me the file name, so I will exit now."
echo " "
exit
fi
echo " "
ffmpeg -i "$infile_name" -acodec pcm_s16le -ac 2 -ab 128k -vn -y "${infile_name%.flv}.wav"
lame --preset cd "${infile_name%.flv}.wav" "${infile_name%.flv}.mp3"
rm "${infile_name%.flv}.wav"
echo " "
echo "OK. I'm done! Have fun!"
echo " "
exit
Mozno treba doinstalovat ..
sudo apt-get install ffmpeg lame
sudo apt-get install ecasound mpg123 lame ffmpeg
-
Koukám že jsem si uvědomil svojí blbost pozdě, než jsem to smazal, ale:
1) Rekurzivní funkce?
2) Nevěděl jsem že to test umí
3) Bohužel, jsi velmi blízko.
edit: No, niceméně děkuju :)
-
Edit: Smazáno, reklama. Příště ban.
Tadeáš Pařík
-
Ahoj, pokud fotíte do rawu, může se hodit
#!/bin/bash
echo -n "Jmeno adresare: "
read nazev_adr
rename 'y/A-Z/a-z/' * #prevede velka pismena na mala
ls *jpg | awk -F. '{ print $1 ".orf" >"seznam.fotek" }' #vytvori seznam kopii souboru jpg
for jmeno in $(<seznam.fotek); do #dosazuje polozku po polozce (nazev souboru) do promene jmeno
cp $jmeno $HOME/Obrázky/Fotografie/raw/
done
mkdir $HOME/Obrázky/Fotografie/archiv/$nazev_adr
cp *jpg $HOME/Obrázky/Fotografie/archiv/$nazev_adr/
rm *
echo "Hotovo :o)"
exit 0
Připojím kartu CF promažu (jpg) co se nepovedlo a spustím skript :) překopíruje jpg a jejich dvojníky orf.
Edit: prikaz rename 'y/A-Z/a-z/' * nefunguje na připojené CF kartě, jinde na disku ano. ???
Edit:: nefunguje, protože FAT nerozlišuje mezi velkými/malými písmeny, takže ještě jednou:
#!/bin/bash
echo -n "Jmeno adresare: "
read nazev_adr
ls *JPG | awk -F. '{ print $1 ".ORF" >"seznam.f" }' #vytvori seznam kopii souboru jpg
for jmeno in $(<seznam.f); do #dosazuje polozku po polozce (nazev souboru) do promene soubor
cp $jmeno $HOME/Obrázky/Fotografie/raw/
done
mkdir $HOME/Obrázky/Fotografie/archiv/$nazev_adr
cp *JPG $HOME/Obrázky/Fotografie/archiv/$nazev_adr/ && rm *JPG *ORF *f
cd $HOME/Obrázky/Fotografie/archiv/$nazev_adr
rename 'y/A-Z/a-z/' *
cd $HOME/Obrázky/Fotografie/raw
rename 'y/A-Z/a-z/' *
echo "Hotovo :o)"
exit 0
Fotky máme roztříděné, a potřebujeme najít raw a znovu upravit. Přidal jsem si tento skript do Thunaru - vlastní kontextové menu.
#!/bin/bash
jmeno=$(basename "$1" .jpg)
jmeno=$jmeno".orf"
if [ -e "$HOME/Obrázky/Fotografie/raw/$jmeno" ] ; then
ufraw $HOME/Obrázky/Fotografie/raw/$jmeno
else
exit 1
fi
exit 0
Skript pro vytvoření obrazu ISO:
#!/bin/bash
#vytvori obraz iso
#createiso.sh nazev_souboru
echo "vytvarim obraz ISO..."
echo ""
dd if=/dev/cdrom1 of=/home/palko/iso/$1.iso
exit 0
Nevíte kde najít název vloženého CD (nahradit $1) ???
Vlastní kontextové menu pro thunar:
Vytvoří tapetu na mobil :)
convert -resize 176 %n $HOME/telefon/up/%n
Připojí obraz ISO:
gksu "mount "$1" /home/palko/ViCD -o loop"
-
Užitečný skriptík pro časté výpadky serveru ubuntu.cz ;)
Může běžet na pozadí a upozornit (vykřičník na liště), jakmile je server znovu funkční...
while :; do wget --timeout=5 --tries=2 -O /dev/null forum.ubuntu.cz && { zenity --notification --text="good"; break; }; sleep 5m; done
-
...kdy se uz konecne lidi naucite delat:
...
...až budeme chtít nejdřív spát, a potom až něco provádět, a ne naopak... :)
Ale díky za připomenutí.
EDIT: ještě lepší by tedy bylowhile ! wget --timeout=5 --tries=2 -O /dev/null forum.ubuntu.cz; do sleep 5m; done; zenity --notification --text="good"
-
Překlad cizích slovíček a vygenerování "slovníčku".
používá se slovník stardict (jeho konzolová verze program sdcv) a sed, který nám upraví překlad tak, aby šel použít v Latexu.
#!/bin/bash
rm vystup2
rm vystup
rm vstup
if [ "$#" -eq 0 ]; then
echo "spatny pocet parametru"
else
if [ "$2" == "-s" ]; then
cat $1 | sort -u > vstup
else
cat $1 > vstup
fi
cat vstup | while read radek; do
sdcv "$radek" >> vystup
done
fi
sed -e "/GNU/d;/similar to /d;
/FDL/d;
s/\[.*\]$//g;
s/-->.*/\\\newline \\\noindent \\\textbf{&}/g;
s/-->//g;
/^$/d;
s/.*:.*/\\\texttt{\[&\]}/g;
s/ .*/&;/g;
s/ ;/;/g
s/.*:$/\[&\]/" vystup > vystup2
Ukázka pdf:
http://www.mk33.ic.cz/upload/10-10-30-19-37-20-slovicka.png (http://www.mk33.ic.cz/upload/10-10-30-19-37-20-slovicka.png)
-
Zkusil jsem SPCRIPTBOOK.py od petrakise ale vždy skončí s:
./spcriptbook.py
File "./spcriptbook.py", line 468
def delete_event(self,widget,data = None):
^
IndentationError: unindent does not match any outer indentation level
Neví někdo kde hledat chybu? Skript jsem zkoušel uložit více způsoby, ale se stejným výsledkem. Používám Kubuntu 10.10
-
Zkusil jsem SPCRIPTBOOK.py od petrakise ale vždy skončí s:
./spcriptbook.py
File "./spcriptbook.py", line 468
def delete_event(self,widget,data = None):
^
IndentationError: unindent does not match any outer indentation level
Neví někdo kde hledat chybu? Skript jsem zkoušel uložit více způsoby, ale se stejným výsledkem. Používám Kubuntu 10.10
Na řádek 468 přidej na začátek jednu mezeru, je to špatně odsazené.
-
Zkusil jsem SPCRIPTBOOK.py od petrakise ale vždy skončí s:
./spcriptbook.py
File "./spcriptbook.py", line 468
def delete_event(self,widget,data = None):
^
IndentationError: unindent does not match any outer indentation level
Neví někdo kde hledat chybu? Skript jsem zkoušel uložit více způsoby, ale se stejným výsledkem. Používám Kubuntu 10.10
Na řádek 468 přidej na začátek jednu mezeru, je to špatně odsazené.
Díky za pomoc K+
-
Nedavno jsem tunil svuj skript na ukladani pracne nabastlenejch onelineru v bashi (nebo cemkoliv jinym), tak si dejte. (sjedte dalsi moje gisty, jestli mate zajem)
https://gist.github.com/780868
-
Jéé, koukám, jak dlouho je to tu mrtvý, a jak si tu všichni přidávají své bash skripty a tak budu originální a přidám svoji jednoduchou php funkci. (jednu z mála za kterou se úplně nestydím)
funkce je simulací cronu, na serverech, které cron nepodporují nebo nepovolují(můžete aplikovat například pokud máte doménu na těch free serverech typu ic-cz apod.)
nezastřelte mě za odsazování, takový věci většinou nevedu (ale už se lepším!)
k použití, data jsou uložena v tabulce "cron", přikládám exportovaný sql soubor mé tabulky.
path je cesta k souboru, který se má spustit, lused je datum posledniho spusteni (pri prvnim sypani dat do tabulky nemusite zadavat zadnou hodnotu), circle je pocet sekund, po kolika se ma akce opakovat, again má tři různé možnosti "N", "Y", "S-XX" (kde XX je nějaké číslo). Značí to, jestli se má provést opakování více těch příkazů ve chvíli, kdy bylo zjištěno, že doba od posledního spuštění je minimálně dvojnásobná, než hodnota circle. Jestli je nastavena na N, pak se příkaz provede maximálně jednou, jestli je nastavena na Y, pak se provde tolikrát, kolikrát uplynula perioda circle, a jestli je nastavena na S-XX, pak se provede vicekrat maximalne do cisla XX
doporucuji tuhle funkci hodit na zacatek kazdeho souboru, aby se spustila pri kazdem pristupu na stranku - pri trochu vetsim trafficu to ma sanci simulovat cron docela dobre.
asi ten navod budu prepisovat, trochu se mi pripozdiva (dve v noci) a minulou noc jsem nespal, takze doufam, ze jste to pochopili.
P.S.: Stastne a vesele..:)
function cron(){
$cr=mysql_query("SELECT * FROM cron");
$ord=Array("time"=>Array(),"path"=>Array());
while ($cron=mysql_fetch_array($cr)){
$cron["lused"]=strtotime($cron["lused"]);
$now=time()-$cron["lused"];
if ($now>=$cron["circle"]&&$cron["circle"]!=0){
if ($cron["again"]=="Y"){
for ($i=1;$i<=($now/$cron["circle"]);$i++) {
$ord["time"][]=$cron["lused"]+($cron["circle"]*$i);
$ord["path"][]=$cron["path"];}}
elseif (strpos($cron["again"],"S")!==false){
$much=explode("-",$cron["again"]);
if ($much[1]>($now/$cron["circle"])) $muc=($now/$cron["circle"]);
else $muc=$much[1];
for ($i=1;$i<=$muc;$i++){
$ord["time"][]=$cron["lused"]+($cron["circle"]*$i);
$ord["path"][]=$cron["path"];}}
else{
$ord["time"][]=$cron["lused"]+($cron["circle"]);
$ord["path"][]=$cron["path"];}}}
array_multisort($ord["time"],$ord["path"]);
foreach($ord["path"] as $path){include($path);}
reset($ord);
array_unique($ord["path"]);
foreach($ord["path"] as $path){
mysql_query("UPDATE cron SET lused=NOW() WHERE path='".mysql_real_escape_string($path)."'");}}
CREATE TABLE IF NOT EXISTS `cron` (
`path` text NOT NULL,
`lused` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`circle` int(10) NOT NULL,
`again` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table `cron`
--
INSERT INTO `cron` (`path`, `lused`, `circle`, `again`) VALUES
('cron/unban.php', '2011-12-13 02:59:28', 86400, 'N'),
('cron/unact.php', '2011-12-13 03:10:04', 10, 'N'),
('cron/backup.php', '2011-12-13 02:59:28', 86400, 'N');
-
Zdravím,
po dlouhé době bych rád přidal jeden skriptík. Jedná se o jednoduchý kalkulátor IP adres.
IPCalc - terminál:
http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc.sh (http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc.sh)
(http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/screan-menu.png) (http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc.sh)
IPCalc - Zenity:
http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc-zenity.sh (http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc-zenity.sh)
Případně pomoc v příkazové řádce pro úplné začátečníky:
#Stažení
wget http://www.jan.jkelektronik.cz/data_files/bash/ip_calc.tar.gz
#Rozbalení
gzip -d ip_calc.tar.gz
tar xpfv ip_calc.tar
#Spuštění v terminálu
sh ip_calc/ipcalc.sh
#Spuštění v grafickém prostředí Zenity
sh ip_calc/ipcalc-zenity.sh
#Smazání již nepotřebného balíku
rm ip_calc.tar
Můžete se podívat i na další skriptíky, třeba i něco dalšího časem ještě přibude a některé snad ještě i budu vylepšovat :)
http://www.jan.jkelektronik.cz/data_files/bash/ (http://www.jan.jkelektronik.cz/data_files/bash/)
-
Protože mě už nebavilo při každé instalaci a některých aktualizací stále ručně nastavovat zapnutí klávesy NUMLOCK v přihlašovací obrazovce, tak jsem si pro to připravil následující script (proboha nekamenujte mě za to jak je napsán, jsem rád, že funguje) :
#!/bin/bash
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
echo "Skript musí být spuštěn s právy uživatele root" 1>&2
exit 1
fi
# search file '50-unity-greeter.conf$'
file1=$(locate -r '50-unity-greeter.conf$');
# test for command to turn numlock
if grep "greeter-setup-script=/usr/bin/numlockx on" $file1; then
echo "Zdá se, že pro zapnutí NUMLOCK v přihlašovací obrazovce je vše připraveno.";
else
# append command to file
echo "greeter-setup-script=/usr/bin/numlockx on">>$file1;
echo "Zapnutí NUMLOCK v přihlašovací obrazovce je připraveno.";
fi
echo "Restartujte počítač";
Skript mám odzkoušený pro 14.04, a nejspíše bude fungovat i na 15.04.
Skript se spouští z příkazové řádky pod právy root.
-
Ahoj, neví někdo o skriptu, který by po updatu jádra smazal staré verze včetně konfiguračních souborů? Dosud používám výborný Ubuntu-tweak, ale když pominu stagnující vývoj tak při instalaci se natáhne spousta nepotřebných věcí a používám z tohoto programu stejně jenom funkci čištění.
-
Ahoj, neví někdo o skriptu, který by po updatu jádra smazal staré verze včetně konfiguračních souborů? Dosud používám výborný Ubuntu-tweak, ale když pominu stagnující vývoj tak při instalaci se natáhne spousta nepotřebných věcí a používám z tohoto programu stejně jenom funkci čištění.
Já si vystačím s tímto aliasem:
alias arm="apt-mark showmanual | egrep '^linux-(image|headers)' | xargs sudo apt-mark auto ; sudo apt-get autoremove"