Introduction to UNIX. Introduction. Processes. ps command. The File System. Directory Structure. UNIX is an operating system (OS).

Similar documents
Introduction to UNIX. CSE 2031 Fall November 5, 2012

Introduction to UNIX. Introduction EECS l UNIX is an operating system (OS). l Our goals:

Table of contents. Our goal. Notes. Notes. Notes. Summer June 29, Our goal is to see how we can use Unix as a tool for developing programs

Introduction: What is Unix?

Unix/Linux Basics. Cpt S 223, Fall 2007 Copyright: Washington State University

CSE 390a Lecture 2. Exploring Shell Commands, Streams, Redirection, and Processes

The Unix Shell. Pipes and Filters

A Brief Introduction to Unix

CSE 390a Lecture 2. Exploring Shell Commands, Streams, and Redirection

Linux Command Line Primer. By: Scott Marshall

Using UNIX. -rwxr--r-- 1 root sys Sep 5 14:15 good_program

Week Overview. Simple filter commands: head, tail, cut, sort, tr, wc grep utility stdin, stdout, stderr Redirection and piping /dev/null file

CENG 334 Computer Networks. Laboratory I Linux Tutorial

Introduction p. 1 Who Should Read This Book? p. 1 What You Need to Know Before Reading This Book p. 2 How This Book Is Organized p.

bash, part 3 Chris GauthierDickey

Lab 2: Linux/Unix shell

CSE 303 Lecture 2. Introduction to bash shell. read Linux Pocket Guide pp , 58-59, 60, 65-70, 71-72, 77-80

Introduction to Linux

Useful Unix Commands Cheat Sheet

2) clear :- It clears the terminal screen. Syntax :- clear

22-Sep CSCI 2132 Software Development Lecture 8: Shells, Processes, and Job Control. Faculty of Computer Science, Dalhousie University

Scripting Languages Course 1. Diana Trandabăț

Review of Fundamentals

QUESTION BANK ON UNIX & SHELL PROGRAMMING-502 (CORE PAPER-2)

Computer Systems and Architecture

Practical Session 0 Introduction to Linux

Shell Programming Overview

When talking about how to launch commands and other things that is to be typed into the terminal, the following syntax is used:

Writing Shell Scripts part 1

Basic Linux (Bash) Commands

Perl and R Scripting for Biologists

5/20/2007. Touring Essential Programs

Shell. SSE2034: System Software Experiment 3, Fall 2018, Jinkyu Jeong

LAB 8 (Aug 4/5) Unix Utilities

A Brief Introduction to the Linux Shell for Data Science

Connecting to ICS Server, Shell, Vim CS238P Operating Systems fall 18

Common File System Commands

LAB 8 (Aug 4/5) Unix Utilities

The Unix Shell & Shell Scripts

Unix Basics. Systems Programming Concepts

Crash Course in Unix. For more info check out the Unix man pages -orhttp:// -or- Unix in a Nutshell (an O Reilly book).

Wildcards and Regular Expressions

Unix as a Platform Exercises + Solutions. Course Code: OS 01 UNXPLAT

Computer Systems and Architecture

Files and Directories

unix intro Documentation

5/8/2012. Exploring Utilities Chapter 5

CMPS 12A Introduction to Programming Lab Assignment 7

Part 1: Basic Commands/U3li3es

Introduction To. Barry Grant

Basics. I think that the later is better.

Command Line Interface The basics

First of all, these notes will cover only a small subset of the available commands and utilities, and will cover most of those in a shallow fashion.

M2PGER FORTRAN programming. General introduction. Virginie DURAND and Jean VIRIEUX 10/13/2013 M2PGER - ALGORITHME SCIENTIFIQUE

Shells and Shell Programming

Lec 1 add-on: Linux Intro

Utilities. September 8, 2015

ITST Searching, Extracting & Archiving Data

Introduction to UNIX. Logging in. Basic System Architecture 10/7/10. most systems have graphical login on Linux machines

Chapter 4. Unix Tutorial. Unix Shell

Review of Fundamentals. Todd Kelley CST8207 Todd Kelley 1

Introduction to Unix The Windows User perspective. Wes Frisby Kyle Horne Todd Johansen

Unix Tools / Command Line

EECS 2031E. Software Tools Prof. Mokhtar Aboelaze

CSC UNIX System, Spring 2015

UNIX files searching, and other interrogation techniques

Linux at the Command Line Don Johnson of BU IS&T

Lecture 3 Tonight we dine in shell. Hands-On Unix System Administration DeCal

3/8/2017. Unix/Linux Introduction. In this part, we introduce. What does an OS do? Examples

CSC209H Lecture 1. Dan Zingaro. January 7, 2015

Mills HPC Tutorial Series. Linux Basics I

Open up a terminal, make sure you are in your home directory, and run the command.

Essential Linux Shell Commands

CS 25200: Systems Programming. Lecture 11: *nix Commands and Shell Internals

: the User (owner) for this file (your cruzid, when you do it) Position: directory flag. read Group.

Unix basics exercise MBV-INFX410

Unix Essentials. BaRC Hot Topics Bioinformatics and Research Computing Whitehead Institute October 12 th

EECS 470 Lab 5. Linux Shell Scripting. Friday, 1 st February, 2018

Linux shell programming for Raspberry Pi Users - 2

The UNIX Shells. Computer Center, CS, NCTU. How shell works. Unix shells. Fetch command Analyze Execute

Essentials for Scientific Computing: Bash Shell Scripting Day 3

Module 8 Pipes, Redirection and REGEX

acmteam/unix.pdf How to manage your account (user ID, password, shell); How to compile C, C++, and Java programs;

Read the relevant material in Sobell! If you want to follow along with the examples that follow, and you do, open a Linux terminal.

Consider the following program.

Shells and Shell Programming

Introduction To Linux. Rob Thomas - ACRC

CSE Linux VM. For Microsoft Windows. Based on opensuse Leap 42.2

Reading and manipulating files

UNIX Shell Scripts. What Is a Shell? The Bourne Shell. Executable Files. Executable Files: Example. Executable Files (cont.) CSE 2031 Fall 2012

Welcome to Linux. Lecture 1.1

System Programming. Introduction to Unix

Linux Shell Script. J. K. Mandal

LOG ON TO LINUX AND LOG OFF

CSCI 2132 Software Development. Lecture 5: File Permissions

UNIX COMMANDS AND SHELLS. UNIX Programming 2015 Fall by Euiseong Seo

1. What statistic did the wc -l command show? (do man wc to get the answer) A. The number of bytes B. The number of lines C. The number of words

(a) About Unix. History

Introduction to Linux

CS 3410 Intro to Unix, shell commands, etc... (slides from Hussam Abu-Libdeh and David Slater)

Transcription:

Introduction Introduction to UNIX CSE 2031 Fall 2012 UNIX is an operating system (OS). Our goals: Learn how to use UNIX OS. Use UNIX tools for developing programs/ software, specifically shell programming. November 5, 2012 2 Processes Each running program on a UNIX system is called a process. Processes are identified by a number (process id or PID). Each process has a unique PID. There are usually several processes running concurrently in a UNIX system. ps command % ps a # list all processes PID TTY TIME CMD 2117 pts/24 00:00:00 pine 2597 pts/79 00:00:00 ssh 5134 pts/67 00:00:34 alpine 7921 pts/62 00:00:01 emacs 13963 pts/24 00:00:00 sleep 13977 pts/93 00:00:00 ps 15190 pts/90 00:00:00 vim 18819 pts/24 00:00:07 stayalive 24160 pts/44 00:00:01 xterm... 3 4 The File System Directory Structure Directory structure Current working directory Path names Special notations 5 6 1

Current Working Directory Every process has a current working directory. In a shell, the command ls shows the contents of the current working directory. pwd shows the current working directory. cd changes the current working directory to another. Path Names A path name is a reference to something in the file system. A path name specifies the set of directories you have to pass through to find a file. Directory names are separated by '/' in UNIX. Path names beginning with '/' are absolute path names. Path names that do not begin with '/' are relative path names (start search in current working directory). 7 8 Special Characters. means the current directory.. means the parent directory cd.. cd../notes ~ means the home directory cat ~/lab3.c To go directly to your home directory, type cd Frequently Used Terminal Keystrokes Interrupt the current process: Ctrl-C End of file: Ctrl-D Read input (stdin) from a file o a.out < input_file Redirect output (stdout) to a file o ls > all_files.txt # overwrites all_files.txt Append stdout to a file o ls >> all_files.txt # append new text to file 9 Wildcards (File Name Substitution) Unix Commands Goal: referring to several files in one go.? match single character ls ~/C2031/lab5.??? lab5.doc lab5.pdf lab5.out * match any number of characters ls ~/C2031/lab5.* [ ] match any character in the list enclosed by [ ] ls ~/C2031/lab[567].c lab5.c lab6.c lab7.c We can combine different wildcards. ls [ef]*.c enum.c ex1.c fn2.c There are many of them We will see some of the most useful ones We know already: ls, cp, mv, rm, pwd, mkdir, rmdir, man 11 12 2

cat, more, tail echo % cat phone_book Yvonne 416-987-6543 Amy 416-123-4567 William 905-888-1234 John 647-999-4321 Annie 905-555-9876 % more phone_book Similar to cat, except that the file is displayed one screen at a time. % tail myfile.txt Display the last 10 lines % tail -5 myfile.txt Display the last 5 lines % tail -1 myfile.txt Display the last line % tail +3 myfile.txt Display the file starting from the 3 rd line. 13 When one or more strings are provided as arguments, echo by default repeats those strings on the screen. % echo This is a test. This is a test. It is not necessary to surround the strings with quotes, as it does not affect what is written on the screen. If quotes (either single or double) are used, they are not repeated on the screen. % echo This is a test. This is a test. To display single/double quotes, use \ or \ 14 echo (cont.) wc % echo a \t b a t b % echo 'a \t b' a b % echo "a \t b" a b % wc enum.c 14 37 220 enum.c % wc [e]*.c 14 37 220 enum.c 17 28 233 ex1.c 21 46 300 ex2.c 52 111 753 total % wc -c enum.c 220 enum.c % wc -w enum.c 37 enum.c % wc -l enum.c 14 enum.c 15 16 sort cmp, diff % cat phone_book Yvonne 416-987-6543 Amy 416-123-4567 William 905-888-1234 John 647-999-4321 Annie 905-555-9876 % sort phone_book Amy 416-123-4567 Annie 905-555-9876 John 647-999-4321 William 905-888-1234 Yvonne 416-987-6543 Try these options: sort r reverse normal order sort n numeric order sort nr reverse numeric order sort f case insensitive 17 % cat phone_book Yvonne 416-987-6543 Amy 416-123-4567 William 905-888-1234 John 647-999-4321 Annie 905-555-9876 % cat phone_book2 Yvonne 416-987-6543 Amy 416-111-1111 William 905-888-1234 John 647-999-9999 Annie 905-555-9876 % cmp phone_book phone_book2 phone_book phone_book2 differ: char 9, line 2 % diff phone_book phone_book2 2c2 < Amy 416-123-4567 --- > Amy 416-111-1111 4c4 < John 647-999-4321 --- > John 647-999-9999 18 3

who kill % who ossama pts/13 Nov 7 00:22 (ip-198-96-36-11.dynamic.yorku.ca) hoda pts/21 Nov 4 16:49 (gomez.cs.yorku.ca) gordon pts/24 Nov 5 10:40 (bas2-toronto08-1096793138.dsl.bell.ca) minas pts/29 Nov 2 14:09 (monster.cs.yorku.ca) jas pts/37 Oct 18 12:36 (brayden.cs.yorku.ca) utn pts/93 Nov 7 12:21 (bas2-toronto44-1177753778.dsl.bell.ca) User name Terminal associated with the process Time when they logged in % ps a PID TTY TIME CMD 2117 pts/24 00:00:00 pine 2597 pts/79 00:00:00 ssh 5134 pts/67 00:00:34 alpine 7921 pts/62 00:00:01 emacs 13963 pts/24 00:00:00 sleep 13976 pts/43 00:00:00 sleep 13977 pts/93 00:00:00 ps 15190 pts/90 00:00:00 vim 24160 pts/44 00:00:01 xterm... % kill -9 7921 9 is the KILL signal 19 20 history Pipes % history 10 323 12:45 ls 324 12:47 cd Demo_2031/ 325 12:48 ls 326 12:48 m ex1.c 327 12:49 who 328 12:50 history 10 329 12:52 ls -a 330 12:56 ls Stack/ 331 12:57 ls 332 12:57 history 10 Pipe: a way to connect the output of one program to the input of another program without any temporary file. Pipeline: connection of two or more programs through pipes. Examples: ls l wc l # count number of files who sort # sort user list who wc l # count number of users 21 22 cut Used to split lines of a file A line is split into fields Fields are separated by delimiters A common case where a delimiter is a space: hello there world delimiter field cut Syntax cut [-ffields] [-ccolumns] [-dcharacter] [filename ] If filenames are given on command line, input is taken from those files If no filenames are given, input comes from stdin This approach to input is very common 23 24 4

cut Two main forms - extracting fields cut -f3 -d, extract field 3 from each line fields are separated by ', e.g. with an input of hello,there,world,! output would be just "world" cut The other way - pulling out characters: cut -c30-40 extract characters 30 through 40 (inclusive) from each line Note that we can use ranges (e.g. 4-10) or lists (e.g. 4,6,7) as values for -f or -c. 25 26 uniq uniq Removes repeated lines in a file uniq [-c] [input [output]] Notice difference in args: 1st filename is input file 2nd filename is output file If input is not specified, use stdin If output is not specified, use stdout 27 Only works for lines that are adjacent, e.g. abacus abacus bottle abacus becomes abacus bottle 28 abacus uniq With the -c option output is a count of how many times each line was repeated For previous input: 2 abacus 1 bottle 29 1 abacus sort + uniq uniq is a little limited but we can combine it with sort sort uniq -c counts number of times line appears in file output would now be: 3 abacus 1 bottle 30 5

sort + uniq tr To understand: abacus abacus bottle abacus sort abacus abacus abacus bottle 31 uniq 3 abacus 1 bottle "translates" characters Maps characters from one value to another tr string1 string2 tr [-d] [-c] string Input is always stdin, output is always stdout A character in string1 is changed to the 32 corresponding character in string2 tr tr A simple example: tr x y All instances of 'x' are replaced with 'y' Each string can be a set of characters tr ab xy 'a' is replaced with 'x', 'b' is replaced with 'y' 33 The -d option means delete the given characters tr -d xyz Delete all 'x', 'y', and 'z' characters The -c option means "complement" (i.e. the inverse) tr -d -c xyz Delete all characters except 'x', 'y', and 'z' 34 Why Are These So Weird? Unix philosophy: Do one thing and do it well So 'tr' doesn't know how to read from files, the "cat" command does know how: Regular Expressions A regular expression is a special string (like a wildcard pattern) A compact way of matching several lines with a single string cat filename tr 35 36 6

Regular Expressions The basics: letters and numbers are literal - that is they match themselves: e.g. "foobar" matches "foobar" '.' matches any character (just one) e.g. "fooba." matches "foobar", "foobat", etc. Regular Expressions Each '.' character must match exactly one character e.g. "f..bar" matches "foobar" but not "fubar" [xxx] matches any character in the set e.g. "foob[aeiou]r" matches "foobar", "foober", "foobir", etc. 37 38 Regular Expressions '*' means "0 or more of the last character" "fo*" matches "f", "fo", "foo", "fooo", "foooo", etc. "[0-9][0-9]*" matches a decimal number ".*" matches anything (including an empty string) Regular Expressions "^" matches the beginning of the line, "$" matches the end of the line "^foobar" - matches any line that starts with "foobar" "foobar$" - matches any line that ends with "foobar" '?' means "0 or 1 of the last character" 39 40 grep Prints out all lines in the input that match the given regular expression grep [options] pattern [file ] e.g. grep hello Prints out all lines containing "hello" grep A warning: does the following work? grep ^[a-z]* If you type it in, it won't work Why not? 41 42 7

grep Options control searches: -i - case-insensitive search (don't distinguish between 'a' and 'A') -v - invert search (print out lines which don't match) -l - when used with filenames, print out names of files with matching lines grep Some interesting uses: grep -v '^#' Removes all lines beginning with '#' grep -v '^[ ]*$' Removes all lines which are either empty or contain only spaces 43 44 fgrep Like grep, fgrep searches for things but does not do regular expressions - just fixed strings fgrep == faster grep fgrep 'hello.*goodbye' Searches for string hello.*goodbye - does not match it as a regular expression Working With Files Wildcards are limited The following commands helps us to find files and run commands on them 45 46 find Finds files with the given properties find path [-operation ] Not just regular files - includes directories, devices - everything it finds in the filesystem Starts at the given path and walks down through every directory it finds find We can specify operators to control which files we find what to do with them when we find them All operators begin with "-", e.g. find $HOME -print Prints out the name of every file in your home directory 47 48 8

find Operators are handled left-to-right Each operator is "true" or "false" Stop processing operators for a file if an operator is false e.g. "-print" means print out the file name and is always "true" find Another operator: -type filetype Tests to see what kind of file it is e.g. f = regular file, d = directory find $HOME -type d -print Prints all directories under your home directory. 49 50 find -name pattern = true if the name of the file matches the wildcard pattern 'pattern find $HOME -type f -name '*.c Finds all files under your home directory which are regular files and end in.c So what can you do with this? look at '-exec' operator for find! xargs Another way to use find is to combine it with xargs xargs command xargs executes given command for each word in its stdin find $HOME -type f -name '*.c -print xargs wc -l Counts number of words in all C files 51 52 NEVER-DO List in UNIX Command Terminators Never switch off the power on a UNIX computer. You could interrupt the system while it is writing to the disk drive and destroy your disk. Other users might be using the system. Avoid using * with rm such as rm *, rm *.c Do not name an important program core. When a program crashes, UNIX dumps the entire kernel image to a file called core. Many scripts go around deleting these core files. Do not name an executable file test. There is a Unix command called test. Command terminator: new line or ; % date; who Another command terminator: & % nedit lab9.c& Tells the shell not to wait for the command to complete. Used for a long-running command in the background while you continue to use the xterm for other commands. 53 54 9

Command Terminators (cont.) Use parentheses to group commands % ( sleep 5; date ) & date 14929 # process ID of long-running command Tue Nov 9 14:06:15 EST 2010 # output of 2 nd date % Tue Nov 9 14:06:20 EST 2010 # output of 1 st date The precedence of is higher than that of ; % date; who wc -l % (date; who) wc -l tee command tee copies its input to a file as well as to standard output (or to a pipe). % date tee date.out Tue Nov 9 13:51:22 EST 2010 % cat date.out Tue Nov 9 13:51:22 EST 2010 % date tee date.out wc 1 6 29 % cat date.out Tue Nov 9 13:52:49 EST 2010 55 56 Comments If a shell word begins with #, the rest of the line is ignored. Similar to // in Java. % echo Hello #world Hello % echo Hello#world Hello#world Metacharacters Most commonly used: * Search the current directory for file names in which any strings occurs in the position of * % echo * # same effect as % ls * To protect metacharacters from being interpreted: enclose them in single quotes. % echo *** *** 57 58 Metacharacters (cont.) Or to put a backslash \ in front of each character: % echo \*\*\* *** Double quotes can also be used to protect metacharacters, but The shell will interpret $, \ and ` ` inside the double quotes. So don t use double quotes unless you intend some processing of the quoted string (see slide 10). Quotes Quotes do not have to surround the whole argument. % echo x * y # same as echo x*y x*y What s the difference between these two commands? % ls x*y % ls x*y 59 60 10

Program Output as Arguments To use the output of a command X as the argument of another command Y, enclose X in back quotes: `X` % echo `date` Tue Nov 9 13:11:03 EST 2010 % date # same effect as above Tue Nov 9 13:11:15 EST 2010 % echo date date % wc `ls *` % wc * # same as above Program Output as Arguments (2) Single quotes vs. double quotes: % echo The time now is `date` The time now is Tue Nov 9 13:11:03 EST 2010 % echo "The time now is `date`" The time now is Tue Nov 9 13:11:15 EST 2010 % echo 'The time now is `date`' The time now is `date` 61 62 Program Output as Arguments (3) File/Directory Permissions % pwd /cs/home % ls 1 wc l 26 % echo You have `ls 1 wc l` files in the `pwd` directory You have 26 files in the /cs/home directory 63 64 chmod Command chmod with Binary Numbers chmod who+permissions filename # or dirname chmod who-permissions filename # or dirname Examples: chmod u+x my_script # make file executable chmod a+r index.html # for web pages chmod a+rx Notes # for web pages chmod a-rx Notes chmod a-r index.html chmod u+x my_script chmod a+r index.html chmod a+rx Notes chmod a-rx Notes chmod a-r index.html chmod 700 my_script chmod 644 index.html chmod 755 Notes chmod 700 Notes chmod 750 Notes chmod 600 index.html chmod 640 index.html 65 66 11

chgrp Command Next time chgrp grp_name filename # or dirname Writing Shell Scripts Examples: chgrp submit asg1 chgrp labtest lab9 To display the group(s) a user belongs to, use id command: % id cse12345 uid=12695(cse12345) gid=10000(ugrad) groups=10000(ugrad) Reading: Chapters 1, 2, 3.1 3.5 Practical Programming in the UNIX Environment chmod tutorial: http://catcode.com/teachmod/ 67 68 12