söndag 25 januari 2009

Räkna ut upplösningen

För att räkna ut vilken upplösning man ska ha så kan man göra enligt följande:
X är på min skärm 1280 och Y är 960 så skriv in det ni har.
sqrt(X² + Y²)/bildyta i tum
Min Upplösning räknar jag då ut så här
sqrt(1280² + 960²) /18

Ändra upplösning:
System -> Inställningar -> Utseende Typsnitt och detaljer

Nautilus Skript (kommer att uppdateras)

Skripten ska sparas i mappen ~/.gnome2/nautilus-scripts, glöm inte att göra dom körbara.
För att de ska bli "aktiverade" så måste man starta om Nautilus.
Man kommer åt skripten genom att i Nautilus högerklicka och välja Skript.

Redigera text i terminalen
Det är skriptet öppnar den markerade filen med nano, går att sätta dit vim eller nån annan. Skriptet kollar inte vad det är för typ av fil som öppnas så det får man ha koll på själv :P

#!/bin/bash

exec gnome-terminal -x nano $1


Flytta dig till terminalen
Det här skriptet flyttar dig till Terminalen i den mapp du är i Nautilus.

#!/bin/bash
cd $NAUTILUS_SCRIPT_CURRENT_URI
exec gnome-terminal

lördag 24 januari 2009

Bashrc Alias och Funktioner

Här kommer jag att skriva in funktioner och alias som man kan ha användning av.

Koden sparas i filen ~/.bashrc och används genom att först starta om Terminalen.

ALIAS
Detta alias gör att man slår samman två pdf filer till en med namnet output.pdf
alias pdfmerge='gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=./output.pdf'

FUNKTIONER
Denna funktion utnytjar google define. Det är samma som att skriva define: sökord i google.
Används genom att skriva define ord ex. define lamer i terminalen

Define a word

define ()
{
lynx -dump "http://google.com/search?q=define%3A+${1}" | awk '
/Definitions of/,/^$/ # tar allt fram till en tom rad, nytt stycke.
#/Referenser/,0 # tar allt från det angivna och resten av sidan. (har kommenterat bort referenserna)
' | grep -v [[] | less #Tar bort en hel del länkar och visar det som är kvar med less.

}

Kolla efter nytt inlägg på blocket
#
kollar om nåt nytt har kommit in på blocket under datorer. Använd genom att bara skriva blocket. Används genom att skriva blocket i terminalen,
blocket()
{
lynx -dump "http://www.blocket.se/li?ca=2_s&f=p&th=1&wid=1&q=&cg=5020&w=2&c=0" | iconv -f iso-8859-1 -t utf-8 | grep -v "thumb" | grep -A 3 "Idag\|Igår" | head -n 15 | cat > blocket.txt # Tar blocket, fixar till åäö, tar bort bilder, söker reda på idag/igår, ser till att det inte blir mer än 15 rader, skriver ut de raderna till filen blocket.se

touch oldblocket.txt #om inte oldblocket är skapad så skapas den nu, i annat fall uppdateras bara tidsstämpeln.

diffblocket="$(diff /home/jonas/blocket.txt /home/jonas/oldblocket.txt)" #Kollar om det har blivit nåt nytt sen senaste gången man körde funktionen.

if [ "$diffblocket" ]; then # om det har kommit nåt nytt så skrivs de 15 första raderna ut i terminalen
cat /home/jonas/blocket.txt | grep -A 3 "Idag\|Igår" # grep här är bara till för att sätta lite färg på utskriften och är i annat fall onödig...

else
echo "Inget nytt =("
fi

cp blocket.txt oldblocket.txt

}

Hitta text i fil
# Den här söker rätt på text inuti filer. Användning: findtxt n "filtyp_eller_namndel" "text du söker efter" n är optional och anger hur djupt ner i kattalogträdet du vill söka. ex. findtxt "*.txt" "Hej Jonas" alt. findtxt 5 "*.txt" "Hej Jonas"

findtxt ()

{
if [ -z "$1" ] ; then # Kollar om det helt och hållet saknas argument

echo "Tips: findtxt \"*.txt\" \"sökord\" Alt. findtxt n \"*.txt\" \"sökord\" n är hur djupt ner i katalogträdet man vill söka (optional)"

elif [ -z "$2" ] ; then # Kollar om det andra argumentet har angivits.

echo "Du måste också ange vilken text du söker efter tex. \"Hej Jonas\""

elif [ -z "$3" ] ; then # Kollar om det tredje argumentet har angivits annars körs det utan nåt maxdepth har sats på sökningen.

find . -iname "${1}" -exec grep -Hi "${2}" {} +;

else # Minst tre argument har angivits, utgår från att det är: maxdepth, filen och sökordet. Om det skulle vara fler eller felaktiga argument så tar grund kommandot find eller grep hand om det, hoppas jag :P

find . -maxdepth "${1}" -iname "${2}" -exec grep -Hi "${3}" {} +;
fi

}

torsdag 22 januari 2009

Slå samman två avi filer

Slå samman två avi filerFörst så måste man installera programmet mencoder:
sudo apt-get install mencoder


Sen kan man köra detta kommando för att slå samman de två avi filerna.
mencoder -ovc lavc -oac lavc /path/to/vid1.avi /path/to/vid2.avi -o video.avi

Det slår ihop de två avi filerna till en fil som heter video.avi

onsdag 21 januari 2009

Meddelas om ny annons kommit på blocket.

Det som krävs är att Lynx är installerat, Lynx är en webbläsare för terminalen och att man kan spela upp .wav filer med kommandot play

Det skriptet gör är att kolla på Blocket.se under Datorer & Tillbehör och meddelar med ett ljud när nånting nytt har dykt upp. Det går förmodligen att lägga en annan av blocketskategorier som länk i stället för den länk jag anväder här, har dock inte testat det.

Jag kör skriptet var 5e minut med hjälp av crontabs.

Skriptet kan lätt skrivas om och användas i terminalen så att man bara behöver skriva blocket så visas de senaste X antal raderna upp i terminalen om det har blivit nån ändring sen man sist körde det och har det inte det så skriver den ut "Inget nytt =(" i terminalen. Man kan också om man vill ta bort den delen som kollar om nåt nytt har kommit så att när man kör kommandot blocket så visas alltid X antal rader med annonser.

Ljudmeddelande vid ny annons med hjälp av crontable:
Spara den här koden som cronblocket.sh se till att byta ut mitt användarnamn mot erat eget och att sökvägarna stämmer... Ljudfilen hittade jag under amsn så jag kör på den av ren lathet, ni kan välja vilken wav fil ni vill =) Glöm inte heller att göra filen körbar. chmod u+x sökväg_till_ cronblocket.sh eller så gör ni det i Nautilus, Högerklicka på filen, välj egenskaper och sedan rättigheter och kryssa för Kör

cronblocket.sh skriptet:
#!/bin/bash
#kollar om nåt nytt har kommit in på blocket under datorer & Tillbehör.

lynx -dump "http://www.blocket.se/li?ca=2_s&f=p&th=1&wid=1&q=&cg=5020&w=2&c=0" | iconv -f iso-8859-1 -t utf-8 | grep -v "thumb" | grep -A 3 "Idag\|Igår" | head -n 15 | cat > blocket.txt

touch
oldblocket.txt

diffblocket="$(diff /home/user_name/blocket.txt /home/
user_name/oldblocket.txt)"

if [ "$diffblocket" ]; then
play -q /home/user_name/.amsn/skins/PinkaMSN/sounds/alarm.wav;
fi

cp blocket.txt oldblocket.txt

Ni kollar i crontab med kommandot crontab -l (litet L) och ni redigerar crontab med crontab -e

Skriv in detta i crontab för att den ska göra kollen var 5e minut.
*/5 * * * * /bin/bash /home/user_name/bin/crontabblocket.sh

*/5 gör att det blir var femte min, var tredje min blir alltså */3, minuterna kan sättas mellan 0-59. Kom ihåg att ni måste ha stjärnorna där och att det måste vara minst ett mellanrum mellan 5an och stjärnorna och mellan de övriga stjärnorna och mellan stjärnorna och kommandot som ska köras.
För mer info. om hur man styr crontab kolla under min blogg med rubriken Crontab.

Om ni vill köra det i terminalen och få de nya inläggen utskrivna dä så kan ni göra så här:
Åter igen se till att sökvägarna stämmer och att ni har lynx installerat.

Kopiera den här koden till en fil som heter .bashrc och finns i er hemmamapp. Klistra in det längst ned, så kan ni fylla på där med egna funktioner sän och ha allt på ett ställe =)

.bashrc funktionen
blocket()
{
lynx -dump "http://www.blocket.se/li?ca=2_s&f=p&th=1&wid=1&q=&cg=5020&w=2&c=0" | iconv -f iso-8859-1 -t utf-8 | grep -v "thumb" | grep -A 3 "Idag\|Igår" | head -n 15 | cat > blocket.txt

touch
oldblocket.txt

diffblocket="$(diff /home/
user_name/blocket.txt /home/user_name/oldblocket.txt)"

if [ "$diffblocket" ]; then
cat /home/user_name/blocket.txt | grep -A 3 "Idag\|Igår"

else
echo "Inget nytt =("
fi

cp blocket.txt oldblocket.txt

}

Liten förklaring vad det här skripten gör:
Använder Lynx för att ta blocket sidan och skickar den vidare för att fixa så att åäö syns som det ska(iconv...) sen tas alla sökvägar till bilder bort (grep -v "thumb") efter det så söks det rätt på alla meningar som inehåller Idag eller Igår plus att de tre följande raderna behålls (grep -A 3 "Idag\|Igår") . Efer det så tas de 15 första raderna ut (head -n 15) den kan ni ändra på ifall ni vill visa fler eller färre rader i terminalen. Nu till sist så sparas de 15 raderna ner i filen blocket.txt (cat > blocket.txt)
Sedan skapas filen oldblocket.txt med hjälp av (touch oldblocket.txt). Ifall filen redan finns så uppdateras bara filens tidsstämpel.

Därefter så görs en koll för att se ifall det har kommit nån ny annons sen förra gången skriptet kördes. diff gämmför rad för rad den nyss skapade filen med den tidigare versonen av filen och är det nån skillnad där så sparas det i variabeln diffblocket.

If satsen kollar om diffblocket är tommt eller innehåller nåt. Innehåller den nåt så har det kommit en ny anons och då skrivs blocket.txt ut på skärmen, den innehåller ju alla de 15 första raderna med nya och gamla annonser (cat /home/user_name/blocket.txt | grep -A 3 "Idag\|Igår") delen där med grep -A 3 "Idag\|Igår" är egentligen onödig eftersom det är precis det som redan finns i filen man visar men med det här kommandot så får man Idag och Igår färgat och det ser lite snyggare ut... =) Else delen visar bara det där tråkiga meddelandet Inget nytt =( ifall diffblocket var tom.

Skillnad mellan skripten:
Skillnaden mellan de här två skripten är i stort sätt bara att den som körs med crontab är ett bash script som körs för sig och den spelar bara upp ett ljud ifall nått nytt dykt upp på blocket.
Det andra skriptet som skrivs in i .bashrc är en funktion som gör att man direkt i terminalen kan skirva blocket och få se de nyaste annonserna.

Det här skulle säkert kunna användas för att visa info i Conky i stället för i terminalen ifall man skulle vilja det.

Crontab

Crontab kommandon
crontab -l -> (Litet L) visar hur crontab ser ut.
crontab -e -> Gör att man kan redigera crontab (lägga till eller ändra kör schemat)

Så här är crontab utformad:
Minute Hour Day Month Day Task

Minute = Minuter av en timma, 00 till 59. * Indikerar att kommandot körs varje minut (mer detaljer senare)
Hour = Heltimmar 24-timmars format, 00 till 23. *
Indikerar att kommandot körs varje timma
Day = Dag I månaden, 1 till 31. * Indikerar att kommandot körs varje dag..
Month = Månad på året, 1 till 12. *
Indikerar att kommandot körs varje månad.
Day =Dag på veckan, 3 bokstäver - sun, mon, tue, eller numeriskt (0=sun, 1=mon etc).... *
Indikerar att kommandot körs varje dag.
Task = Kommandot man vill köra.

Notera: Var och en av de här måste vara separerade med minst ett mellanrum.

Absoluta sökvägar

Det är viktigt att man använder absoluta sökvägar i crontab som tex /bin/bash /home/användarenamn/skript.sh.

Man kan använda miljövariabeln $HOME för att göra sökvägen lite lättare, /bin/bash $HOME/skriptet.sh

Några exempel:

* * * * * /kommando/att/köra

exemplet skulle köra
/kommando/att/köra varje minut.


Hur man kör ett skript var 5 minut?

Alt. 1.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /kommando/att/köra

Alt. 2.

*/5 * * * * /kommando/att/köra

*/5 gör alltså att kommandot körs var 5 minut, */3 skulle då bli var tredje minut. Man kan köra samma korta form på timme och dag etc.

Hur kör man ett kommando kl. 18:00 varje kväll?

00 18 * * * /kommando/att/köra



Hur kör man ett bash script varje söndag kl 02:00?

00 02 * * 0 /bin/bash $HOME/skript.sh



tisdag 13 januari 2009

Använd Google Defind word i terminalen

Först mååste terminal webbrowsern lynx installeras sudo apt-get install lynx sen lägg in koden nedan nederst i filen: ~/.bashrc och starta om eller öppna en ny terminalen.

# Define a groovy word - USAGE: define lamer
define ()
{
lynx -dump "http://www.google.com/search?hl=en&q=define%3A+${1}&btnG=Google+Search" | grep -A 500 "Definitions of" | grep -v [[] | grep -B 500 "Search" | grep -v "Search"| grep -B 500 "Referenser" | grep -v "Referenser" | less
}


Hela lynx -dump och fram till | less ska vara på samma rad.
grep -A 500 "Definitions of" söker rätt på orden "Deffinitions of" och hämtar upp den raden plus upptill 500 rader till.

grep -v [[] Söker bland dessa 500 rader efter [ som finns för varje deffinition av ordet som en länk som inte är intressant tycker jag... Så de raderna tas bort.

grep -B 500 "Search" söker reda på ordet "Search" och behåller de 500 raderna som är före den raden. Efter Search står det bara en massa onödiga länkar som nu tas bort.

grep -v "Search" Tar bort själva raden som inehåller det ordet "Search".

grep -B 500 "Referenser" söker reda på ordet "Referenser" och behåller de 500 raderna som är före den raden. Efter Referenser står det bara en massa onödiga länkar som nu tas bort.

grep -v "Referenser" Tar bort själva raden som inehåller det ordet "Referenser".

less skriover ut texten i terminalen och den avslutas med att man trycker på q

Alternativt kan man göra så här:

# Define a groovy word - USAGE: define lamer
define ()
{
lynx -dump "http://google.com/search?q=define%3A+${1}" | awk '
/Definitions of/,/^$/
# tar allt fram till en tom rad, nytt stycke.
#/Referenser/,0
# tar allt från det angivna och resten av sidan.
' | grep -v [[] | less

}

/,/^$/ tar allt fram tillnytt stycke (tom rad)
/,0 tar restan av sidan.

Jag har bort kommenterat Referenser för jag vill inte visa den.


lördag 10 januari 2009

Sök text i en fil från terminalen

Här är kommandot jag använder för att hitta text i filer.
find . -iname '*.txt' -exec grep -Hi 'hej på dig' {} + ;

Om man vill bestämma hur många nivåer ner i katalogträdet man vill göra sökningen så kan man göra så här:

find . -maxdepth 1 -iname '*.txt' -exec grep -Hi 'hej på dig' {} + ;

-maxdepth 1 gör så att det bara söks i den mapp man står i och int i undermapparna.
-maxdepth 2 gör alltså så det söks i den map man står i och en nivå under.
. Gör att sökningen utgår från den mapp man står i, alternativ sökväg kan anges.
-iname gör att den inte bryr sig om stora eller små bokstäver
'*.txt* kan bytas ut mot det som passar ens behov bäst. Detta matchar alla filer som slutar på .txt.
-exec grep gör att de filer som i detta fall .txt filer skickas vidare till grep.
- grep söker i filerna efter hej på dig.
- H gör så att sökvägen till filen skrivs ut.
-i gör så att det inte görs nån skillnad på gemener och VERSALER i sökningen.

Det spelar ingen roll om man skriver -i - H eller -iH men jag tyckte det var lättare att komma ihåg när det står Hi =) Det är dock viktigt med att använda ett stort H och ett litet i annars blir det ett annat kommando :)

Skriv man find i terminal för att komma åt manualen eller skriv info find för en mer utförlig information, klicka er nån undermeny med Enter.


TIPS:

Kopiera in följande längst ned i filen ~/.bashrc

# Den här söker rätt på text inuti filer. Användning: findtxt n "filtyp_eller_namndel" "text du söker efter" n är optional och anger hur djupt ner i kattalogträdet du vill söka. ex. findtxt "*.txt" "Hej Jonas" alt. findtxt 5 "*.txt" "Hej Jonas"

findtxt ()

{

if [ -z "$1" ] ; then # Kollar om det helt och hållet saknas argument

echo "Tips: findtxt \"*.txt\" \"sökord\" Alt. findtxt n \"*.txt\" \"sökord\" n är hur djupt ner i katalogträdet man vill söka (optional)"

elif [ -z "$2" ] ; then # Kollar om det andra argumentet har angivits.

echo "Du måste också ange vilken text du söker efter tex. \"Hej Jonas\""

elif [ -z "$3" ] ; then # Kollar om det tredje argumentet har angivits annars körs det utan nåt maxdepth har sats på sökningen.

find . -iname "${1}" -exec grep -Hi "${2}" {} +;

else # Minst tre argument har angivits, utgår från att det är: maxdepth, filen och sökordet. Om det skulle vara fler eller felaktiga argument så tar grund kommandot find eller grep hand om det, hoppas jag :P

find . -maxdepth "${1}" -iname "${2}" -exec grep -Hi "${3}" {} +;
fi
}

Spara och öppna en ny terminal och skriv följande för att göra en sökning:
findtxt "*.txt" "det du söker efter" Alt. findtxt n "*.txt" "det du söker efter" där n står för hur djupt ner i katalogträdet du vill söka. Skriv bara findtxt för info.
Om du vill söka i nån annan typ av fil så är det bara byta ut *.txt mot valfri.
Denna söker bara i den mapp du står i och underkatalogerna .

torsdag 1 januari 2009

Animationer i aMSN

Man kan installera swfdec-gnome i Ubuntu för att få möjlighet att spela upp animationerna som man får via aMSN. Animationerna spelas upp i ett eget fönster när man klickar på dem.

1. Installera swfdec-gnome, apt-get install swfdec-gnome
2. Starta aMSN och gå in i Konto -> Välj Plugin och välj att konfigurera Winks
3. Där det står Swf-spelare kommandon: skriv in swfdec-player
4. Spara ändringarna och du är färdig.

När det kommer en animation kan man klicka på spela upp så startas swfdec-player och du får ett fönster som spelar upp animationen.