Enradare

Enradare

Enradare i programmeringssammanhang är program som skrivs på en rad och avslutas med Enter

Enradarna är oftast kryptiska men inte avsiktligt tillkrånglade och utför (oftast) nyttiga saker. Denna blogg är ett hobbyprojekt, men bygger även på erfarenheter ur arbetslivet. Nya besökare, se första inlägget.

Skriva ut Windows Build Version

Kommandotolken, Windows VistaSkapad av M.O.B. 2016-10-11 12:44
Windows PowerShell:
(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name BuildLab).BuildLab

14955.rs_prerelease.161020-1700

(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name BuildLabEx).BuildLabEx

14955.1000.amd64fre.rs_prerelease.161020-1700

Bash on Ubuntu on Windows:
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -command "(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name BuildLabEx).BuildLabEx"

14955.1000.amd64fre.rs_prerelease.161020-1700

  • Kommentarer(0)//enradare.orbin.se/#post71

Hämta ner alla ljudfiler till 'Vård- och omsorgsarbete 1'

Bash, Ubuntu 12.04Skapad av M.O.B. 2016-07-19 19:48
wget http://www.sanomautbildning.se/Laromedel/Gymnasie--vuxenutbildning/Vard-och-omsorgsprogrammet/Programgemensamma/Vard--och-omsorgsarbete-1/Lyssna-mp3-filer/ ; grep '\.mp3' index.html | sed 's/\.mp3/.mp3\n/g' | grep '\.mp3' | sed 's/.*href="/wget http:\/\/www.sanomautbildning.se/' > wget.sh ; . wget.sh

  • Kommentarer(0)//enradare.orbin.se/#post70

Hitta alla installerade program som använder biblioteket nCurses

Bash, Raspbian JessieSkapad av M.O.B. 2016-05-02 00:58
find / -xdev -type f -perm /a+x 2>/dev/null | while read file; do ldd $file | grep libncurses.so | sed -e '/^[^\t]/ d' | sed "s|.*|$file|"; done

Detta hittar alla installerade program som använder biblioteket nCurses.

Hittade:
/home/pi/blockis/blockis
/home/pi/blockis/blockis_max7219
/usr/bin/timidity
/usr/bin/mplayer
/usr/bin/mtr
/usr/bin/slabtop
/usr/games/atc
/usr/games/battlestar
/usr/games/hunt
/usr/games/canfield
/usr/games/robots
/usr/games/phantasia
/usr/games/sail
/usr/games/dab
/usr/games/boggle
/usr/games/hangman
/usr/games/rain
/usr/games/gomoku
/usr/games/worms
/usr/games/cribbage
/usr/games/snake
/usr/games/worm
/usr/games/mille

  • Kommentarer(0)//enradare.orbin.se/#post69

Visa alla dator- eller programspråk på GitHub

Bash, Ubuntu 14.04Skapad av M.O.B. 2016-03-02 00:57

curl -s 'http://github-awards.com/users?utf8=%E2%9C%93' | sed -n -e '/<.*">.*<\/option>/ s/<.*">//p' | sed -e 's/<.*>//' -e 's/^ *//' -e 's/ /_/g' -e 's|\(.*\)|<a href="https://en.wikipedia.org/wiki/\1">\1</a><br>|' | sort


Detta skriver ut länkar till programspråkens sidor på engelska Wikipedia. Dock fungerar länken inte alltid och ibland hamnar man fel, kommer till en sida med en lista med olika betydelser eller hamnar på en sida där man kan söka efter ordet. Hamnar man fel kan man ofta hitta länken till sidan med listan med olika betydelser och där leta efter "programming language".

Ovanstående enradare skriver idag ut:

ABAP
ActionScript
Ada
Agda
AGS_Script
Alloy
ANTLR
ApacheConf
Apex
APL
AppleScript
Arc
Arduino
ASP
AspectJ
Assembly
ATS
Augeas
AutoHotkey
AutoIt
Awk
Batchfile
Bison
BitBake
BlitzBasic
BlitzMax
Bluespec
Boo
Brainfuck
Brightscript
Bro
C
C#
C++
Ceylon
Chapel
Cirru
Clean
CLIPS
Clojure
CMake
COBOL
CoffeeScript
ColdFusion
Common_Lisp
Component_Pascal
Cool
Coq
Crystal
CSS
Cuda
Cycript
Dart
DCPU-16_ASM
D
Delphi
DM
Dogescript
DOT
Dylan
eC
Ecl
E
Eiffel
Elixir
Elm
Emacs_Lisp
EmberScript
Erlang
Factor
Fancy
Fantom
F#
FLUX
Forth
FORTRAN
Frege
Game_Maker_Language
GAMS
GAP
GDScript
Glyph
Gnuplot
Go
Golo
Gosu
Grace
Grammatical_Framework
Groovy
Hack
Harbour
Haskell
Haxe
HaXe
HTML
Hy
IDL
Idris
IGOR_Pro
Inform_7
Io
Ioke
Isabelle
Jasmin
Java
JavaScript
J
JSONiq
Julia
Kotlin
KRL
LabVIEW
Lasso
LiveScript
Logos
Logtalk
LOLCODE
LookML
LoomScript
LSL
Lua
Makefile
Mathematica
Matlab
Max
Mercury
Mirah
M
Monkey
Moocode
MoonScript
Nemerle
nesC
NetLogo
Nimrod
Nit
Nix
Nu
Objective-C
Objective-C++
Objective-J
OCaml
Omgrofl
ooc
Opal
Opa
OpenEdge_ABL
OpenSCAD
Ox
Oxygene
Oz
Pan
Papyrus
Parrot
Pascal
PAWN
Perl6
Perl
PHP
PigLatin
Pike
PLSQL
PogoScript
Powershell
PowerShell
Processing
Prolog
Propeller_Spin
Protocol_Buffer
Puppet
PureBasic
Pure_Data
PureScript
Python
Racket
Ragel_in_Ruby_Host
REALbasic
Rebol
Red
RobotFramework
Rouge
R
Ruby
Rust
SAS
Scala
Scheme
Scilab
Self
Shell
Shen
Slash
Smalltalk
SourcePawn
SQF
SQL
Squirrel
Standard_ML
Stata
SuperCollider
Swift
SystemVerilog
Tcl
TeX
Thrift
Turing
TXL
TypeScript
UnrealScript
Vala
VCL
WebIDL
Verilog
VHDL
VimL
wisp
Visual_Basic
Volt
xBase
XC
XML
Xojo
XProc
XQuery
XSLT
Xtend
Zephir
Zimpl

  • Kommentarer(0)//enradare.orbin.se/#post68

Montera en annan dators filsystem

Bash, Raspbian JessieSkapad av M.O.B. 2016-01-13 23:50
sshfs pi@raspberrypi1.local:/media ~/mnt

Nu kan man använda filsystemet på den andra datorn som om det vore lokalt. Detta är bl.a. bra för att köra program som använder den lokala hårdvaran för att behandla data som finns på en annan dator. Man måste först installera paketet sshfs. När man vill koppla ner kör man:

sudo umount ~/mnt



  • Kommentarer(0)//enradare.orbin.se/#post67

Förena flera datorers X-skärmar med x2x

Bash, Raspbian JessieSkapad av M.O.B. 2016-01-13 19:03
ssh -XC pi@raspberrypi2.local x2x -east -to :0.0

Man måste köra X Windows på bägge datorerna och de måste ha nätverk så att man kan SSH:a mellan dem. Man kör ovanstående på den vänstra skärmen och efter det kan man köra muspekaren till den högra skärmen och då kopplas tangentbordet också till den skärm/dator där muspekaren är. Att kopiera och klistra mellan skärmarna (och därmed mellan datorerna) går att göra genom att markera för att kopiera och klicka med mittknappen/mushjulet för att klistra in -- d.v.s. på vanligt X-manér. Däremot fungerar inte kopiering och inklistring med Ctrl+C och Ctrl+V mellan datorerna med x2x, ty den funktionen går ej via X, men det lär systemet Synergy klara. Paketet x2x är installerat från början i Raspbian Jessie. Avahi (d.v.s. Linux-versionen av Apple's Bonjour) är också installerat från början, så man kan använda datorernas namn och slipper ta reda på IP-nummer.

Det finns några shellskript som gör hanteringen bekvämare:
https://github.com/mobluse/x2x

  • Kommentarer(0)//enradare.orbin.se/#post66

Slipp annonser i webbläsaren på Raspberry Pi (adblock)

Bash, Raspbian WheezySkapad av M.O.B. 2015-06-28 20:13
wget http://winhelp2002.mvps.org/hosts.txt; cat /etc/hosts hosts.txt > hosts2.txt ; sudo mv /etc/hosts /etc/hosts.org; sudo mv hosts2.txt /etc/hosts

Eventuellt kan man behöva redigera hosts2.txt innan flytt:
nano hosts2.txt

Tipset på filen kom härifrån, men jag installerar ingen webbserver.



  • Kommentarer(0)//enradare.orbin.se/#post65

Arbetsförmedlingens öppna data & API

Bash, Raspbian WheezySkapad av M.O.B. 2015-06-13 01:50
Idag upptäckte jag något mycket positivt:
http://www.arbetsformedlingen.se/Globalmeny/Om-webbplatsen/Oppna-data.html
Se också tekniskbeskr_ledigajobb.pdf. Man får väl se hur länge det roliga varar.

Det innebär att man kan skriva program som söker jobb automatiskt, ty jag har redan skrivit ett program som skickar e-post via GMail. Problemet har tidigare varit att hitta de få annonser som tillåter att man söker jobbet via e-post, men nu kan jag hämta ner alla annonser inom pendlingsavstånd och söka de jobben via e-post.

Man kan även vaska fram annonser som använder jobbsökningstjänster man redan har, ty det snabbar ju upp jobbsökandet att slippa fylla i uppgifter. Jag har även skrivit screenscraping-program med WWW::Mechanize, så man skulle kunna ansöka automatiskt även via formulär.

Visa alla län med läns-ID:
curl -H Accept-Language:sv http://api.arbetsformedlingen.se/af/v0/platsannonser/soklista/lan

Visa ansökningsraden med ID för alla annonser i Stockholms län som innehåller Angular och som kan sökas via e-post:
keyword=angular; URL=api.arbetsformedlingen.se/af/v0/platsannonser; AL=Accept-Language:sv; curl -sGH $AL $URL/matchning -d "lanid=1&nyckelord=$keyword&antalrader=9999" | sed 's|annonsid":"|\n|g' | sed '/^{.*/d;s|".*||' | while read id; do curl -sH $AL "$URL/$id" | sed -n 's|.*ansokan":{\([^}]*\)}.*|\1 id=|p'; echo "$id"; done | sed '/epostadress.*@/!d'

Visa annons med visst ID:
id=2719885;curl -H Accept-Language:sv "api.arbetsformedlingen.se/af/v0/platsannonser/$id"

Nu finns Jopply -- ett program för att söka jobb via kommandoraden i Linux, Windows och Mac OS X (det senare dock ännu ej testat). Kräver Perl och en Perl-modul för att hämta webbsidor.

(Jag har varit arbetslös med a-kassa eller i arbetsmarknadspolitisk åtgärd i sammanlagt 14 år sedan 1991. Jag anser att vi har en felaktig arbetsmarknadspolitik i Sverige, ty jag är nog inte mindre meriterad än många av dem som har jobb. Två personer fick ett bidrag på 100000 kr från Vinnova för något som är mindre användbart än ovanstående rader. Jag fick inte ens delta i Hack4Sweden. Nu kan jag dock söka jobb mer effektivt.)

  • Kommentarer(0)//enradare.orbin.se/#post64

Skapa nytt GitHub-repo från mapp

Bash, Raspbian JessieSkapad av M.O.B. 2015-04-19 20:12
mv PROJECT PROJECT.org

curl -u 'USER' https://api.github.com/user/repos -d '{"name":"PROJECT"}'

git clone https://github.com/USER/PROJECT.git

cd PROJECT

cp -r ../PROJECT.org/* .

Uppdatera och lägg upp några filer.

ls | while read file; do git add $file; done

git commit -a -m 'First commit.'

git push -u origin master


När man vill uppdatera senare gör man:

git commit -a -m 'Another commit.'

git push

  • Kommentarer(0)//enradare.orbin.se/#post63

Högläsning av webbsidor i Raspbian på Raspberry Pi

Bash, Raspbian WheezySkapad av M.O.B. 2015-03-21 04:39
curl https://github.com/mobluse/demo-programs-sv/blob/master/README.md | espeak -v mb/mb-sw1 -m --stdin -w tmp.wav ; ls -l tmp.wav ; omxplayer tmp.wav ; rm tmp.wav

Prova även mb/mb-sw2 och sv i stället för mb/mb-sw1. Man kan även byta ut omxplayer mot cvlc.

  • Kommentarer(0)//enradare.orbin.se/#post62

Windows 95 i Raspbian på Raspberry Pi med DOSBox och QEMU

Bash, Raspbian WheezySkapad av M.O.B. 2015-03-20 03:03
Det går att köra Windows 95 i Raspbian på Raspberry Pi 1 B+ (och troligen även i 1 A, 1 A+, 1 B och 2 B). Man kan alltså skapa en tyst, billig Windows-dator med Raspberry Pi 1 B+ för 199 kr, men man kan köpa begagnade Windows-datorer ännu billigare.

Eftersom Raspberry Pi 1 har ARM v6 så måste man använda x86-emulatorer. Enligt min erfarenhet är QEMU stabilare än DOSBox. Det är dock lättare att komma igång med DOSBox efter som man slipper kompilera det. Man kan tillverka sin egen Windows 95-hårddiskavbild utgående från t.ex. en CD-ROM, men det är lite krångligt ty drivrutinerna måste fungera i emulatorerna. För att hitta en Windows 95 image som fungerar, googla på xda android.dosbox w95.img.

Den finns i en rar-fil så du måste installera unrar, vilket tyvärr är lite krångligt eftersom rar är ofri programvara och inte ingår som standard i Raspbian Debian Linux, se http://raspberrypi.stackexchange.com/questions/3617/how-to-install-unrar-nonfree. Jag bara avkommenterade en rad och ändrade inte innehållet i /etc/apt/sources.list. Nya rar-arkiv bör inte skapas eftersom formatet är ofritt och det finns bättre fria alternativ, t.ex. 7z.

Packa upp rar-filen som innehåller hårddiskavbilden med
unrar e W95.rar

Då får man W95.IMG som man kan byta namn på till t.ex. w95-1.img. MS-DOS/FreeDOS är dock inte skiftlägeskänsligt.

Installera DOSBox med
sudo apt-get install dosbox

Starta Windows 95 i Linux med
dosbox -c "mount d ~/Downloads" -c "d:" -c "imgmount a w95-1.img" -c "boot w95-1.img"

Man bör stänga av Windows som vanligt med Start-knappen. När det står att man kan stänga av datorn i rött på svart så stänger man DOSBox-fönstret. För att få DOSBox att släppa muspekaren kan man trycka AltGr+Enter två gånger. Detta togglar fullskärm, men skärmen blir inte större, men man får en svart ram.

För att lägga till och ta bort filer kan man montera imagen när man inte kör den med

sudo mount -t msdos -o loop,offset=32256 w95-1.img /mnt

Då får man korta filnamn, vilket är det enda DOSBox verkar klara. Vid behov får man byta filnamn inne i Windows med ren i MS-DOS eller Utforskaren.

ls /mnt
sudo mkdir /mnt/TRANSFER
sudo cp Exempel.class /mnt/TRANSFER/


(Java 1.0-kompatibla program kan köras med jview i denna version av Windows 95.)

När man har lagt till och tagit bort filer måste man avmontera:

sudo umount /mnt

Den inbyggda QEMU fungerar ej med Windows 95, men lär fungera med andra OS. Man måste själv kompilera, se http://www.raspberrypi.org/forums/viewtopic.php?f=75&t=13365 och http://www.raspberrypi.org/forums/viewtopic.php?f=62&t=10635&p=712848. Jag kompilerade och installerade QEmu så här:
unrar x qemudidi2.rar ; cd qemu ; chmod +x configure

./configure --target-list="i386-softmmu i386-linux-user" --enable-sdl --prefix=/usr --extra-cflags="-O3 -mfloat-abi=hard -mfpu=vfp -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -march=armv6zk" --audio-drv-list="alsa oss sdl pa"

make
sudo make install
cd ..

Man kan kopiera imagen/hårddiskavbilden med
cp w95-1.img w95-2.img

Starta QEMU med 32 MB RAM (8, 16, 24, 64, 128 fungerar också):
qemu w95-2.img -m 32
Man kan behöva köra detta kommando en gång till om det blir ett fel.

Om man maximerar och avdekorerar fönstret (tryck Alt+Space) samt slår på automatiskt dold panel (högerklicka på panelen, välj inställningar och avancerade fliken) så får man en fullskärmsupplevelse. Ctrl+Alt togglar inmatningen till Windows-fönstret. Man stänger av Windows 95 inifrån Windows, men QEMU stänger själv fönstret till skillnad från DOSBox.

QEmu verkar klara långa filnamn när man överför filer till imagen:

sudo mount -t vfat -o loop,offset=32256 w95-2.img /mnt

Efter överföringen så får man avmontera som vanligt. Efter att man använt VFAT så verkar man inte kunna använda hårddiskavbilden i DOSBox.

  • Kommentarer(0)//enradare.orbin.se/#post61

Ladda ner MagPi

Bash, Raspbian WheezySkapad av M.O.B. 2015-03-10 13:00
i=1; while [ $i -le 9 ]; do wget http://www.raspberrypi.org/magpi-issues/MagPi0$i.pdf; i=`expr $i + 1`; done; i=10; while [ $i -le 33 ]; do wget http://www.raspberrypi.org/magpi-issues/MagPi$i.pdf; i=`expr $i + 1`; done; wget http://www.raspberrypi.org/magpi-issues/MagPiSE1.pdf

Detta laddar ner tidningen The MagPi nr 1-33 plus specialutgåvan.

  • Kommentarer(0)//enradare.orbin.se/#post60

Installera Perl-modulen Tkx på Raspberry Pi

Bash, Raspbian WheezySkapad av M.O.B. 2015-02-28 21:44
Syftet med dessa rader är att installera Tkx i Raspbian på Raspberry Pi som tyvärr innehåller en bugg i denna miljö som dock kringgås här med Sed (installation av Tkx med vanliga CPAN i Ubuntu 14.04 LTS för x86-32 gick utan problem). CPANMinus drar dessutom mindre minne än CPAN. Jag ger som vanligt inga garantier och särskilt inte för http://cpanmin.us. Du måste köra i X när du installerar Tkx med cpanm, ty det gör självtest med fönster under installationen. Installationen går bra, men sedan fungerar inte sista raden eller programexempel.
sudo apt-get update && sudo apt-get install gcc-4.7 tcl8.5-dev
sudo curl -L http://cpanmin.us | perl - --sudo App::cpanminus
wget http://www.cpan.org/authors/id/V/VK/VKON/Tcl-1.02.tar.gz
tar xvf Tcl-1.02.tar.gz
cd Tcl-1.02/
perl Makefile.PL
sed -i 's|#include <tcl.h>|#include "tcl-core/include/tcl.h"|' Tcl.xs
make

sudo make install
sudo cpanm Tkx
cd ..
rm -rf Tcl-1.02

perl -MTkx -e 'print Tkx::info("patchlevel");'


  • Kommentarer(0)//enradare.orbin.se/#post59

Visa en topplista över skriptspråk på datorn

Bash, Raspbian WheezySkapad av M.O.B. 2015-02-27 22:20
Visar en topplista över skriptspråk på datorn, d.v.s. vad som kommer efter shebang (#!):
find / -type f -executable -exec grep -Il . {} \; 2> /dev/null | xargs -n1 head -1 | sed -n 's|#! *\([^ ]*\) *\([^- ]*\).*|\1 \2|p' | sort | uniq -c | sort -nr


Exempel från Raspbian på min Raspberry Pi:
2071 /bin/sh
132 /usr/bin/perl
97 /bin/bash
45 /usr/bin/python3.2
42 /usr/bin/env python
36 /usr/bin/python2.7
35 /usr/bin/python2.6
32 /usr/bin/python
18 /usr/bin/env ruby
18 /usr/bin/env perl
8 /usr/bin/python3
7 /usr/bin/ruby1.9.1
5 /usr/bin/install-menu
5 /usr/bin/env node
3 /usr/bin/env rake
2 /usr/bin/pypy
1 /usr/sh
1 /usr/local/bin/python
1 /usr/bin/ruby
1 /usr/bin/mawk
1 /usr/bin/env nickle
1 /bin/tcsh
1 /bin/sed


Totalt:
2170 Shell
201 Python
150 Perl


Exempel från Ubuntu 14.04 på min Lenovo 3000 N200:
4649 /bin/sh
615 /usr/bin/perl
339 /bin/bash
321 /usr/bin/python
151 /usr/bin/env python
112 /usr/bin/python3
57 /usr/bin/env python3
50 /usr/bin/env perl
32 /usr/bin/python2.7
27 /usr/bin/python3.4
12 /usr/bin/env texlua
7 /usr/bin/ruby1.9.1
4 /usr/bin/env python
3 /usr/bin/env ruby
2 /usr/bin/php
2 /usr/bin/make
2 /usr/bin/lua
2 /usr/bin/gforth
2 /usr/bin/awk
1 /usr/share/gforth/0.7.0/kernl32l.fi
1 /usr/sh
1 /usr/local/bin/python
1 /usr/local/bin/expect
1 /usr/bin/wish
1 /usr/bin/python
1 /usr/bin/mawk
1 /usr/bin/env wish
1 /usr/bin/env python2.7
1 /usr/bin/env nickle
1 /usr/bin/env bash
1 /bin/tcsh
1 /bin/sed


  • Kommentarer(0)//enradare.orbin.se/#post58

Byta mellan komposit video och olika HDMI-upplösningar

Bash, Raspbian WheezySkapad av M.O.B. 2015-02-23 00:43
Här finns 6 skalskript för Raspbian på Raspberry Pi för att byta mellan komposit video (PAL) och olika upplösningar på HDMI (VGA, SVGA, XGA, SXGA). Det visas ett roterande tigerhuvud och sedan måste man trycka Ctrl+C följt av Ctrl+Alt+F2 och Ctrl+Alt+F1 (eller Ctrl+Alt+F7 om kommandot körs från X Window System). Syftet är att kunna testa en aktiv HDMI till VGA-adapter och få bild på en skärm även om det inte fungerade från start. Det är lite underligt att man måste byta till en annan Ctrl+Alt+F1-F7-konsol än den man är på för att se en bild. Man måste först kompilera hello_tiger.bin och kan göra det enligt instruktionerna på http://www.raspberrypi.org/learning/demo-programs/, men detta fungerar också:
cd /opt/vc/src/hello_pi/hello_tiger/ ; make ; cd

pal.sh:
#!/bin/sh
tvservice -o
tvservice --sdtvon='PAL 4:3'
/opt/vc/src/hello_pi/hello_tiger/hello_tiger.bin

vga.sh:
#!/bin/sh
tvservice -o
tvservice --explicit='CEA 1 HDMI'
/opt/vc/src/hello_pi/hello_tiger/hello_tiger.bin

svga.sh:
#!/bin/sh
tvservice -o
tvservice --explicit='DMT 9 HDMI'
/opt/vc/src/hello_pi/hello_tiger/hello_tiger.bin


xga.sh:
#!/bin/sh
tvservice -o
tvservice --explicit='DMT 16 HDMI'
/opt/vc/src/hello_pi/hello_tiger/hello_tiger.bin


sxga.sh:
#!/bin/sh
tvservice -o
tvservice --explicit='DMT 35 HDMI'
/opt/vc/src/hello_pi/hello_tiger/hello_tiger.bin


ntsc.sh
#!/bin/sh
tvservice -o
tvservice --sdtvon='NTSC 4:3'
/opt/vc/src/hello_pi/hello_tiger/hello_tiger.bin


  • Kommentarer(0)//enradare.orbin.se/#post57

Enbildstagning med en webbkamera

Bash, Raspbian WheezySkapad av M.O.B. 2015-01-25 00:38
Jag har två webbkameror kopplade till en Raspberry Pi som tar enbildstagning och det fungerar bra om man använder lägre upplösning än den maximala för vissa kameror. Visserligen kraschar kamerorna ibland, men då startas hela systemet om och därefter fungerar den felande kameran igen. Jag tror detta är ett bra projekt för att visa nyttan med RPi, ty Raspbian har drivrutiner för de flesta tillbehör till skillnad från t.ex. Android. Många har en massa gamla webbkameror hemma som kan komma till nytta igen. Det står här om hur man använder en webbkamera från Raspberry Pi:
http://www.raspberrypi.org/learning/webcam-timelapse-setup/
Det är dock inte så enkelt som det verkar med de webbkameror jag provat eftersom man oftast får palettfel och att Raspberry Pi med ARM-processor inte verkar ha samma kapacitet att ta emot högupplösta bilder som en laptop-PC med en Intel-processor. USB verkar också vara långsammare på Raspberry Pi än på en PC. Problemen med webbkameror och Raspberry Pi kan också bero på strömförsörjning, men jag har en strömförsörjd USB-hubb så det borde fungera. Först testar jag kamerorna i operativsystemet Ubuntu 14.04 LTS Linux på en laptop-PC och därefter i Raspbian på Raspberry Pi. Även i Ubuntu måste man ladda in bibliotek som sköter bl.a. palettkonvertering och det lär bero på att webbkamerorna är gamla. Längst ner i inlägget finns skript för att ta enbildstagning varje minut som laddas upp till ett webbhotell, göra filmer och hämta dessa från annan dator. Namnen på webbkamerorna kommer från kommandot lsusb och är oftast inte samma som står på förpackningen.

Ubuntu 14.04:
STMicroelectronics Imaging Division (VLSI Vision) Aiptek PenCam 1:
gvfs-mount -s gphoto2; sleep 10; LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video1 -i 0 --jpeg 95 -S 5 -r 352x292 test.jpg
Works!
gvfs-mount -s gphoto2; sleep 10; vgrabbj -d /dev/video1 -w 352 -H 292 -D 7 -f test.jpg
Works!

Microdia Sweex Mini Webcam
LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video1 -i 0 --jpeg 95 -S 20 -r 352x288 test.jpg
Works!
vgrabbj -d /dev/video1 -i cif -z 20 -D 7 -f test.jpg
Works!

Pixart Imaging, Inc. Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A:
gvfs-mount -s gphoto2; sleep 10; LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video1 -i 0 --jpeg 95 -S 2 -r 352x288 test.jpg
Works!
gvfs-mount -s gphoto2; sleep 10; vgrabbj -d /dev/video1 -i cif -D 7 -f test.jpg
Works!

Pixart Imaging, Inc. Q-TEC WEBCAM 100:
LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video1 -i 0 --jpeg 95 -S 2 -r 352x288 test.jpg
Works!
vgrabbj -d /dev/video1 -i cif -D 7 -f test.jpg
Works!

Chicony Electronics Co., Ltd USB 2.0 Camera (built-in to laptop):
fswebcam -d v4l2:/dev/video0 -i 0 --jpeg 95 -S 20 -r 1280x1024 test.jpg
Works!
vgrabbj -d /dev/video0 -i sxga -z 20 -D 7 -f test.jpg
Works!

Raspbian Wheezy:
STMicroelectronics Imaging Division (VLSI Vision) Aiptek PenCam 1:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video0 -i 0 --jpeg 95 -S 5 -r 352x292 test.jpg
Works!
vgrabbj -d /dev/video0 -w 352 -H 292 -D 7 -f test.jpg
Works!

Microdia Sweex Mini Webcam:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video0 -i 0 --jpeg 95 -S 40 -r 352x288 test.jpg
Works, but better for lower resolutions.
vgrabbj -d /dev/video0 -i sif -z 20 -D 7 -f test.jpg
Works!

Pixart Imaging, Inc. Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l2convert.so fswebcam -d v4l2:/dev/video0 -i 0 --jpeg 95 -S 20 -r 352x288 test.jpg
Works, but gray.
vgrabbj -d /dev/video0 -i cif -z 20 -D 7 -f test.jpg
Works, but gray.

Pixart Imaging, Inc. Q-TEC WEBCAM 100:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so fswebcam -d v4l1:/dev/video0 -i 0 --jpeg 95 -S 20 -F 2 -r 176x144 test.jpg
Works, but necessary skipping leads to:
"Error synchronising with buffer 0.
VIDIOCSYNC: Resource temporarily unavailable".
vgrabbj -d /dev/video0 -i qcif -z 20 -D 7 -f test.jpg
Works!

Script camera.sh running using crontab:
#!/bin/sh
PREFIX=/home/pi/camera
DATE=$(date +"%Y-%m-%d_%H%M")
vgrabbj -d /dev/video1 -w 352 -H 292 -z 5 -D 0 -f $PREFIX/pencam1_$DATE.jpg
vgrabbj -d /dev/video0 -i qcif -z 20 -D 0 -f $PREFIX/miniwebcam_$DATE.jpg
curl -T "$PREFIX/{pencam1,miniwebcam}_$DATE.jpg" ftp://ftp.mysite.se/mydir/ --user myusername:mypassword
if [ ! -s $PREFIX/pencam1_$DATE.jpg -o ! -s $PREFIX/miniwebcam_$DATE.jpg ] ; then /sbin/reboot ; fi
# End of camera.sh


Making movies in Raspbian Wheezy on Raspberry Pi:
find . -name 'pencam1_*' -empty | xargs rm -f
ls pencam1_*.jpg > pencam1_stills.txt
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=88/73:vbitrate=8000000 -vf scale=352:292 -o pencam1_timelapse.avi -mf type=jpeg:fps=24 mf://@pencam1_stills.txt


find . -name 'miniwebcam_*' -empty | xargs rm -f
ls miniwebcam_*.jpg > miniwebcam_stills.txt
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=11/9:vbitrate=8000000 -vf scale=176:144 -o miniwebcam_timelapse.avi -mf type=jpeg:fps=24 mf://@miniwebcam_stills.txt


Making movies in Ubuntu MATE on Raspberry Pi:
find . -name 'pencam1_*' -empty | xargs rm -f
rm pencam1_stills.txt; for f in pencam1_*.jpg; do echo "file $f" >> pencam1_stills.txt; done
ffmpeg -r 24 -f concat -i pencam1_stills.txt -r 24 -vcodec libx264 -crf 20 -g 15 -vf scale=352:292 pencam1_timelapse.mp4


find . -name 'miniwebcam_*' -empty | xargs rm -f
rm miniwebcam_stills.txt; for f in miniwebcam_*.jpg; do echo "file $f" >> miniwebcam_stills.txt; done
ffmpeg -r 24 -f concat -i miniwebcam_stills.txt -r 24 -vcodec libx264 -crf 20 -g 15 -vf scale=176:144 miniwebcam_timelapse.mp4

Download, using other Linux-computer, from Raspberry Pi:
scp pi@dojopi1.local:camera/pencam1_timelapse.avi .
scp pi@dojopi1.local:camera/pencam1_stills.txt .
scp pi@dojopi1.local:camera/miniwebcam_timelapse.avi .
scp pi@dojopi1.local:camera/miniwebcam_stills.txt .
ssh pi@aeblapi1.local 'rm -f camera/*.avi'

Om du ser något anmärkningsvärt i videon så kan du hitta ungefär rätt bild bland stillbilderna genom att t.ex. beräkna hur många procent händelsetiden är av den totala tiden och hitta radnumret i textfilen med stillbilderna med samma procentsats.

  • Kommentarer(0)//enradare.orbin.se/#post56

Gör alla möjliga skyltar med ASCII-konst

Bash, Ubuntu 14.04Skapad av M.O.B. 2014-10-05 14:53

ls /usr/share/figlet/ | sed 's/\..*//' | while read font; do toilet -F list | sed -n '/"/ {s/"\(.*\)".*/\1/;p}' | while read filter; do toilet -f $font -F $filter Orbin 2> /dev/null; done; done

Visar texten "Orbin" som skylttext med alla typsnitt och filter. Idé från https://www.linux.com/learn/tutorials/790121-assorted-fun-linux-command-line-hacks.



  • Kommentarer(0)//enradare.orbin.se/#post55

Visa installerade Perl-moduler

Bash, Ubuntu 12.04Skapad av M.O.B. 2014-06-20 18:11
perl -E'use Module::CoreList;print join("\n",Module::CoreList->find_modules(qr/.*/))."\n"'

  • Kommentarer(0)//enradare.orbin.se/#post54

Installera VICE i Ubuntu Linux

Bash, Ubuntu 12.04Skapad av M.O.B. 2014-06-02 01:51
VICE emulerar CMB:s datorer med 6502/6510-processorer, t.ex. PET, VIC20, Commodore 64 (ä.k. VIC64/C64) och Commodore 128 (ä.k. C128) inklusive dess Z80-processor för CP/M-operativsystemet.

sudo apt-get install vice; wget http://www.zimmers.net/anonftp/pub/cbm/crossplatform/emulators/VICE/vice-2.3.tar.gz; tar xvf vice-2.3.tar.gz; cd vice-2.3/data; find . -name '*' -not -name '*.*' | sed 's|\.\/\(.*\)|sudo cp \1 /usr/lib/vice/\1|' > run.sh; . run.sh; cd ../..; rm -r vice-2.3; rm vice-2.3.tar.gz

Detta kan och bör optimeras i framtiden eftersom vi bara behöver extrahera de filer vi använder direkt till det ställe där de skall lagras.

På denna webbplats finns en guide i hur man programmerar 6502-assembler på C64:
http://digitalerr0r.wordpress.com/category/commodore-64/

Då används Dasm, t.ex.
./dasm.Linux.x86 test.asm -otest.prg -v3



  • Kommentarer(0)//enradare.orbin.se/#post53

Ladda ner och extrahera en zip-fil utan att mellanlagra

Bash, Ubuntu 10.04Skapad av M.O.B. 2014-05-04 18:08
wget -qO- http://packages.riscosopen.org/RISC-OS_Pico.zip | bsdtar -xvf- -C /media/riscospico/
Detta laddar ner och packar upp zip-filen på ett SD-kort anslutet via en adapter. Notera att SD-kortet i mitt fall heter /media/... men troligen heter något annat hos dig.

Om SD-kortet inte redan är formaterat så gör detta först:
sudo fdisk -l
För att hitta rätt enhet genom att t.ex. känna igen den på storleken.

Obs! Byt ut sde mot rätt enhet.
umount /dev/sde
sudo mkdosfs -n riscospico -F 32 -I /dev/sde
I mitt fall tog jag ut USB-adaptern och satte in den igen för att montera den.

  • Kommentarer(0)//enradare.orbin.se/#post52

Uppdatera översättning i Scratch 2 offlineredigeraren

Bash, Ubuntu 10.04Skapad av M.O.B. 2014-02-25 09:12

curl -L -o editor.po http://translate.scratch.mit.edu/download/sv/editor/editor.po ; curl -L -o blocks.po http://translate.scratch.mit.edu/download/sv/blocks/blocks.po ; sudo cat blocks.po editor.po > '/opt/Scratch 2/share/locale/sv.po'


Detta uppdaterar översättningen av Scratch 2 offlineredigeraren i Linux. Tag först backup av den ursprungliga sv.po med:
cp '/opt/Scratch 2/share/locale/sv.po' sv.po

Byt språkkoden sv mot valfri annan språkkod.

  • Kommentarer(0)//enradare.orbin.se/#post51

Sök efter text i pdf-filer

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-12-11 22:30
find . -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep -H --label="{}" --color -i "RISC"' \; 2> /dev/null

Denna rad hittar texten RISC/risc/Risc o.s.v. bland alla pdf-filer.

  • Kommentarer(0)//enradare.orbin.se/#post50

Hämta Scratch 2-projekt

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-10-02 01:06

proj=12612306; mkdir sb2tmp; cd sb2tmp; curl -L http://projects.scratch.mit.edu/internalapi/project/$proj/get/ 2> /dev/null | tee project.json | grep -i MD5 | cut -d' ' -f2 | sed 's/[\",]//g' | while read file; do curl -L -o $file http://scratch.mit.edu/internalapi/asset/$file/get 2> /dev/null; done; i=1; while [ $i -le `expr $( ls -1 | wc -l ) - 2` ]; do sed -i "{s/ID\": -1/ID\": $i/;t end;b;:end;n;b end}" project.json; i=`expr $i + 1`; done; i=0; ( grep penLayerMD5 project.json; grep '\(baseLayerMD5\|md5\)' project.json ) | cut -d' ' -f2 | sed 's/[",]//g' | while read file; do ext=`echo $file | cut -d. -f2`; mv $file $i.$ext; i=`expr $i + 1`; done; zip $proj.sb2 *; mv *.sb2 ..; cd ..; rm -r sb2tmp

Detta hämtar ett Scratch 2-projekt (sb2-fil) med det angivna numret. Notera att detta ej fungerar för Scratch 1.4-projekt, men för dem finns en enklare lösning, se annat inlägg.

Man kan också hämta ner alla projekten i en studio:

studio=263477; curl -L http://scratch.mit.edu/site-api/projects/in/$studio/1/ 2> /dev/null | sed -n '/title.*projects\/[0-9]*/ {s/.*projects\/\([0-9]*\).*/\1/;p}' | while read proj; do echo $proj; mkdir sb2tmp; cd sb2tmp; curl -L http://projects.scratch.mit.edu/internalapi/project/$proj/get/ 2> /dev/null | tee project.json | grep -i MD5 | cut -d' ' -f2 | sed 's/[\",]//g' | while read file; do curl -L -o $file http://scratch.mit.edu/internalapi/asset/$file/get 2> /dev/null; done; i=1; while [ $i -le `expr $( ls -1 | wc -l ) - 2` ]; do sed -i "{s/ID\": -1/ID\": $i/;t end;b;:end;n;b end}" project.json; i=`expr $i + 1`; done; i=0; ( grep penLayerMD5 project.json; grep '\(baseLayerMD5\|md5\)' project.json ) | cut -d' ' -f2 | sed 's/[",]//g' | while read file; do ext=`echo $file | cut -d. -f2`; mv $file $i.$ext; i=`expr $i + 1`; done; zip $proj.sb2 * > /dev/null; mv *.sb2 ..; cd ..; rm -r sb2tmp; done

  • Kommentarer(0)//enradare.orbin.se/#post49

Hämta Scratch 1.4-projekt

Bash, Ubuntu 12.04Skapad av M.O.B. 2013-09-29 01:10

proj=12766255;wget -O $proj.sb http://projects.scratch.mit.edu/internalapi/project/$proj/get/


Detta hämtar ett Scratch 1.4-projekt (sb-fil) med det angivna numret. Notera att detta ej fungerar för Scratch 2-projekt. Här är en version med cURL som lär fungera på Mac OS X:

proj=12766255;curl -L -o $proj.sb http://projects.scratch.mit.edu/internalapi/project/$proj/get/


Följande hämtar ner alla projekt i en studio:

curl -L http://scratch.mit.edu/site-api/projects/in/244489/1/ 2> /dev/null | sed -n 's|.*data-id=\"\([0-9]*\)\".*|\1|p' | while read proj; do curl -L -o $proj.sb http://projects.scratch.mit.edu/internalapi/project/$proj/get/; done


Detta raderar alla filer i en katalog som inte är binärfiler, d.v.s. icke Scratch 1.4-projekt:

file * | sed -n '/:.*data/! {s/:.*//p}' | xargs rm

  • Kommentarer(0)//enradare.orbin.se/#post48

Totala speltiden för en samling mp3-filer

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-09-11 01:20
mp3info -p "%S\n" *.mp3 | awk '{s+=$1} END {s/=3600; print s}'

Detta visar den totala speltiden i timmar på decimalform för alla mp3-filer i aktuell mapp.



  • Kommentarer(0)//enradare.orbin.se/#post47

Sortera mp3-filer efter längd

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-09-07 23:54

mp3info -p "%f;%S\n" Music/A\ Masterpiece\ Collection/*.mp3 | sort -t';' -k2nr

Lista mp3-filer sorterade efter längd på ljudet med längsta först.

  • Kommentarer(0)//enradare.orbin.se/#post46

Skapa default.html automatiskt där index.* inte existerar

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-06-29 21:36

mypwd=$(pwd); cat dirswoindex.txt | while read dir; do echo "$mypwd/$dir"; cd "$mypwd/$dir"; ls -1ap | sed 's|\(^.*$\)|<a href=\"\1\"\>\1</a><br>|' > default.html ; mv default.html b_i ; echo '<!DOCTYPE HTML SYSTEM "about:legacy-compat"><html><head></head><body>' > h_i ; echo '</body></html>' > t_i ; cat h_i b_i t_i > default.html ; rm h_i b_i t_i ; done

Syftet är att man skall kunna surfa runt i filhierarkin trots att man inte har en webbserver som automatiskt genererar index-filer (innehållsförteckningar). Det finns en bugg i Ubuntu när man har monterat FTP-servrar som lokala filsystem som yttrar sig i att lägg till (>>) inte fungerar. Därför kringgår jag den buggen genom att skapa flera filer och slå ihop dem och sedan radera beståndsdelarna. Ovanstående är sista steget och föregås av:

awk 'NR==FNR{l[$0];next;} !(FNR in l)' lines.txt dirs.txt > dirswoindex.txt

Syftet med ovanstående rad är att ta bort de rader ur en fil (dirs.txt) som finns numrerade i en annan fil (lines.txt).

cat dirswindex.txt | while read dir; do grep -n "^$dir$" dirs.txt; done | sed 's|:.*$||' | sort -n | uniq > lines.txt

Ovanstående rad genererar radnummer för de rader som finns i en annan fil (dirswindex.txt) vars rader skall tas bort ur huvudfilen (dirs.txt).

find . -type d -name '*' | sort > dirs.txt

Ovanstående rad genererar en fil med alla underkataloger och är den fil ur vilken rader skall tas bort.

find . -name 'index.*' | sort | sed 's|/index\..*||' > dirswindex.txt

Ovanstående rad genererar en fil med alla underkataloger som innehåller t.ex. index.html, index.htm eller index.php.

  • Kommentarer(0)//enradare.orbin.se/#post45

Hitta alla större filer & visa sorterat

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-05-24 13:42

find /media/SEA_FAT32/ -size +512M 2> /dev/null | sed 's/\(.*\)/"\1"/' | xargs ls -l | sort -k5nr | cut -d' ' -f5- | less

Hittar alla filer på en enhet som är större än 0,5 GB och visar dem i fallande storleksordning.

  • Kommentarer(0)//enradare.orbin.se/#post44

Starta terminalemulering mot en serieport

Bash, Kubuntu 8.04Skapad av M.O.B. 2013-02-24 20:02
sudo minicom -o -D /dev/ttyACM0

Startar minicom, ett terminalemuleringsprogram för serieportar. Detta fungerar t.ex. för DuinoMite-Mini via USB-porten. Kolla med dmesg vilken device som serieporten hamnar på.

  • Kommentarer(0)//enradare.orbin.se/#post43

Visa komposit video live

Bash, Raspbian JessieSkapad av M.O.B. 2013-02-24 19:36
vlc v4l2:///dev/video0:input=1:width=720:height=576

Startar VLC med live-visning av PAL komposit-video med hjälp av EasyGrabber (AGK Model: 10195, chipset: em2860) via USB. Alternativ för ansluten C64 (C64C):

mplayer tv:// -tv device=/dev/video0:input=1:width=720:height=576:fps=5 -hardframedrop -msglevel all=6 -vf crop=690:552:10:0 -zoom -vo x11 -fs


Tyvärr fungerar ljudet ej och bilden flimrar lite.

Man kan spela in bilden, men detta exempel är för Ubuntu 12.04 (Elementary OS Luna):

mencoder tv:// -tv driver=v4l2:norm=PAL:device=/dev/video1:input=1:width=720:height=576:outfmt=uyvy:fps=25:alsa:amode=1:forcechan=2:audiorate=48000:adevice=hw.1,0:forceaudio:immediatemode=0 -ffourcc DX50 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=1200:keyint=100 -oac mp3lame -lameopts cbr:br=128 -msglevel all=6 -vf pp=lb,crop=690:552:10:0 -o test.avi
Från http://easycap.blogspot.se/.

  • Kommentarer(0)//enradare.orbin.se/#post42

Flasha en DuinoMite-Mini med ny firmware

Bash, Kubuntu 8.04Skapad av M.O.B. 2013-02-16 19:58
sudo mphidflash -v 15BA -p 0032 -r -n -w Olimex\ DuinoMite\ Mega\ MMBasic\ Project.hex

Detta flashar en DuinoMite-Mini med en ny version av DMBASIC eller MMBASIC. Innan detta måste man koppla in DuinoMite-Mini:n till Linux-datorn via USB och hålla ned användarknappen samtidigt som man trycker på resetknappen, d.v.s. User+Reset, där User fungerar som en skiftknapp. Då blinkar de gula och gröna lysdioderna omväxlande.

  • Kommentarer(0)//enradare.orbin.se/#post41

Hitta alla IP-nummer som hämtat fil & sortera efter åtkomstdatum

Bash, Kubuntu 8.04Skapad av M.O.B. 2013-01-09 23:33
zgrep 'special\.pdf' /var/log/apache2/access.log* | sed -r 's/.*:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*(\[.*\]).*/\2 \1/' | sort -k3n,3 -k2M,2 -t'/'

De IP-nummer som hämtat en viss fil på webbservern hittas. Loggfilen finns på olika ställen på olika servrar och äldre loggar brukar komprimeras och då behövs zgrep. Olika webbservrar ger olika loggfiler och därför måste enradaren anpassas.

  • Kommentarer(0)//enradare.orbin.se/#post40

Sök i alla zip-filer i en mapp efter ett filnamn

Bash, Kubuntu 8.04Skapad av M.O.B. 2013-01-05 02:53
ls *.zip | while read file; do unzip -l "$file" | grep 'zx81.*\.rom' && echo $file; done

I detta fall hittas filer med namn som börjar på 'zx81' och slutar på '.rom' i samtliga zip-filer i aktuell katalog och zip-filens namn skrivs ut efter de funna filerna inom respektive zip-fil.

  • Kommentarer(0)//enradare.orbin.se/#post39

Spegelvända bilder i en mapp

Bash, Kubuntu 8.04Skapad av M.O.B. 2012-07-26 04:16

ls -tr | while read file; do convert $file -flop $file; done

Bilderna spegelvänds i samma tidsordning som de modifierades senast.

  • Kommentarer(0)//enradare.orbin.se/#post38

Ladda upp en fil till en SSH-server och radera filen

Bash, Kubuntu 8.04Skapad av M.O.B. 2012-07-23 16:56

scp muzak.wav myusername@mywebsite.se:public_html/abc/80/

Denna rad laddar upp en fil till en SSH-server och med följande raderar man filen:

ssh myusername@mywebsite.se 'rm -f public_html/abc/80/muzak.wav'

Lösenordet får man skriva för hand, men man kan skicka flera filer samtidigt eller ett arkiv som man packar upp.

  • Kommentarer(0)//enradare.orbin.se/#post37

Ladda upp en fil till en FTP-server och radera filen

Bash, Kubuntu 8.04Skapad av M.O.B. 2012-07-23 15:58

curl -T muzak.wav ftp://ftp.mywebsite.se/dl/ --user myusername:mypassword

Denna rad laddar upp en fil till en FTP-server. För att radera filen kan man använda:

curl ftp://ftp.mywebsite.se/dl/ -X 'DELE muzak.wav' --user myusername:mypassword

  • Kommentarer(0)//enradare.orbin.se/#post36

Konvertera ZX FORTH-skärmar till textfiler

zsh, Fedora 7Skapad av M.O.B. 2012-07-21 01:45

i=1; while [ $i -le 9 ]; do fold -w 64 ramdisc0$i.zx4th > ramdisc0$i.zx4th.txt; i=`expr $i + 1`; done

Gör så att Forth-skärmar (screens) för programspråket ZX FORTH kan läsas som textfiler genom att lägga in radbrytningar efter var 64:e tecken i den ursprungliga filen. Här omvandlas 9 filer, numrerade 01-09.

  • Kommentarer(0)//enradare.orbin.se/#post35

Ändra filtyp men behåll den gamla m.h.a. symboliska länkar

zsh, Fedora 7Skapad av M.O.B. 2012-05-19 20:11

rename 's/\.82u$/\.txt/' *.82u; ls -1 *.txt | sed 's/\.txt$//' | while read file; do ln -s $file'.txt' $file'.82u'; done

Ändrar filtyp på alla filer i en katalog men behåller den gamla m.h.a. symboliska länkar för att externa http-länkar skall fortsätta att fungera.

  • Kommentarer(0)//enradare.orbin.se/#post34

Ladda ner alla mp3-filerna till böckerna Fysik Lpo & Kemi Lpo

Bash, Kubuntu 8.04Skapad av M.O.B. 2012-05-01 22:54
sed '/\.mp3/!d;s|.*href=\"\(\./mp3/.*\.mp3\)\".*|curl -O \"http://www.tefy.se/\1\"|' ../mp3_fysik_lpo1.htm > curl.sh; . curl.sh

sed '/\.mp3/!d;s|.*href=\"\(\./mp3/.*\.mp3\)\".*|curl -O \"http://www.tefy.se/\1\"|' ../mp3_fysik_lpo2.htm > curl.sh; . curl.sh

sed '/\.mp3/!d;s|.*href=\"\(\./mp3/.*\.mp3\)\".*|curl -O \"http://www.tefy.se/\1\"|' ../mp3_fysik_lpo3.htm > curl.sh; . curl.sh

sed '/\.mp3/!d;s|.*href=\"\(\./mp3/.*\.mp3\)\".*|curl -O \"http://www.tefy.se/\1\"|' ../mp3_kemi_lpo1.htm > curl.sh; . curl.sh

sed '/\.mp3/!d;s|.*href=\"\(\./mp3/.*\.mp3\)\".*|curl -O \"http://www.tefy.se/\1\"|' ../mp3_kemi_lpo2.htm > curl.sh; . curl.sh

sed '/\.mp3/!d;s|.*href=\"\(\./mp3/.*\.mp3\)\".*|curl -O \"http://www.tefy.se/\1\"|' ../mp3_kemi_lpo3.htm > curl.sh; . curl.sh

Man kan hämta ner alla mp3-filer till böckerna Fysik Lpo och Kemi Lpo om man har sparat HTML-filen i katalogen ovanför katalogen mp3 som man skall stå i. Man kan hämta en HTML-fil med t.ex. kommandot:

curl -O http://www.tefy.se/mp3_fysik_lpo[1-3].htm

curl -O http://www.tefy.se/mp3_kemi_lpo[1-3].htm

Man måste öppna HTML-filerna för redigering i SeaMonkey och göra en liten ändring som man återställer och spara dem innan man kör enradarna. Resultatet av SeaMonkey-operationen är att ÅÄÖ & åäö byts ut mot HTML-entities: t.ex. &Aring;. Detta behövs eftersom Sed ej verkar klara ÅÄÖ & åäö i den teckenkodning som filerna använder.

  • Kommentarer(0)//enradare.orbin.se/#post33

Skanna dubbelsidiga pappershögar med enkelsidig skanner

Bash, Kubuntu 8.04Skapad av M.O.B. 2011-11-22 20:14
pdftk A=mbvim101.pdf B=mbvim102.pdf cat $(i=1; while [ $i -le 11 ]; do echo -n "A$i B`expr 11 + 1 - $i` "; i=`expr $i + 1`; done) output lsg-mbvim1.pdf

Min skanner med arkmatare (Brother MFC-5840CN) kan bara skanna enkelsidigt, men jag vill skanna en hög med 11 blad dubbelsidiga papper till ett dokument. Framsidorna av högen med papper finns skannade i filen mbvim101.pdf. Baksidorna av samma hög finns skannade med sista sidan först i filen mbvim102.pdf (det blir så automatiskt om man bara vänder på högen). Med enradaren ovan så sätts filerna ihop till en pdf-fil med rätt ordning på sidorna. Man kan ändra 11 i raden ovan (på två ställen) till antalet ark för att anpassa till sin egen hög med papper. Det går att få reda på antalet sidor med pdftk så även inmatningen av antalet ark kan automatiseras.

  • Kommentarer(0)//enradare.orbin.se/#post32

Ladda ner samtliga numrerade webbsidor

Bash, Kubuntu 8.04Skapad av M.O.B. 2010-09-22 20:32
i=0; while [ $i -le 289 ]; do curl http://partiintresserade.se/?page=$i > PI$i.html; i=`expr $i + 1`; done
Raden hämtar ner samtliga sidor mellan 0 och 289 från webbplatsen och sparar dem i HTML-filer. Programmet kan t.ex. användas för att inhämta data för undersökande journalistik samt för samhällsvetenskaplig och historisk forskning.

  • Kommentarer(0)//enradare.orbin.se/#post31

Ladda ner pdf-filer länkade från HTML-fil

Bash, Kubuntu 8.04Skapad av M.O.B. 2010-08-03 22:55
sed '/\.pdf/!d;s|.*=\"\(.*pdf\)\".*|curl -O \"http://www.ciberdigital.net/books/\1\"|' Index_of_books.html > curl.sh ; . curl.sh

  • Kommentarer(0)//enradare.orbin.se/#post30

Köra PHP-servlet från kommandoraden

Bash, Kubuntu 8.04Skapad av M.O.B. 2009-06-15 22:07
php -r '$_GET[cmd]=718750; $_GET[pid]=2; include "DriveReporterServlet.php";'
Att köra problematiska PHP-skript i terminalfönstret i stället för på webbservern ger bättre felmeddelanden.

  • Kommentarer(0)//enradare.orbin.se/#post29

Sök och ersätt HTML-kod i alla filer

zsh, Fedora 7Skapad av M.O.B. 2009-03-25 14:37
find . -name '*.html' | xargs -n 1 sed -i '/counter-ord-lang/ {N;s|<P><FONT.*</FONT></P>|<!-- counter-ord-lang -->|}'
Jag hade en besöksräknare som inte längre fungerade och som jag ville ta bort från alla webbsidor. HTML-koden som skulle bytas ut spände som mest över två rader.

  • Kommentarer(0)//enradare.orbin.se/#post28

Strömmande backup av konto

Bash, Kubuntu 8.04Skapad av M.O.B. 2009-03-11 10:03
ssh login@dator.domän.se "tar cf - ~/" | gzip -9 > backup.tar.gz
Denna rad gör säkerhetskopiering på ett helt konto på en annan dator utan att mellanlagra något i en temporärfil. Resultatet blir en packad fil på den lokala datorn. Fjärrdatorn kan ha Linux eller Solaris.

  • Kommentarer(0)//enradare.orbin.se/#post27

Läsa av säkringar på Atmel AVR mikrokontroller

Bash, Kubuntu 8.04Skapad av M.O.B. 2009-03-08 15:22
För STK500:
avrdude -c stk500v2 -p m8515 -P /dev/ttyUSB0 -U hfuse:r:h-fuse.txt:r -U lfuse:r:l-fuse.txt:r

För USB-ASP:
sudo avrdude -c usbasp -p m88 -U hfuse:r:h-fuse.txt:r -U lfuse:r:l-fuse.txt:r -U efuse:r:e-fuse.txt:r

Ovanstående rader för respektive mikrokontrollerprogrammerare lagrar säkringsvärdena i filer som måste tolkas med:
od -d h-fuse.txt | head -1 | sed -e 's/0000000 *//' | xargs -i perl -e '$str= unpack("B32", pack("N",{})); $str =~ s/.*([01]{4})([01]{4})$/$1 $2/; print "$str\n";'
(AVR Fuses HOWTO Guide)

Alternativt för STK500:
avrdude -vv -c stk500v2 -p m8515 -P /dev/ttyUSB0 -F

Alternativt för USB-ASP:
sudo avrdude -vv -c usbasp -p m88

Här får man säkringsvärdena i hexadecimalt i slutet av en längre text.

  • Kommentarer(0)//enradare.orbin.se/#post26

Koda om en textfil

Bash, Kubuntu 8.04Skapad av M.O.B. 2008-06-18 08:42
sed -n 's/\([^ ]*\)\( *\)/"\1";/;/^"[A-Z][^e]/h;/@/G;/@/p' riksdagen.txt|sed 'N;s/\n//;s/;$//' > riksdagen2.txt
Koda om en textfil med e-postadresser och med rubriker med organisationsnamn så att den kan importeras av MySQL.

  • Kommentarer(0)//enradare.orbin.se/#post25

Skapa jar-fil med hårddiskavbild men utan manifest

Bash, Kubuntu 8.04Skapad av M.O.B. 2008-06-16 11:38
jar cvfM dos_pascal.jar dos_pascal.img
Denna rad skapar en jar-fil (Java archive) med en hårddiskavbild men utan manifest. Det är precis vad JPC.jar eller JPCApplet.jar (bantad JPC) behöver för att ladda hårddiskavbilden.

  • Kommentarer(0)//enradare.orbin.se/#post24

Förkorta hårddiskavbilden

Bash, Kubuntu 8.04Skapad av M.O.B. 2008-06-16 11:31
dd if=dos_pascal.img of=dos_pascal2.img bs=4096 count=512
Syftet med denna rad är att förkorta hårddiskavbilden för att spara minne vid körning. Om man först gjort defrag med full optimization i JPC (Java PC-emulator) på hårddiskavbilden och sedan chkdsk, så vet man hur mycket man kan förkorta filen. Sätt bs till klusterstorleken. Tänk på att sätta count något större än minimalt så att utrymme finns för temporära filer.

  • Kommentarer(0)//enradare.orbin.se/#post23

Skapa en tom hårddiskavbild

Bash, Kubuntu 8.04Skapad av M.O.B. 2008-06-15 17:29
dd if=/dev/zero of=dos_pascal.img bs=1MB count=5
Denna rad används för att skapa en tom hårddiskavbild på 5 MB (5000000 B). Avbilden kan sedan fyllas med filer innefrån Java PC-emulatorn.

  • Kommentarer(0)//enradare.orbin.se/#post22

Starta Java PC-emulator med DOS

Bash, Kubuntu 8.04Skapad av M.O.B. 2008-06-15 15:01
/usr/local/jdk1.6.0_06/bin/java -jar Downloads/JPC.jar -fda mem:floppy.img -hda dosprog.img -hdb dir:dosprog -boot fda
Denna rad startar Java PC-emulatorn med den inbyggda FreeDOS 1.1 på A:. C: motsvaras av en hårddiskavbild, och D: motsvaras av en katalog. Syftet är att preparera hårddiskavbilden genom att kopiera filer från katalogen.

  • Kommentarer(0)//enradare.orbin.se/#post21

Korrigera fil skapad av HTTP::Recorder så att den kan användas av WWW::Mechanize

Bash, Kubuntu 8.04Skapad av M.O.B. 2008-04-24 18:44
sed -i '//s//\\xa0/g;/\\xa0/s/'\''/"/g' MKBTest.pl
Denna byter ut mot \xa0 ty WWW::Mechanize kräver detta. Sedan gör den om enkelcitat till dubbel för de redigerade raderna eftersom escape bara fungerar med dubbelcitat. Följande gör det omvända:
sed -i '/\\xa0/s/\\xa0/\/g;//s/"/'\''/g' MKBTest.pl

  • Kommentarer(0)//enradare.orbin.se/#post20

Skapa bat-fil för att ladda ner filmer

Kommandotolken, Windows VistaSkapad av M.O.B. 2008-04-07 20:54
"../gsed407x/sed" "/220k\.rm/!d;s|.*\(ocw.*rm\).*|curl -O http://ocw.mit.edu/ans7870/8/8.03/f04/video/\1|" ../MITPhysics8_03Vibrations.htm >curl8_03.bat
Man måste först installera gsed för att generera bat-filen i Windows Vista Kommandotolken och curl för att köra den.

  • Kommentarer(0)//enradare.orbin.se/#post19

Skapa en länkstruktur

Bash, Fedora 7Skapad av M.O.B. 2008-03-12 14:55
dirs=`find mkb -type f | sed 's|^mkb||'`; for dir in $dirs; do ln -sf '/usr/local/mkb'$dir 'mkb2'$dir; done
Detta förutsätter att katalogstrukturen redan är skapad med t.ex.:
dirs=`find mkb -type d| sed 's|^mkb|mkb2|'`; for dir in $dirs; do mkdir $dir; done

  • Kommentarer(0)//enradare.orbin.se/#post18

Radera alla backupfiler i en katalog med underkataloger

Bash, Fedora 7Skapad av M.O.B. 2008-02-20 14:27
find mkb -name '*~' -type f| xargs rm

  • Kommentarer(0)//enradare.orbin.se/#post17

Packa upp backup

zsh, Solaris 9Skapad av M.O.B. 2008-02-16 18:18
gunzip -c ../backup.tar.gz| tar -xv

  • Kommentarer(0)//enradare.orbin.se/#post16

Skapa backup av katalog förutom en fil

Bash, Fedora 7Skapad av M.O.B. 2008-01-31 18:06
find mkb ! -name MKBCfg.pm -type f| xargs tar -czvf backup_mkb.tar.gz

  • Kommentarer(0)//enradare.orbin.se/#post15

Byta shebang på alla CGI-program

zsh, Fedora 7Skapad av M.O.B. 2008-01-29 11:32
find . -name '*.cgi' ! -name wwwwais.cgi -type f| xargs -n 1 sed -i '1s|^.*$|#!/usr/local/bin/perl|'
Detta förutsätter att alla CGI-program utom undantaget är Perl-program.

  • Kommentarer(0)//enradare.orbin.se/#post14

Skapa backup av alla CGI-program

zsh, Solaris 9Skapad av M.O.B. 2008-01-29 11:19
find . -name '*.cgi' ! -name wwwwais.cgi -type f| xargs tar -czvf backup_cgi.tar.gz
Ett program är undantaget eftersom det är en binär fil (kompilerat C-program).

  • Kommentarer(0)//enradare.orbin.se/#post13

Behandla utmatning från ett kommando rad för rad

zsh, Fedora 7Skapad av M.O.B. 2008-01-13 20:18
who | while read user term date time junk; do echo $user has been on $term since $date $time; done
Man kan "pajpa" till while om man använder read.

  • Kommentarer(0)//enradare.orbin.se/#post12

Söka efter vissa fel i CGI-program

Bash, Fedora 7Skapad av M.O.B. 2008-01-04 16:22
QUERY_STRING='mkbadmsid=1&func=redirect&uRId=6' perl -W admin.pl 2>&1 | grep 'admin.pl'

  • Kommentarer(0)//enradare.orbin.se/#post11

Köra CGI-program i terminalfönstret

Bash, Fedora 7Skapad av M.O.B. 2007-12-12 11:31
QUERY_STRING='func=show&cId=100000' perl -W mkb.pl
Bra för avlusning av kod.

  • Kommentarer(0)//enradare.orbin.se/#post10

Hitta alla mallar som inkluderar filer utan ändelse

Bash, Fedora 7Skapad av M.O.B. 2007-12-12 11:00
find . -type f ! -name '*~' |xargs grep '\[include[^.]*\]'
Backupfiler undantas.

  • Kommentarer(0)//enradare.orbin.se/#post9

Lägger till pl-ändelsen i action-attributvärden i html-filer

Bash, Fedora 7Skapad av M.O.B. 2007-12-10 16:53
find . -type f |xargs grep 'action="mkb' |sed '/~/d;s/:.*//' |sed 's|.*|sed -i '\''/action="mkb/s#action="mkb#\&.pl#'\'' &|' |uniq >run.sh; sh run.sh

  • Kommentarer(0)//enradare.orbin.se/#post8

Lägg till html-ändelse till alla filer i en katalogstruktur som innehåller html-kod

Bash, Fedora 7Skapad av M.O.B. 2007-12-10 15:46
find . |xargs grep '<html\|<body\|<table' |sed '/~/d;s/:.*//' |sed 's/.*/mv & &.html/' |uniq >run.sh; sh run.sh

  • Kommentarer(0)//enradare.orbin.se/#post7

JavaScript som miniräknare

JavaScript, Firefox 2.0Skapad av M.O.B. 2007-12-06 23:45
javascript:20-2*Math.pow(3,2)+4/2*3
Klistra in i adressrutan och tryck Enter. Är lika med 8. Fungerar även i MSIE 6. Webbläsarnas JavaScript-skal är något som man nästan alltid har tillgång till och därför är det utmärkt att lära sig. I Firefox 2 kan man skriva enbart javascript: och då få en felkonsol där man kan skriva in JavaScript-kommandon utan att behöva skriva javascript: före.smiley

  • Kommentarer(0)//enradare.orbin.se/#post6

Hitta filer som ändrar $PATH

Ash, BasicLinux 3.50Skapad av M.O.B. 2007-12-06 21:45
find / -xdev -type f |xargs grep 'export.\+PATH=' 2>/dev/null

  • Kommentarer(0)//enradare.orbin.se/#post5

Utvinn tabelldefinitioner ur en MySQL dump

Bash, Fedora 7Skapad av M.O.B. 2007-12-06 00:25
zcat mkb.sql.gz | sed '/^CREATE TABLE/,/^)/!d;/^)/s/;/;\n/' > ../tables.txt

  • Kommentarer(0)//enradare.orbin.se/#post4

Konstruera SQL-frågor för alla tabeller (specialfall)

Bash, Fedora 7Skapad av M.O.B. 2007-12-06 00:22
mysql -uroot -ppasswd -Dmkb_lub -e'show tables'|sed 's/ *| *//'|sed -n '/^[a-z]/p' |sed 's/\(.\+\)/select * from \1\;/'

  • Kommentarer(0)//enradare.orbin.se/#post3

Kopiera en katalogstruktur (specialfall)

Bash, Fedora 7Skapad av M.O.B. 2007-12-06 00:15
dirs=`find ../jinfo -type d | sed 's|^../jinfo/||;/^\.\./d'`; for dir in $dirs; do mkdir $dir; done

  • Kommentarer(0)//enradare.orbin.se/#post2

Om bloggen

ÖvrigtSkapad av M.O.B. 2007-12-06 00:13
Enradare i programmeringssammanhang är program som skrivs på en rad och avslutas med Enter. (Även om raden skulle vara bruten p.g.a. sidbredden så skall koden skrivas in på en rad.) Programmen är oftast kryptiska men är inte avsiktligt tillkrånglade och utför (oftast) nyttiga saker. De är troligen ibland inte optimala utan bör ses som en utgångspunkt för diskussion. Inga garantier ges för att de fungerar, men de är kopierade från terminalfönstret eller historiken. I vissa fall är de automatiskt uppladdade till bloggen och då finns en liten risk för buggar i uppladdningsprogrammet. Det är tryggt att skapa en kopia av en katalog och underkataloger (cp -R dir1 dir2) innan man utför ett kommando som skall förändra många filer i katalogen. När man har kontrollerat att programmet gjorde vad det skulle så kan man ta bort kopian (rm -R dir2).

Denna blogg är ett hobbyprojekt, men bygger bl.a. på erfarenheter ur arbetslivet.

Alla inlägg i denna blogg "Enradare" är copyright respektive bloggare. Programmen i blogginläggen är licensierade som öppen källkod enligt GNU GPL v3. Själva blogginläggen är licensierade enligt Creative Commons BY-SA.

  • Kommentarer(0)//enradare.orbin.se/#post1