Catch-up Programmes: Helping Learners Catch Up and Return ...
Nyttige Linux-kommandoer · Log.java:} catch (FileNotFoundException e) {Scanner.java:} catch...
Transcript of Nyttige Linux-kommandoer · Log.java:} catch (FileNotFoundException e) {Scanner.java:} catch...
Nyttige Linux-kommandoerHvordan du kan jobbe mer effektivt
Dag Langmyhr
Trenger vi kommandovinduer i dag?Svaret er nei for de fleste brukerne, men ikke forekspertene.
Ofte går det fortere å bruke kommandoerKommandoer er utrolig mye kraftigere enn menyer
Men dessverre:Det tar lenger tid å lære seg å bruke kommandoerLinux-kommandoene har ofte rare navnBruken av parametre kan variere ganske mye
INF1010 fellesundervisning 21.1.2015 2
Et eksempelJeg har en stor PDF-fil. Jeg må plukke ut side 1–2 til filenb-1.pdf, side 3–4 til b-2.pdf osv.
$ for N in ‘seq 1 1128‘> do> A=‘expr 2 \* $N - 1‘> B=‘expr 2 \* $N‘> pdfjam -o b-$N.pdf brev-des-2014.pdf $A-$B> done
INF1010 fellesundervisning 21.1.2015 3
Diverse kommandotolkereEn kommandotolker («shell») leser brukerenskommandoer og starter prosesser som utfører deprogrammene brukeren angir.
I Linux kan alle ganske enkelt lage sin egenkommandotolker; de vanligste er:/bin/sh («Bourne shell» etter Stephen Bourne) fra
1977 finnes i alle Unix-er.bash («Bourne-again shell» fra GNU-prosjektet) er en
utvidelse av sh og mest brukt i dag.ifish lages av alle som tar INF1060.
INF1010 fellesundervisning 21.1.2015 4
En Unix-prosess
standard instandard out
standard error
status
INF1010 fellesundervisning 21.1.2015 5
En Unix-prosess
?
INF1010 fellesundervisning 21.1.2015 6
Statusverdien
Den sier hvordan kjøringen gikk:�
0 OK1− 255 Feil
$ javac Hallo.java$ echo $?0
INF1010 fellesundervisning 21.1.2015 7
a && bKjør a, og, hvis den gikk bra (dvs ga status 0), kjør b.
$ javac Hallo.java && java Hallo
Da trengs bare ↑ ←- for å kompilere og kjøre pånytt.
INF1010 fellesundervisning 21.1.2015 8
Egne programmerj
#! /bin/sh
javac "$1".java && java "$1"
Vi må angi at dette er et kjørbart program:$ chmod a+x j$ mv j ~/bin
(Dette behøver bare gjøres én gang.)
$ j Hallojavac Hallo.javajava HalloHallo, alle sammen!
INF1010 fellesundervisning 21.1.2015 9
Omdirigering av filer
?
INF1010 fellesundervisning 21.1.2015 10
Anta at vi har et program som starter med å lese datasom brukeren gir:$ java MittProgramHva heter du? Arne AasHvilket år er du født? 1990Hvilken by er du født i? Oslo
:
Programmet har en intrikat feil så vi må kjøre detmange ganger.
INF1010 fellesundervisning 21.1.2015 11
Lag fil med dataene du oppgir:
data.txtArne Aas1990Oslo:
Nå kan du omdirigere standard input til å komme frafilen:$ java MittProgram <data.txtHva heter du?Hvilket år er du født?Hvilken by er du født i?
:
INF1010 fellesundervisning 21.1.2015 12
Du kan også omdirigere utskriften som går til standardoutput om du vil ta vare på den:
?
$ java MittProgram >resultat.txt
INF1010 fellesundervisning 21.1.2015 13
RørEkstra moro blir det når vi kan kople standard input fraén prosess til standard output for en annen med etrør («pipe»).
INF1010 fellesundervisning 21.1.2015 14
Når vi skal bruke rør, er det nyttig å merke seg at dealler fleste Unix-programmer er laget etter følgendekonvensjon:
Først kommer opsjonene (-xxx)Så kommer filnavneneHvis ingen filnavn, leser programmet fra standardinput.
INF1010 fellesundervisning 21.1.2015 15
Hvor mange Java-filer har jeg i denne mappen?$ ls *.java | wc -l322
(Programmet wc teller antall linjer, ord og byte; wc -lviser bare antall linjer.)
Send utskriften fra et program rett til skriveren:$ java MittProg | print -pipe
INF1010 fellesundervisning 21.1.2015 16
Andre nyttige programmergrep leter etter en gitt tekst i én eller flere filer.
Bruker jeg «Exception» i disse Java-programmene?$ grep Exception *.javaAlboCError.java:public class AlboCError extends RuntimeException {AlboC.java: } catch (IOException e) {}AlboC.java:catch (InterruptedException e) {}AlboC.java:catch (IOException e) {CharGenerator.java:} catch (FileNotFoundException e) {CharGenerator.java: } catch (IOException e) {CharGenerator.java: } catch (IOException e) {Code.java:} catch (FileNotFoundException e) {Log.java:} catch (FileNotFoundException e) {Scanner.java:} catch (NumberFormatException e) {$ grep Exception *.java | wc -l10
INF1010 fellesundervisning 21.1.2015 17
find leter etter filer i en mappe og alle undermapper;brukeren kan velge hva som skal gjøres med filen.
Jeg har en fil som heter foredrag-1010.pdf ett ellerannet sted; hvor?$ find ~ -name foredrag-1010.pdf -print
Hvilke Java-filer har jeg lagret totalt? Skriv en sortertliste.$ find ~ -name "*.java" -print | sort | print -pipe
INF1010 fellesundervisning 21.1.2015 18
Hva mer?Det er mye mer:
Bash er et komplett programmeringsspråk medvariabler, if-tester, while-løkker og metoder.Det finnes mange flere nyttige småprogrammer.
Hvor kan man da lære om dette?
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html er en greiinnføring i bruk av Bash.man bash gir den fulle beskrivelsen avBash; den er oversiktlig men ikkelettlest.
INF1010 fellesundervisning 21.1.2015 19