Το ανοικτό λογισμικό στην εκπαίδευση - accu · 2010-05-09 · Το...

167
1 The Unix Toolchest: Power Tools for Power Programmers Diomidis Spinellis www.spinellis.gr

Upload: others

Post on 20-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

1

The Unix Toolchest:Power Tools for

Power Programmers

Diomidis Spinelliswww.spinellis.gr

Page 2: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 3: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 4: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 5: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 6: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Advantages

Page 7: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 8: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 9: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 10: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 11: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 12: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 13: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 14: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

interleaving

Page 15: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 16: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Automate key tasks

Page 17: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 18: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 19: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 20: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Key concepts

Page 21: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

small is beautiful

Page 22: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

main(int argc, char *argv[]){

while (*argv) {(void)printf("%s", *argv);if (*++argv)

putchar(' ');}putchar('\n');exit(0);

}

Page 23: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

# $FreeBSD: src/etc/master.passwd,v 1.40 2005/06/06 20:19:56 brooks Exp $#root:*:0:0:Charlie &:/root:/bin/cshtoor:*:0:0:Bourne-again Superuser:/root:daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologinoperator:*:2:5:System &:/:/usr/sbin/nologinbin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologintty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologinmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologingames:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologinnews:*:8:8:News Subsystem:/:/usr/sbin/nologinman:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologinsshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologinsmmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologinmailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologinbind:*:53:53:Bind Sandbox:/:/usr/sbin/nologinproxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologinuucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucicopop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologinwww:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin

Page 24: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

No Captive apps

Page 25: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Filter

Page 26: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Flow

Page 27: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Get

Page 28: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Fetching

Page 29: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Generate

Page 30: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 31: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Select

Page 32: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Selecting

Page 33: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Process

Page 34: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Processing

Page 35: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Summarize

Page 36: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Summarizing

Page 37: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Plumb

Page 38: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Plumbing

Page 39: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Program

Page 40: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Programming

Page 41: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Fetching

Page 42: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

curlwget

Page 43: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ while read tickerdo

curl -o $ticker.html "http://www.reuters.com/finance/stocks/ratios?symbol=$ticker&rpc=66#management" done <ticker_symbols

Page 44: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

mysqlsqlplusosql

sqlite3psqlodbc

Page 45: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ mysql -s db -e "selectdistinct substr(name, 1,length(name) -instr(reverse(name), '/'))from FILES" |

xargs ls -di |awk '{print $1}' |sort -u |wc -l

Page 46: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

svn / cvs logsvn blame

cvs annotate

Page 47: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

0

20

40

60

80

100

0 10 20 30 40 50 60 70 80 90

% o

f no

n-ad

heri

ng li

nes

Number of developers in the annotated file

Page 48: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ cvs annotate f |awk '{print $2}' |sort | uniq -c |sort -rn

Page 49: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

1652 spy1104 polina827 ajk372 dds279 panos124 mastorad75 mm16 nd2 nmil1 pappas

Page 50: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 51: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

find

Page 52: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

find -name foofind -type f find -type dfind -print0

Page 53: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ find build \-name '*.class' \-type f \-mtime -7

Page 54: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

nmdumpbin

Page 55: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 56: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 57: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ nm -l netbsd |awk '/ [BDGRS] /{print $3}' | sed s/_//

Page 58: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

arldd

Page 59: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ cd /usr/bin$ ldd * 2>/dev/null |awk '/=>/{print $3}' |sort |uniq -c |sort -rn |head

Page 60: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

372 /lib/libc.so.735 /lib/libncurses.so.733 /lib/libm.so.531 /lib/libz.so.429 /lib/libcrypt.so.427 /lib/libutil.so.727 /lib/libcrypto.so.522 /usr/lib/libstdc++.so.622 /lib/libgcc_s.so.120 /usr/lib/libbz2.so.3

Page 61: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

541 /lib/libc.so.6541 /lib/ld-linux.so.2104 /lib/libdl.so.292 /lib/libm.so.662 /lib/libncurses.so.559 /lib/libnsl.so.150 /lib/libcrypt.so.134 /usr/lib/libstdc++-

libc6.2-2.so.334 /lib/libpam.so.028 /usr/lib/libz.so.1

Page 62: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

tarjar

Page 63: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ tar cf - . |tar -C dir -xpf -

Page 64: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ jar tf ant.jar |sed -n \'/\.class$/s/^/ant.jar /p' |java -jar ckjm.jar

Page 65: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Generating

Page 66: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

jot

Page 67: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ jot - 1 1012345678910

Page 68: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ grep `jot -s "" -b . 80`

Page 69: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

dd

Page 70: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ time \dd if=/dev/zero \bs=1M count=1000 |nc -q 0 host 9999

Page 71: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

yes

Page 72: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Selecting

Page 73: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

grep

Page 74: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

a.k*[a-z][^a-z]^ab$\. \[ \*(a.b) \1a|b c+ d? {9} {,9}

Page 75: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ egrep '[^aeiouyAEIOUY]{4}'\/usr/share/dict/words

Page 76: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

archchroniclerbergschrundEschscholtziafruchtschieferlatchstringlengthsmanNachschlagpostphthisicveldtschoen

Knightsbridge

Page 77: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ egrep \'^(.)(.)((.)\4)?\2\1$' \/usr/share/dict/words

Page 78: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

boobdeednoonpeepreddersees

Page 79: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

awk

Page 80: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

/^x/ {print $2}

$2 == $3 {a[$2]++}

END {print x}

-F:

Page 81: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ tar tvf vmmemctl.tar |awk '{s += $3}END {print s}'

Page 82: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

sed

Page 83: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

s/if(/if (/;s/do{/do {//^ \*/s/ *\*$//

/SCCS/d

-ns/^struct \(.*\) {/\1/p

Page 84: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ ls |sed -n \'s/\(Beetles - One - \)\(.*\)/\mv "\1\2" "\2"/p' |sh

Page 85: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

cut

Page 86: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

xmlxgawk

Page 87: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

<xsl:param name="today"/>

$ xml tr report.xslt \-s today=`date +%Y0101` \file.xml >brochure.html

Page 88: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Processing

Page 89: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

sort

Page 90: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

-n-r+2nr-u-t:

Page 91: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ tar tvf vmmemctl.tar |sort +2n

Page 92: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

diff

Page 93: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

-b-u

Page 94: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ diff file1 file2 |grep ’^[<>]’ |wc -l

Page 95: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

comm

Page 96: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ comm Linux FreeBSD[

archashbash

catchflags

chgrpchio

chmodchown

cpcpio

cshdatedddf

dirdmesgdnsdomainname

domainnameechoed

egrepexpr

falsegetfacl

Page 97: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

-1-2-3

Page 98: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ comm -23 active-committers developers-known \>developers-unknown

Page 99: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 100: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

rs

Page 101: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ jot -r 100 |rs 10 1065 100 84 36 4 98 18 64 47 1546 54 35 50 49 23 37 41 79 3126 71 15 34 74 63 43 18 49 3635 19 19 11 25 98 35 36 54 7512 89 72 94 10 6 10 51 37 785 43 99 5 86 57 73 24 61 9537 84 41 35 38 93 60 30 84 3994 44 49 35 27 67 37 85 42 9677 14 43 6 92 57 88 18 31 2086 100 97 8 70 53 24 35 36 17

Page 102: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ rs -eC 0 4 |sort |rs -c 0 1

Page 103: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

tr

Page 104: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

$ tr -C '[a-zA-Z]' '\n' </etc/motd |tr A-Z a-z |sort |uniq |grep -v '[sd]$' |comm -23 - /usr/share/dict/words

Page 105: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

recode

Page 106: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

tac

Page 107: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

rev

Page 108: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

join

Page 109: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

date

Page 110: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 111: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

date -f'%b %d %Y' -j +'%s' $D || # Mar 12 2004date -f'%d %B %Y' -j +'%s' $D || # 12 March 2004date -f'%a %d %B %Y' -j +'%s' $D || # Mon 12 March 2004date -f'%+' -j +'%s' $D || # Thu May 8 00:14:31 PDT 1997date -f'%Y-%m-%d' -j +'%s' $D || # 2002-05-17date -f'%Y.%m.%d' -j +'%s' $D || # 2001.02.08date -f'%Y/%m/%d' -j +'%s' $D || # 2001/07/01date -f'%y/%m/%d' -j +'%s' $D || # 01/09/18date -f'%d-%b-%Y' -j +'%s' $D || # 25-Sep-2001date -f'%d.%m.%Y' -j +'%s' $D || # 03.02.2002date -f'%m-%d-%Y' -j +'%s' $D || # 03-02-2002date -f'%m/%d/%Y' -j +'%s' $D || # 2/22/1999

Page 112: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

gvpr

Page 113: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

BEG_G {$tvtype = TV_fwd;$tvroot = node($, ARGV[0]);

}N [$tvroot = NULL; 1]END_G {

induce($T);write($T);exit(0);

}

Page 114: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Summarizing

Page 115: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

wc

Page 116: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

head

Page 117: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

tail

Page 118: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

uniq

Page 119: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

awk '{print $2}' licenses | sort | uniq -c | sort -rn

Page 120: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 121: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

fmt

Page 122: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

awk

Page 123: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

find src -type f |grep -v CVS |xargs cvs log -SN |sed -n '/^date:/s/[+;]//gp' |awk '{hlines[$5] += $9}END {for (i in hlines)

print i, hlines[i]}' |sort >hlines

Page 124: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 125: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

gnuplot

Page 126: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

set xlabel 'Time (UTC)'set ylabel 'Average LOC per day'set style fill solid 0.250000 borderset tics outset xtics 0,4,20plot [-1:24] [0:305] 'roundclock.dat' notitle with boxes

Page 127: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

GMT

Page 128: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 129: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

dot

Page 130: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

digraph gvpr {"atk" -> "gettext";"gettext" -> "libiconv";"libxml2" -> "libiconv";"gtk20" -> "gettext";"firefox" -> "glib20";"firefox" -> "atk";}

Page 131: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 132: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 133: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Directory StructureLinux

Solaris

WRK

Page 134: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette
Page 135: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Plumbing

Page 136: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

|

Page 137: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

generate|tee file |summarize

Page 138: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

xargs

Page 139: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

-0-P-n 1

Page 140: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

( … ) |

Page 141: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

…|while read x

Page 142: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

if cmdthen…

fi |

Page 143: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Programming

Page 144: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

sh

Page 145: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

xargs grep RE /dev/null

Page 146: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

echo Error 1>&2

Page 147: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

if [ x$a = x ]then

echo ’$a was empty’fi

Page 148: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

exec

Page 149: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

mv file dir/

Page 150: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

sed … | sh

Page 151: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

TMPDIR="${TMP:-/tmp}/$$"trap 'rm -rf "$TMPDIR"' 0trap 'exit 2' 1 2 15mkdir "$TMPDIR

Page 152: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

Perl Python Ruby Groovy

Page 153: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

(Anti)?patterns

Page 154: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

cat file|command

Page 155: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

command <file

Page 156: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

commandif [ $? -ne 0 ]then

Page 157: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

if !commandthen

Page 158: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

grep RE |awk ’{…}’

Page 159: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

awk ’/RE/{…}’

Page 160: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

echo `ls` |sed ‘s/ /:/’

Page 161: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

ls |paste -sd:

Page 162: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

echo $VAR |sed ’s/\([^-]*\).*/\1/’

Page 163: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

expr ”$VAR” : ’\([^-]*\)’

Page 164: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

find /foo -name … |while read filenamedo

ls -ld $filenamedone

Page 165: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

find /foo -name … \-exec ls -ld ’{}’ \;

Page 166: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

find /foo -name … |xargs ls -ld

Page 167: Το ανοικτό λογισμικό στην εκπαίδευση - ACCU · 2010-05-09 · Το ανοικτό λογισμικό στην εκπαίδευση Author: Vampire_Omelette

www.spinellis.grtwitter.com/DSpinellis

[email protected]