Unix and the Mac OS X Terminal An Introduction

J. F.Weiher 2004

1

2 Basic Concepts

GUI vs. Unix Command Line Directories Paths

Input/Output

3

Basic Concepts GUI vs. Unix  Recognition — Recall  Order from Menu — Cook yourself  Limited — Need to Learn  Learning curve  Shell

4 User Friendly?

5

Learning Curves Difficulty

Time Time Time

GUI CLI

6 Basic Concepts Command Line

 Syntax Critical

 Case Sensitive  Command Name  Options = Switches or Flags  Arguments = Objects of Command  Example ls -al ~/Documents

7

Basic Concepts Directories

 Root  Subdirectories  Users and Home

8 Basic Concepts Paths  Full file designation = /<filename>  Paths - Absolute /Users/you/Documents - Relative Documents  Mac OS X Typing Aids -drag file to terminal - tab completion

9

Basic Concepts Input/Output

 stdin and stdout  Specification in command line overrides default  Redirection > {file} >> {file} < {file}  Pipes |

10 Getting Help

 man -[hk]  whatis  apropos --help  - h  Experiment  Research the item

11

Some Commands

 pwd  cd

0-1  ls -[alFtrRd] 0-n  file <file> 1-n  touch <file> 1-n  rm <file> -[i rR] 1-n  mkdir 1-n  rmdir 1-n

12 Example 1

Welcome to Darwin! • [localhost:~] weiher% who am I weiher ttyp3 Oct 11 07:03 [localhost:~] weiher% whoami weiher [localhost:~] weiher% pwd /Users/weiher [localhost:~] weiher% ls -al /Users drwxr-xr-t 5 root wheel 126 Apr 27 2002 . drwxrwxr-t 65 root admin 2166 Oct 5 20:58 .. drwxrwxrwt 6 root wheel 264 Sep 28 16:43 Shared drwxr-xr-x 16 km staff 500 Aug 22 2002 km drwxr-xr-x 28 weiher staff 908 Oct 11 04:01 weiher

13

Some Path

 Drag Path from GUI  Tab completion  Cut and paste within Terminal Window  ~ = home directory  . = current directory location  .. = parent directory  / = root directory

14 Example 2 [localhost:~] weiher% pwd /Users/weiher [localhost:~] weiher% cd .. [localhost:/Users] weiher% pwd /Users [localhost:/Users] weiher% cd .. [localhost:/] weiher% pwd / [localhost:/] weiher% cd ~ [localhost:~] weiher% pwd /Users/weiher [localhost:~] weiher%

15

More Commands

 man  mv <file…> -[i f] 1-n, 1  cp <file…> -[i] 1-n, 1  more <file> sp, b, q, ? 1  less <file> b f h / 1 in search mode n = next; N = previous  head <file> -[1 2 3…] 1  tail <file> -[1 2 3…] 1  wc < file> -l -w -c 1-n

16 Some Terminal Tricks

| pbcopy = output to clipboard  pbpaste | = input from clipboard  ^^^ = substitute str2 for str1  Arrow keys for navigation  history [m] !n !:p  set history = echo $history  open

= orders to open  open -a = launch it  open -e <file> = edit <file> with TextEdit 17

Concatenate

 cat {file} list file to default output  cat default input and output  cat > {file} default input to file to ^D  cat >>{file} same but append to file  cat {file} | pbcopy copy file to clipboard  pbpaste |cat display clipboard  cat {file1} {file2}… > {output file}

18 More Terminal Tricks

 locate or “*”  find [criteria] powerful but complex  ‘’ or “”  \ = quote next character  backtick quotes ``  ps -ax | grep = returns PID kill - STOP kill -CONT kill  sudo 19

Special Characters

 * ? [ ] { } filename matching & expansion  $ denotes variables  ! ^ history reference & substitution  & sends command to background  | pipe  > < I/O redirection

20 Special Characters (cont)

 ; command separator (and)  && command separator (if)  || command separator (or)  Space argument separator  Tab file completion in  ( ) subshell execution  ` quote for command substitution  \ ‘ “ quote characters 21

Terminal a Rich Resource The directory /usr/share/misc

[…:/usr/share/misc] weiher% grep AGC Airport AGC:Pittsburgh/Allegheny County [localhost:/usr/share/misc] weiher%

[:/usr/share/misc] weiher% grep 19810 zipcodes 19810:Wilmington, DE [localhost:/usr/share/misc] weiher%

[:/usr/share/misc] weiher% grep Bremen inter.phone 49:421:Bremen:Germany, Fed. Rep. Of [localhost:/usr/share/misc] weiher%

22 Wildcards

 * in command line  ? in command line  [abc] in expressions or CL  [^abc] in expressions or CL  [a-dA-D] in expressions pr CL  {chrs, chrs,chrs}in command line  . in command line  .. in command line

23

GREP

 Searches in 1-n files for a string  grep [opts] <file…>  Options: -iclIrw  More available but start simple  grep -ic jim *  grep -rl “Kontextkontrolle” /*  grep -i "[tb]o[mb]" grepfile1  grep -i "[tb]o[mb]" grepfile? 24 Some More Utilities

 ftp  telnet  finger  uptime  cal  bc

25

ftp Example

[localhost:~] weiher ftp udel.edu 220% copland.udel.edu FTP server (Version wu-2.6.2(1) Mon Aug 11 12:44:29 EDT 2003) ready. Name (udel.edu:weiher): weiher 331 Password required for weiher. Password: ******

26 ftp Example pt 2

230 User weiher logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd public_html 250 CWD command successful

27

ftp Example pt 3 ftp> ls Bodmer* 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. -rw-r--r-- 1 weiher 0966 250927 Aug 30 17:09 BodmerWortschatzAlpha.pdf 226 Transfer complete.

28 ftp Example pt 4 ftp> put (local-file) /Users/weiher/grepfile1 (remote-file) grepfile1 local: /Users/weiher/grepfile1 remote: grepfile1 200 PORT command successful. 150 Opening BINARY mode data connection for grepfile1. 226 Transfer complete. 59 bytes sent in 0.261 seconds (226 bytes/s) 29

ftp Example pt 5 ftp> ls grep* 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. -rw-r--r-- 1 weiher 0966 59 Nov 2 18:30 grepfile1 226 Transfer complete.

30 ftp Example pt 6 ftp> quit 221-You have transferred 59 bytes in 1 files. 221-Total traffic for this session was 2357 bytes in 4 transfers. 221-Thank you for using the FTP service on copland.udel.edu. 221 Goodbye. [localhost:~] weiher%

31

Some Hints  Remember count!  Copy terminal output and paste in text document for printing/saving/study  Practice in a special account  Backup regularly--just in case  Remember touch and cat to quickly create files for practice  Be nice; logout of terminal session  ^H = backspace; ^D = end of file 32 Regular Expressions  . matches any single character  [xyz] any one character of x,y,z  [^xyz] that is not x, y, or z  [x-z] in the range x to z  * preceding pattern 0 or more times  ? preceding pattern 0 or 1 times  + preceding pattern 1 or more times  ^ the start of a line  $ the end of a line  \x or [x] removes any special meaning of x

33

finger Example […:~] weiher% finger [email protected] [udel.edu] X.500 Finger Service... 3 exact matches for "flexman": Edmund.A..Flexman Edmund.Arthur.Flexman Student, Division of Continuing Education, Ruth.M.Flexman Student, Division of Continuing Education, NRQ, Undergraduate, non-degree Coordinator, CE-Prof & Noncredit Programs

34 finger Example pt 2 […] weiher% finger [email protected] [udel.edu] X.500 Finger Service... 1 exact match found for "Ruth.M.Flexman": "Ruth M Flexman, CE-Prof and Noncredit Programs" Also Known As: Ruth M Flexman E-Mail Address: [email protected] Work Phone: +1 302-573-4416 : Coordinator, CE-Prof & Noncredit Programs … Uniqname: flexman

35

telnet Example [~] weiher% telnet udel.edu Trying 128.175.13.92... Connected to udel.edu. Escape character is '^]'. SunOS 5.9 login: weiher Password:****** Using project 0966, ALL-EMAIL You have $483.97 remaining in this account.

36 telnet Example pt 2 Last login: Sun Nov 2 21:08:32 from ppp-as37-25.nss Sun Microsystems Inc. SunOS 5.9 copland.udel.edu% quota -v

Disk quotas for weiher (uid 14158): Filesystem usage quota limit timeleft /home/usra 17292 24576 24576 copland.udel.edu% logout

Connection closed by foreign host.

37

Last Words

 Version Changes: Apple giveth & taketh away  [localhost:~] weiher% Bill Gates  OK? kill Gates?  /Library/Documentation/Commands /grep/grep_toc.html  Also for diffutils, dc, gzip

38 39

40 41

42 43

44 45

46 47

48 49

50 51

52 53

54 55

56