Linux Intro in DM500 ==================== Material for the first hour --------------------------- - ``pwd``: print stien til den nuværende mappe ("print working directory"). Hvor står vi henne i vores filsystem? - ``ls``: list de elementer (mapper, filer) der er i den nuværende mappe. - ``cd``: navigér rundt i filsystemet. Prøv at find hen til din mappe med Java-programmer fra DM550. - ``cp``: lav en kopi af en fil eller mappe. Prøv at lav en kopi af DM550 mappen, som du kan rode rundt i med resten af kommandoerne. - ``touch``: lav en fil. - ``rm``: fjern en fil (eller mappe). - ``mkdir``: lav en ny mappe - ``rmdir``: fjern en tom mappe. - ``mv``: flyt/omdøb en fil eller mappe. - ``man``: læs dokumentation for de forskellige kommandoer. - ``grep``: sørg efter ting i filer. Prøv at køre ``grep -n public SomeClass.java`` med en af dine Java-filer i stedet for ``SomeClass.java``. - ``find``: find filer eller mapper i dit filsystem. Prøv at køre ``find . -iname "*.java"`` i din DM550-mappe. - ``wc``: tæl antal tegn, ord og linjer i filer. Material from the second hour ----------------------------- - `Figures <../../_static/teaching/linux/cmdGraphical.pdf>`__. Additional material: - `Unix Pipeline (Brian Kernighan) `__, Computerphile on Youtube. - `Standard streams `__, Wikipedia. - `Pipeline (Unix) `__, Wikipedia. .. rst-class:: html-toggle section Examples Commands ................. How do I find out what a command does (e.g., ``ls``)?:: man ls How many lines of code in a file?:: wc -l code.java Where did I put my Java code?:: find . -iname "*.java" How many Java files do I have?:: find . -iname "*.java" | wc -l How many lines of code in each file?:: find . -iname "*.java" | xargs wc -l in sorted order?:: find . -iname "*.java" | xargs wc -l | sort -n and without the total count:: find . -iname "*.java" | xargs wc -l | sort -n | head -n -1 or maybe just the total:: find . -iname "*.java" | xargs wc -l | sort -n | tail -n 1 Search for a string in all files:: grep -Rn "^class " How many matches?:: grep -Rn "^class " | wc -l Download a webpage, and just print the raw HTML to the terminal:: wget -O - http://dr.dk Find all lines in the page with links:: wget -O - http://dr.dk | grep http Extract just the link from the line:: wget -O - http://dr.dk | grep http | sed "s/^.*http/http/" | sed "s/\".*//" | sed "s/\?.*//" Sort the links, and filter out duplicates:: wget -O - http://dr.dk | grep http | sed "s/^.*http/http/" | sed "s/\".*//" | sed "s/\?.*//" | sort | uniq Filter out those linking to the same domain:: wget -O - http://dr.dk | grep http | sed "s/^.*http/http/" | sed "s/\".*//" | sed "s/\?.*//" | sort | uniq | grep -v "www.dr.dk" Someone in my group changed something in a file, but what?:: diff -u original.java changed.java