csc 352: basic unix saumya debray dept. of computer science the university of arizona, tucson...
TRANSCRIPT
![Page 1: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/1.jpg)
CSc 352: Basic Unix
Saumya DebrayDept. of Computer Science
The University of Arizona, [email protected]
![Page 2: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/2.jpg)
Reading
• Chapter 1:– Upto “Background Jobs”
(page 17)
2
![Page 3: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/3.jpg)
What is Unix?
• Unix is an operating system– sits between the hardware and the user/applications– provides high-level abstractions (e.g., files) and services
(e.g., multiprogramming)
• Linux:– a “Unix-like” operating system: user-level interface very
similar to Unix– code base is different from original Unix code
3
![Page 4: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/4.jpg)
Layers of a Unix system
4
hardware
shell
Unix operating system kernel
users applicationsshell commands system
calls
![Page 5: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/5.jpg)
The file system
• A file is basically a sequence of bytes
• Collections of files are grouped into directories ( folders)
• A directory is itself a filefile system has a hierarchical structure (i.e., like a tree)o the root is referred to as “/”
5
…
ddccbb
/
ffee
![Page 6: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/6.jpg)
“Everything is a file”
• In Unix, everything looks like a file:– documents stored on disk– directories– inter-process communication– network connections– devices (printers, graphics cards, interactive terminals, …)
• They are accessed in a uniform way:– consistent API (e.g., read, write, open, close, …)– consistent naming scheme (e.g., /home/debray,
/dev/cdrom)
6
![Page 7: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/7.jpg)
Referring to files: Absolute Paths
• An absolute path specifies how to get to a file starting at the file system root– list the directories on the
path from the root (“/”), separated by “/”
7
ddccbb
/
ffee
gg
![Page 8: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/8.jpg)
Referring to files: Absolute Paths
• An absolute path specifies how to get to a file starting at the file system root– list the directories on the
path from the root (“/”), separated by “/”
8
ddccbb
/
ffee
gg
absolute path: /dd/ee/gg
![Page 9: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/9.jpg)
Referring to Files: Relative Paths
• Typically we have a notion of a “current directory”
• A relative path specifies how to get to a file starting from the current directory– ‘..’ means “move up one level”– ‘.’ means current directory– list the directories on the path
separated by “/”
9
ddccbb
/
ffee
gg
![Page 10: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/10.jpg)
Referring to files: Relative Paths
• Typically we have a notion of a “current directory”
• A relative path specifies how to get to a file starting from the current directory– ‘..’ means “move up one level”– ‘.’ means current directory– list the directories on the path
separated by “/”
10
ddccbb
/
ffee
ggExample:
ff relative to ee is: ../ff
![Page 11: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/11.jpg)
Referring to files: Relative Paths
• Typically we have a notion of a “current directory”
• A relative path specifies how to get to a file starting from the current directory– ‘..’ means “move up one level”– ‘.’ means current directory– list the directories on the path
separated by “/”
11
ddccbb
/
ffee
ggExample:cc relative to ee is: ../../cc
![Page 12: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/12.jpg)
Home directories
• Each user has a “home directory”– specified when the account is created– given in the file /etc/passwd
• When you log in, your current directory is your home directory– can then start a shell and issue commands
• Notational shorthand:– one’s own home directory: ~– some other user joe’s home directory: ~joe
12
A shell is just an interpreter for
Unix commands
![Page 13: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/13.jpg)
Input and output
• Data are read from and written to i/o streams• There are three predefined streams:
stdin : “standard input” usually, keyboard inputstdout : “standard output” usually, the screenstderr : “standard error” for error messages (usually, the screen)
Other streams can be created using system calls (e.g., to read or write a specific file)
13
![Page 14: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/14.jpg)
Processes
• Programs are executed via processes– a process is the unit of execution– consists of:
• the code that is executed• the data this code manipulates
• Different processes execute concurrently– each process has its own address space, stdin, stdout, etc.– their execution is managed by the operating system
• Common tasks are carried out using a set of system-provided programs called commands– the shell is also a system-provided program
14
![Page 15: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/15.jpg)
Unix Commands
• Each command performs [variations of] a single task– “options” can be used to modify what a command does– different commands can be “glued together” to perform more
complex tasks
• Syntax:command options arguments
Examples:
15
Command Options Arguments
pwd
cd /home/debray
ls -a -l
ls -al /usr/local
Options can (usually) be combined together:these are equivalent
![Page 16: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/16.jpg)
Unix Commands
• Each command performs [variations of] a single task– “options” can be used to modify what a command does– different commands can be “glued together” to perform more
complex tasks
• Syntax:command options arguments
Examples:
16
Command Options Arguments
pwd
cd /home/debray
ls -a -l
ls -al /usr/local
Not always required: may have default values
defaults to current directory
typical defaults:• input: stdin• output: stdout• directory: current
![Page 17: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/17.jpg)
Examples of Unix commands I
• Figuring out one’s current directory: pwd
• Moving to another directory: cd targetdirExamples:
17
cd / move to the root of the file system
cd ~(also: just “cd” by itself)
move to one’s home directory
cd /usr/local/src move to /usr/local/src
cd ../.. move up two levels
![Page 18: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/18.jpg)
Examples of Unix commands II
• Command: ls — lists the contents of a directory– Examples:
18
ls list the files in the current directorywon’t show files whose names start with ‘.’
ls /usr/bin list the files in the directory /usr/bin
ls -l give a “long format” listing (provides additional info about files)
ls -a list all files in the current directory, including those that start with ‘.’
ls -al /usr/local give a “long format” listing of all the files (incl. those starting with ‘.’) in /usr/local
![Page 19: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/19.jpg)
Combining commands
• The output of one command can be fed to another command as input.– Syntax: command1 | command2
Example:
19
“pipe”
ls lists the files in a directory
more foo shows the file foo one screenful at a time
ls | more lists the files in a directory one screenful at a time
How this works: • ls writes its output to its stdout• more’s input stream defaults to its stdin• the pipe connects ls’s stdout to more’s stdin• the piped commands run “in parallel”
![Page 20: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/20.jpg)
Finding out about commands I
Figuring out which command to use apropos keyword man –k keyword“searches a set of database files containing short descriptions of system
commands for keywords”
• Helpful, but not a panacea:– depends on appropriate choice of keywords
• may require trial and error
– may return a lot of results to sift through• pipe through more
20
![Page 21: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/21.jpg)
Finding out about commands II
Figuring out how to use a command man command“displays the on-line manual pages”
• Provides information about command options, arguments, return values, bugs, etc.
21
![Page 22: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/22.jpg)
Example: “man ls”
22
items within square brackets are optional
![Page 23: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/23.jpg)
Example: “man man”
23
![Page 24: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/24.jpg)
Example: “man man”
24
we can specify what kind of information we want
![Page 25: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/25.jpg)
Some other useful commands
• wc [file]• word count: counts characters, words, and lines in the input
• grep pattern [file]• select lines in the input that match pattern
• head –n [file]• show the first n lines of the input
• tail –n [file]• show the last n lines of the input
• cp file1 file2• copy file1 to file2
• mv file1 file2• move file1 to file2
25
![Page 26: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/26.jpg)
Example: Deleting a file
Figuring out which command to use:– apropos delete
• produces many screenfuls of output that go by too quickly– apropos delete | more
• many screenfuls of output, but shown one screenful at a time• most of the commands shown aren’t relevant
26
![Page 27: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/27.jpg)
Example: Deleting a file… (1)
Idea 1: filter out irrelevant stuff man –k delete | grep file
27
a lot fewer results;nothing relevant
![Page 28: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/28.jpg)
Example: Deleting a file… (2)
Idea 2: try a different keyword man –k remove | grep file
28
![Page 29: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/29.jpg)
Example: Deleting a file… (3)
Idea 2: try a different keyword man –k remove | grep file
29
these are the only commands that refer to removing files
![Page 30: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/30.jpg)
Example: Deleting a file… (4)
Idea 2: try a different keyword man –k remove | grep file
30
this is the only user command that refers to removing files
![Page 31: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/31.jpg)
Example: Deleting a file… (5)
Confirm that this is the appropriate command: “man rm”
31
strongly suggest making this your
default
![Page 32: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/32.jpg)
Setting defaults for your commands
• Create an “alias” for your command– syntax different for different shells– bash: alias aliasName=“cmdName”
e.g.: alias rm=“rm –i”– see “man alias” for details
• To have this alias in force whenever you log in, add this line to the file
~/.bashrc // assuming your login shell is “bash”
• To find out your login shell, run the commandecho $0
32
![Page 33: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/33.jpg)
Pattern matching: grep
33
![Page 34: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/34.jpg)
Pattern matching: grep… (1)
34
print the current directory
show the contents of this file
print out the lines that match “nation”
![Page 35: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/35.jpg)
Pattern matching: grep… (2)
35
“print all lines in the input that match the string er”
![Page 36: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/36.jpg)
Pattern matching: grep… (3)
36
“print all lines in the input that match the string er or re
print all lines in the input that begin with the string er or re
![Page 37: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/37.jpg)
Pattern matching in the shell
• We can also use patterns in shell commands, e.g.:
Example:
37
* matches any string
[ … ] matches any one of the characters within braces
ls b*c list files that begin with b and end with c
ls a[xyz]* list files starting with a followed by x, y, or z
ls *.pdf list files ending with “.pdf”
![Page 38: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/38.jpg)
I/O Redirection
• Default input/output behavior for commands:– stdin: keyboard; stdout: screen; stderr: screen
• We can change this using I/O redirection:
38
cmd < file redirect cmd’s stdin to read from file
cmd > file redirect cmd’s stdout to file
cmd >> file append cmd’s stdout to file
cmd &> file redirect cmd’s stdout and stderr to file
cmd1 | cmd2 redirect cmd1’s stdout to cmd2’s stdin
![Page 39: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/39.jpg)
Getting more information about files
• ls –l : provides additional info about files
39
![Page 40: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/40.jpg)
Getting more information about files… (1)
40
file namelast-modified timesizegroupowner
no. of hard links
access permissions
file type
normal file
d directory
l (ell) symbolic link
![Page 41: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/41.jpg)
File access permissions
41
access permissions for owner (u)
access permissions for group (g)
access permissions for others (o) r read
w write
x execute (executable file)enter (directory)
no permission
![Page 42: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/42.jpg)
Changing file access permissions
Command:chmod whowhat file1 file2 … filen
Example:
42
∈ {r, w, x}∈ {a, u, g, o}
chmod u-w foo remove write permission for user on file foo
chmod g+rx bar give read and execute permission to group for bar
chmod o-rwx *.doc remove all access permissions for “other users” (i.e., not owner or group members) for *.doc files
chmod a+rw p* give read and write permission to everyone for all files starting with p
![Page 43: CSc 352: Basic Unix Saumya Debray Dept. of Computer Science The University of Arizona, Tucson debray@cs.arizona.edu](https://reader035.vdocuments.site/reader035/viewer/2022062308/56649d825503460f94a680c0/html5/thumbnails/43.jpg)
Foreground and Background Processes
• Multiple processes can run concurrently– at any point, there is exactly one process that you can
interact with through the keyboard (“foreground process”)– remaining processes execute “in the background”
• A process can be started in the background:processName &
• The execution of the current foreground process can be paused via ctrl-z– “bg” will then start it executing in the background– “fg” will bring it to the foreground
43