29
Lecture 3 Unix Question? Denmark is famous for? a. LEGO. b. The world’s best restaurant. c. Being in the top three happiest countries in the world. d. Having the highest taxes in Europe (57%). e. All of the above.

Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Lecture 3Unix

Question?

• Denmark is famous for?

a. LEGO.

b. The world’s best restaurant.

c. Being in the top three happiest countries in the world.

d. Having the highest taxes in Europe (57%).

e. All of the above.

Page 2: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Announcements

• There are drop-in help sessions in Reynolds 001/002 (right after lectures).

• There are TAs who are dedicated just to private tutoring sessions.  The tutoring times can be booked from the course website and are free to the students.  

• There are times available beginning next week and anyone who is feeling even a tiny bit overwhelmed should take advantage of the tutoring.  

• If the students don't use it we'll stop offering it.

Q&A

• Do you have a question?(I may have an answer)

Page 3: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Computers are closed boxes, hiding the command line and lower level features.

rm vs.

what’s

?

OS

OS

• The Operating System is a resource manager.

• Many different types of operating system, e.g. Windows, OSX, Unix/Linux.

Page 4: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Unix

Unix

• Unix is a multi-user, multi-tasking environment, offering stability, portability and powerful networking capabilities.

• Unix was created by Ken Thompson and Dennis Ritchie at AT&T in the early 1970s.

• Evolved from UNICS (Uniplexed Information and Computing System) written in assembler.

Page 5: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Unix-history

Incarnations?

• Berkeley Software Distribution (BSD)

• Solaris (Sun)

• Linux - a free open source UNIX OS originally developed by Linus Torvalds in 1991.

• Mac OSX - based on BSD, (Berkeley Software Distribution) version of Unix.

Page 6: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Importance?

• C and Unix evolved together.

• Unix kernel was re-written in C.

Benefits of Unix?

• The kernel itself is relatively small.

• Can be built specifically for the platform it runs on (OSX), or usable on anything, such as a wristwatch (Linux).

• Scales well.

• Can support fully-featured GUI, yet maintains the command-line.

Page 7: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Limitations of Unix?

• Too many choices for distributions (Linux).

• Lacks some widely used software (e.g. Photoshop).

Architecture

Hardware

Kernel

Shell

Applications

Page 8: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Kernel

• Interacts with hardware to perform memory management, task scheduling, and file management.

• Technically, the kernel “is” the OS.

Shells

• Textual command line shells.

• Processes user requests - commands are translated by the shell into something the kernel can understand.

Page 9: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Shells

• OSX, and many versions of Linux use the Bash shell as its default - the Bourne Again Shell.

• Many different types of shells: C shell (csh), Bourne shell (sh), Korn shell (ksh)

System utilities

• Commands such as ls, cp, grep, awk, sed, bc, wc

• Can be combined together to solve problems.

Page 10: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Unix file system

• Organized in a tree structure.

Unix file system

• Unix file systems have directories and files.

• Unix is CASE sensitive.

• This means Vader, vader, VADER, vaDer are all different.

Page 11: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Types of files

• Plaintext - files in human-readable format. e.g. readme.txt

• Binary - files in machine-code. For example executables (a.out), .zips, .pdfs, .jpgs

Commands

• A Unix command line consists of the name of a Unix command, followed by its "arguments" (options and the target filenames and/or expressions).

• The general syntax for a UNIX command is:

$ command -options targets ↵

Page 12: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

ls

• ls is used to list files in a directory.

• By itself it just lists the file names, in alphabetical order.

• The command ls -la will list information associated with each file.

ls

$ ls -latotal 72drwxr-xr-x 9 mwirth staff 306 1 Sep 11:25 .drwxr-xr-x@ 272 mwirth staff 9248 1 Sep 11:04 ..-rwxr-xr-x 1 mwirth staff 9640 1 Sep 10:06 a.out-rw-r--r--@ 1 mwirth staff 3094 3 Jul 18:48 gamepig.c-rwxrwxrwx@ 1 mwirth staff 1439 30 Jun 10:02 luhn.c-rw-r--r--@ 1 mwirth staff 1717 3 Jul 12:01 mugwump.c-rw-r--r--@ 1 mwirth staff 490 31 Aug 08:04 paragraph.txt-rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c$

a directory

permissions

owner group

no. bytes

date and time last modified

file name

Page 13: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

ls

$ ls -latotal 72drwxr-xr-x 9 mwirth staff 306 1 Sep 11:25 .drwxr-xr-x@ 272 mwirth staff 9248 1 Sep 11:04 ..-rwxr-xr-x 1 mwirth staff 9640 1 Sep 10:06 a.out-rw-r--r--@ 1 mwirth staff 3094 3 Jul 18:48 gamepig.c-rwxrwxrwx@ 1 mwirth staff 1439 30 Jun 10:02 luhn.c-rw-r--r--@ 1 mwirth staff 1717 3 Jul 12:01 mugwump.c-rw-r--r--@ 1 mwirth staff 490 31 Aug 08:04 paragraph.txt-rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c$

current directory

parent directory

pwd

• pwd is a command used to tell you which directory you are currently in.

Page 14: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

cd

• cd is used to change directories.

• The general form of the cd command is as follows:

cd directory-name

pwd & cd

$ pwd/Users/mwirth/codingC$ cd afall15$ lsa.out! ! luhn.c! ! paragraph.txt! scramble.cgamepig.c! mugwump.c! paragraph2.txt$ cd ..$

change directory to afall15

change directory to the parent (codingC)

current directory

Page 15: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

cp

• cp is used to make copies of files.

• The general form of the cp command is as follows:

cp srcFile destFile

cp

• cp can also be used to put a copy of a file into a directory.

• The general form of this cp command is as follows:

cp srcFile destDir

Page 16: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

cp

• To copy the file a1Mug.c to a1MugBACKUP.c :

cp a1Mug.c a1MugBACKUP.c

• To copy the file a1Mug.c to a directory named a1BACKUPs :

cp a1Mug.c a1BACKUPS

mv

• mv is used to rename files.

• The general form of the mv command is as follows:

mv srcFile destFile

Page 17: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

mv

• mv can also be used to move a file into a directory (this does not make a copy).

• The general form of this mv command is as follows:

mv srcFile destDir

cp

• To rename the file a1Mug.c to a1Mug.old :

mv a1Mug.c a1Mug.old

• To move the file a1Mug.c to a directory named deathStarPlans :

mv a1Mug.c deathStarPlans

Page 18: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

rm

• rm is used to delete files.

• The general form of the rm command is as follows:

rm filename

rm

CAREFUL!!

rm is forever.

Page 19: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Other commands

• mkdir - make a directory

• rmdir - remove a directory

• touch - create an empty file, or modify a files timestamp

• cat - concatenate files, and print to screen

• more - similar to cat, but displays one screen at a time.

grep

• The grep command searches for lines matching a specific pattern.

• The general form of the grep command is as follows:

grep pattern files

Page 20: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

grep

$ grep main *.cgamepig.c:int main(void)luhn.c: // Return the remainder when divided by 10luhn.c:int main(void)mugwump.c:int main(void)scramble.c:int main(void)$

find

• The find utility is used to search for files in a directory hierarchy.

• The general form of the find command is as follows:

find path conditions

Page 21: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

find

$ find . -name mugwump.c./mugwump.c$

history

• All shells store a list of the commands that have been issued.

• The command history allows you to see this list.

Page 22: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

history

• Commands in the list can be accessed and re-executed using a single exclamation mark, !, which is often referred to as Bang.

• You can do ! followed by a history number, or ! followed by the first few characters of the command.

history

$ history 503 cd afall15/ 504 ls 505 gcc scramble.c 506 ./a.out$$ !505gcc scramble.c$$ !ggcc scramble.c$

Page 23: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Redirecting output

• stdout mean the standard standard output (screen).

• It is also possible to redirect this using the operator >.

Redirecting output

$ lsa.out!! luhn.c!! paragraph.txt! scramble.cgamepig.c! mugwump.c! paragraph2.txt$$ ls > flist$ Instead of outputting

to the screen this redirects it to a file

named flist.

Page 24: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Pipes

• The pipe creates a channel from one command to another.

• Pipes are created using the |.

• The general form of a pipe is as follows:

command1 | command2

Pipes

$ history | grep cd 352 cd PRAC_inprog/ 383 cd codingC 501 cd codingC 503 cd afall15/ 545 cd .. 568 history|grep cd$

Run the history command, then pipe the results into grep which will return all

lines which contain the search term cd.

Page 25: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Processes

• Everything that runs in an OS has a process.

• A process is an instance of a running program.

• The ps (process snapshot) command tells you about your processes.

$ ps PID TTY TIME CMD 9878 ttys000 0:00.32 -bash11641 ttys001 0:00.02 -bash

Processes

• Every process has a PID, or Process-ID, which identifies it.

• You can have a program running more than once... each will have their own PID.

$ ps PID TTY TIME CMD 9878 ttys000 0:00.32 -bash11641 ttys001 0:00.02 -bash

Page 26: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Processes

• To see everything running in the background, you can use ps -A

$ ps -A PID TTY TIME CMD 1 ?? 2:51.39 /sbin/launchd 11 ?? 0:05.62 /usr/libexec/UserEventAgent 12 ?? 0:09.27 /usr/libexec/kextd

When things go wonky...

• If a program runs for too long... maybe because it has gone into an infinite loop or something, it can be stopped by using:

Page 27: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

When things go wonky...

• Sometimes a program will get stuck for some reason. It just stops responding.

• When this happens it’s time to kill the process.

$ ps PID TTY TIME CMD 9878 ttys000 0:00.35 -bash11769 ttys000 0:00.12 ./a.out11641 ttys001 0:00.02 -bash$ kill -9 11769$

Need more info?

• Use man.

• Short for manual page.

• The general form of a man page is as follows:

man command-name

Page 28: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Unix is all powerful

• You can write programs in shell languages, to perform processing that is easier than using a GUI.

• For example:#!/bin/bashfor img in *.jpgdo filename=$(basename "$img") extension="${filename##*.}" filename="${filename%.*}" echo $filename convert "$img" "$filename.png"done

Shell scripting

#!/bin/bashfor img in *.jpgdo filename=$(basename "$img") extension="${filename##*.}" filename="${filename%.*}" echo $filename convert "$img" "$filename.png"done

Use the bash shell

Select all files ending in .jpg

}extract file name with

no extension

Convert the file to .png

Page 29: Question? - WordPress.com · 2015. 9. 18. · -rw-r--r-- 1 mwirth staff 473 31 Aug 08:36 paragraph2.txt-rw-r--r--@ 1 mwirth staff 3778 3 Jul 10:06 scramble.c $ current directory parent

Black holes

• Unix has an built-in black hole called

/dev/null

• Any user can write to it.

• Anything written to it just disappears.