This page shows some examples of how to use basic UNIX commands. If you want more information about a command view the man page by typing man command.
Managing Files and Directories
mkdir, cd
brian-harringtons-computer:~/Work brh$ mkdir tmp brian-harringtons-computer:~/Work brh$ cd tmp/ brian-harringtons-computer:~/Work/tmp brh$
pwd
brian-harringtons-computer:~/Work/tmp brh$ pwd /Users/brh/Work/tmp brian-harringtons-computer:~/Work/tmp brh$
touch
brian-harringtons-computer:~/Work/tmp brh$ touch file brian-harringtons-computer:~/Work/tmp brh$
ls
brian-harringtons-computer:~/Work/tmp brh$ ls file brian-harringtons-computer:~/Work/tmp brh$ ls -a . .. file brian-harringtons-computer:~/Work/tmp brh$ ls -l total 0 -rw-r--r-- 1 brh brh 0 Aug 30 17:25 file brian-harringtons-computer:~/Work/tmp brh$ ls -al total 0 drwxr-xr-x 3 brh brh 102 Aug 30 17:25 . drwxr-xr-x 38 brh brh 1292 Aug 30 17:20 .. -rw-r--r-- 1 brh brh 0 Aug 30 17:25 file brian-harringtons-computer:~/Work/tmp brh$
chmod
brian-harringtons-computer:~/Work/tmp brh$ chmod 755 file brian-harringtons-computer:~/Work/tmp brh$ ls -l total 0 -rwxr-xr-x 1 brh brh 0 Aug 30 17:25 file brian-harringtons-computer:~/Work/tmp brh$
mv, cp, rm
brian-harringtons-computer:~/Work/tmp brh$ mv file file2 brian-harringtons-computer:~/Work/tmp brh$ ls file2 brian-harringtons-computer:~/Work/tmp brh$ cp file2 file brian-harringtons-computer:~/Work/tmp brh$ ls file file2 brian-harringtons-computer:~/Work/tmp brh$ rm file2 brian-harringtons-computer:~/Work/tmp brh$ ls file brian-harringtons-computer:~/Work/tmp brh$ cp ../hello.cpp . brian-harringtons-computer:~/Work/tmp brh$ ls file hello.cpp brian-harringtons-computer:~/Work/tmp brh$ cp hello.cpp hello2.cpp brian-harringtons-computer:~/Work/tmp brh$ ls file hello.cpp hello2.cpp
diff
brian-harringtons-computer:~/Work/tmp brh$ diff file hello.cpp
0a1,9
> #include <iostream>
> using namespace std;
>
> int main()
> {
> for(int i=0; i<100; i++)
> cout<<"Hello World "<<i<<" of 100"<<endl;
> return 0;
> }
brian-harringtons-computer:~/Work/tmp brh$ diff hello.cpp hello2.cpp
brian-harringtons-computer:~/Work/tmp brh$ diff -s hello.cpp hello2.cpp
Files hello.cpp and hello2.cpp are identical
brian-harringtons-computer:~/Work/tmp brh$ vi hello2.cpp
brian-harringtons-computer:~/Work/tmp brh$ diff hello.cpp hello2.cpp
2d1
< using namespace std;
7c6
< cout<<"Hello World "<<i<<" of 100"<<endl;
---
> std::cout<<"Hello World "<<i<<" of 100"<<std::endl;
brian-harringtons-computer:~/Work/tmp brh$
wc
brian-harringtons-computer:~/Work/tmp brh$ wc file
0 0 0 file
brian-harringtons-computer:~/Work/tmp brh$ wc hello.cpp
9 20 138 hello.cpp
brian-harringtons-computer:~/Work/tmp brh$ wc -l hello.cpp
9 hello.cpp
brian-harringtons-computer:~/Work/tmp brh$ wc -w hello.cpp
20 hello.cpp
brian-harringtons-computer:~/Work/tmp brh$ wc -c hello.cpp
138 hello.cpp
brian-harringtons-computer:~/Work/tmp brh$
g++
brian-harringtons-computer:~/Work/tmp brh$ g++ hello.cpp brian-harringtons-computer:~/Work/tmp brh$ g++ -o h2 hello2.cpp brian-harringtons-computer:~/Work/tmp brh$ ls a.out file h2 hello.cpp hello2.cpp brian-harringtons-computer:~/Work/tmp brh$
>, >>
brian-harringtons-computer:~/Work/tmp brh$ ./a.out > output
brian-harringtons-computer:~/Work/tmp brh$ ls
a.out h2 hello2.cpp
file hello.cpp output
brian-harringtons-computer:~/Work/tmp brh$ wc -l output
100 output
brian-harringtons-computer:~/Work/tmp brh$ ./a.out >> output
brian-harringtons-computer:~/Work/tmp brh$ wc -l output
200 output
brian-harringtons-computer:~/Work/tmp brh$ ./a.out > output
brian-harringtons-computer:~/Work/tmp brh$ wc -l output
100 output
brian-harringtons-computer:~/Work/tmp brh$
cat, more/less (press 'q' to exit)
brian-harringtons-computer:~/Work/tmp brh$ cat hello2.cpp
#include <iostream>
int main()
{
for(int i=0; i<100; i++)
std::cout<<"Hello World "<<i<<" of 100"<<std::endl;
return 0;
}
brian-harringtons-computer:~/Work/tmp brh$ more output
Hello World 0 of 100
Hello World 1 of 100
Hello World 2 of 100
Hello World 3 of 100
Hello World 4 of 100
Hello World 5 of 100
Hello World 6 of 100
Hello World 7 of 100
Hello World 8 of 100
Hello World 9 of 100
Hello World 10 of 100
Hello World 11 of 100
Hello World 12 of 100
Hello World 13 of 100
Hello World 14 of 100
Hello World 15 of 100
Hello World 16 of 100
Hello World 17 of 100
Hello World 18 of 100
Hello World 19 of 100
Hello World 20 of 100
Hello World 21 of 100
Hello World 22 of 100
output 22%
head, tail
brian-harringtons-computer:~/Work/tmp brh$ head -n 3 output Hello World 0 of 100 Hello World 1 of 100 Hello World 2 of 100 brian-harringtons-computer:~/Work/tmp brh$ tail -n 3 output Hello World 97 of 100 Hello World 98 of 100 Hello World 99 of 100 brian-harringtons-computer:~/Work/tmp brh$
<, |
brian-harringtons-computer:~/Work/tmp brh$ tail -n 3 < output Hello World 97 of 100 Hello World 98 of 100 Hello World 99 of 100 brian-harringtons-computer:~/Work/tmp brh$ cat output | tail -n 3 Hello World 97 of 100 Hello World 98 of 100 Hello World 99 of 100 brian-harringtons-computer:~/Work/tmp brh$
grep
brian-harringtons-computer:~/Work/tmp brh$ grep 27 output Hello World 27 of 100 brian-harringtons-computer:~/Work/tmp brh$ grep 2[6-7] output Hello World 26 of 100 Hello World 27 of 100 brian-harringtons-computer:~/Work/tmp brh$
gzip, gunzip, tar
brian-harringtons-computer:~/Work/tmp brh$ gzip hello.cpp brian-harringtons-computer:~/Work/tmp brh$ ls a.out file hello.cpp.gz output endless.cpp h2 hello2.cpp typescript brian-harringtons-computer:~/Work/tmp brh$ gunzip hello.cpp.gz brian-harringtons-computer:~/Work/tmp brh$ ls a.out file hello.cpp output endless.cpp h2 hello2.cpp typescript brian-harringtons-computer:~/Work/tmp brh$ tar -czvf cppfiles.tar.gz *.cpp endless.cpp hello.cpp hello2.cpp brian-harringtons-computer:~/Work/tmp brh$ ls a.out endless.cpp h2 hello2.cpp typescript cppfiles.tar.gz file hello.cpp output brian-harringtons-computer:~/Work/tmp brh$ tar -tzvf cppfiles.tar.gz -rw-r--r-- brh/brh 57 2006-08-30 18:28:49 endless.cpp -rw-r--r-- brh/brh 138 2006-08-30 17:31:38 hello.cpp -rw-r--r-- brh/brh 127 2006-08-30 18:01:23 hello2.cpp brian-harringtons-computer:~/Work/tmp brh$ tar -xzvf cppfiles.tar.gz endless.cpp hello.cpp hello2.cpp brian-harringtons-computer:~/Work/tmp brh$
df, du
brian-harringtons-computer:~/Work/tmp brh$ df -h Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 74G 32G 42G 44% / devfs 96K 96K 0B 100% /dev fdesc 1.0K 1.0K 0B 100% /dev <volfs> 512K 512K 0B 100% /.vol automount -nsl [115] 0B 0B 0B 100% /Network automount -fstab [151] 0B 0B 0B 100% /automount/Servers automount -static [151] 0B 0B 0B 100% /automount/static brian-harringtons-computer:~/Work/tmp brh$ du -h 44K . brian-harringtons-computer:~/Work/tmp brh$
quota
brian-harringtons-computer:~/Work/tmp brh$ quota Disk quotas for user brh (uid 501): none brian-harringtons-computer:~/Work/tmp brh$
script
brian-harringtons-computer:~/Work/tmp brh$ script Script started, output file is typescript brian-harringtons-computer:~/Work/tmp brh$ ls a.out h2 hello2.cpp typescript file hello.cpp output brian-harringtons-computer:~/Work/tmp brh$ whatis script script(1) - make typescript of terminal session brian-harringtons-computer:~/Work/tmp brh$ exit exit Script done, output file is typescript brian-harringtons-computer:~/Work/tmp brh$ ls a.out h2 hello2.cpp typescript file hello.cpp output brian-harringtons-computer:~/Work/tmp brh$ cat typescript Script started on Wed Aug 30 18:19:03 2006 brian-harringtons-computer:~/Work/tmp brh$ ls a.out h2 hello2.cpp typescript file hello.cpp output brian-harringtons-computer:~/Work/tmp brh$ whatis script script(1) - make typescript of terminal session brian-harringtons-computer:~/Work/tmp brh$ exit exit Script done on Wed Aug 30 18:19:14 2006 brian-harringtons-computer:~/Work/tmp brh$
which
brian-harringtons-computer:~/Work/tmp brh$ which perl /usr/bin/perl brian-harringtons-computer:~/Work/tmp brh$
echo $?
brian-harringtons-computer:~/Work/tmp brh$ cat status.cpp
#include <cstdlib>
int main(int argc, char *argv[])
{
int status=0;
if(argc>1)
status=atoi(argv[1]);
return status;
}
brian-harringtons-computer:~/Work/tmp brh$ g++ status.cpp
brian-harringtons-computer:~/Work/tmp brh$ ./a.out
brian-harringtons-computer:~/Work/tmp brh$ echo $?
0
brian-harringtons-computer:~/Work/tmp brh$ ./a.out 45
brian-harringtons-computer:~/Work/tmp brh$ echo $?
45
brian-harringtons-computer:~/Work/tmp brh$
file
brian-harringtons-computer:~/Work/tmp brh$ file ./a.out ./a.out: Mach-O executable i386 brian-harringtons-computer:~/Work/tmp brh$ file --mime ./a.out ./a.out: application/octet-stream brian-harringtons-computer:~/Work/tmp brh$ file hello.cpp hello.cpp: ASCII C program text brian-harringtons-computer:~/Work/tmp brh$ file --mime hello.cpp hello.cpp: text/x-c; charset=us-ascii brian-harringtons-computer:~/Work/tmp brh$
Help
whatis, apropos
brian-harringtons-computer:~/Work/tmp brh$ whatis cd
cd(ntcl) - Change working directory
brian-harringtons-computer:~/Work/tmp brh$ apropos applet
appleping(1) - exercises the AppleTalk network by sending packets
to a named host
appletalk(8) - enables you to configure and display AppleTalk network
interfaces
appletviewer(1) - Java applet viewer
at_cho_prn(8) - allows you to choose a default printer on the AppleTalk
internet
atlookup(1) - looks up network-visible entities (NVEs) registered on the
AppleTalk network system
atprint(1) - transfer data to a printer using AppleTalk protocols
atstatus(1) - displays status information from an AppleTalk device
brian-harringtons-computer:~/Work/tmp brh$
man (press 'q' to exit)
brian-harringtons-computer:~/Work/tmp brh$ man apropos
apropos(1) apropos(1)
NAME
apropos - search the whatis database for strings
SYNOPSIS
apropos keyword ...
DESCRIPTION
apropos searches a set of database files containing short descriptions
of system commands for keywords and displays the result on the standard
output.
SEE ALSO
whatis(1), man(1).
Jan 15, 1991 apropos(1)
(END)
Finding Things
find
brian-harringtons-computer:~/Work/tmp brh$ find . -name hello?.cpp ./hello2.cpp brian-harringtons-computer:~/Work/tmp brh$
locate
brian-harringtons-computer:~/Work/tmp brh$ locate perldoc /usr/bin/perldoc /usr/share/man/man1/perldoc.1 /usr/share/zsh/4.2.3/functions/_perldoc brian-harringtons-computer:~/Work/tmp brh$
About Users
w, who, whoami
brian-harringtons-computer:~/Work/tmp brh$ w 18:20 up 2 days, 10:53, 2 users, load averages: 0.13 0.12 0.08 USER TTY FROM LOGIN@ IDLE WHAT brh console - Mon07 2days - brh p1 - Mon07 - w brian-harringtons-computer:~/Work/tmp brh$ who brh console Aug 28 07:27 brh ttyp1 Aug 28 07:31 brian-harringtons-computer:~/Work/tmp brh$ whoami brh brian-harringtons-computer:~/Work/tmp brh$
last
brian-harringtons-computer:~/Work/tmp brh$ last -3 brh ttyp1 Mon Aug 28 07:31 still logged in brh ttyp1 Mon Aug 28 07:31 - 07:31 (00:00) brh console brian-harrington Mon Aug 28 07:27 still logged in brian-harringtons-computer:~/Work/tmp brh$
finger
brian-harringtons-computer:~/Work/tmp brh$ finger brh Login: brh Name: Brian Harrington Directory: /Users/brh Shell: /bin/bash On since Mon Aug 28 07:27 (CDT) on console, idle 2 days 10:53 (messages off) On since Mon Aug 28 07:31 (CDT) on ttyp1 No Mail. No Plan. brian-harringtons-computer:~/Work/tmp brh$
Processes
ps
brian-harringtons-computer:~/Work/tmp brh$ ps -u brh USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND brh 254 0.0 0.0 27712 832 p1 S Mon07AM 0:00.28 -bash brian-harringtons-computer:~/Work/tmp brh$
kill
brian-harringtons-computer:~/Work/tmp brh$ cat endless.cpp
#include <iostream>
int main()
{
for(;;);
return 0;
}
brian-harringtons-computer:~/Work/tmp brh$ g++ endless.cpp
brian-harringtons-computer:~/Work/tmp brh$ ./a.out &
[1] 967
brian-harringtons-computer:~/Work/tmp brh$ ps -u brh
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
brh 967 98.8 0.0 36500 836 p1 R 6:22PM 0:05.54 ./a.out
brh 254 0.0 0.0 27712 828 p1 S Mon07AM 0:00.29 -bash
brian-harringtons-computer:~/Work/tmp brh$ kill 967
[1]+ Terminated ./a.out
brian-harringtons-computer:~/Work/tmp brh$ ps -u brh
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
brh 254 0.0 0.0 27712 832 p1 S Mon07AM 0:00.29 -bash
brian-harringtons-computer:~/Work/tmp brh$
top (press 'q' to exit)
brian-harringtons-computer:~/Work/tmp brh$ ./a.out & [1] 970 brian-harringtons-computer:~/Work/tmp brh$ top Processes: 64 total, 4 running, 60 sleeping... 248 threads 18:23:54 Load Avg: 0.54, 0.23, 0.13 CPU usage: 50.9% user, 4.5% sys, 44.6% idle SharedLibs: num = 181, resident = 50.6M code, 6.48M data, 9.41M LinkEdit MemRegions: num = 12178, resident = 554M + 21.9M private, 173M shared PhysMem: 196M wired, 248M active, 872M inactive, 1.29G used, 711M free VM: 11.3G + 125M 43735(0) pageins, 0(0) pageouts PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE VSIZE 971 top 9.8% 0:01.29 1 18 20 492K 800K 2.26M 26.9M 970 a.out 100.2% 0:14.25 1 13 18 140K 728K 404K 35.6M 716 mdimport 0.0% 0:00.29 3 65 62 1.22M 4.48M 3.95M 39.2M 664 QuickTime 0.0% 0:45.42 3 127 240 6.91M 19.0M 13.2M 376M 658 firefox-bi 0.1% 1:21.54 9 178 552 64.4M 30.3M 82.9M 446M 596 DashboardC 0.0% 0:00.77 4 105 168 7.23M 9.84M 10.8M 363M 595 DashboardC 0.0% 0:00.38 3 95 157 4.18M 5.81M 6.88M 353M 594 DashboardC 0.0% 0:04.00 7 157 262 7.07M 13.7M 12.7M 377M 593 DashboardC 0.0% 0:00.99 3 98 169 5.23M 10.8M 9.33M 375M 549 Keynote 0.0% 0:06.19 2 96 365 20.3M 40.1M 36.4M 435M 508 AppleSpell 0.0% 0:00.19 1 46 34 680K 3.20M 1.84M 37.8M 502 Cyberduck 0.3% 2:41.96 21 558 594 56.6M 31.8M 70.4M 641M 347 translate 0.0% 0:02.11 5 77 93 9.36M 5.93M 11.2M 115M 312 JavaApplic 0.3% 4:44.68 19 742 449 62.4M 35.5M 79.7M 638M 308 Preview 0.0% 0:38.86 1 76 617 13.5M 10.4M 17.7M 363M 254 bash 0.0% 0:00.29 1 14 17 232K 1.18M 828K 27.1M
Time
cal
brian-harringtons-computer:~ brh$ cal
August 2006
S M Tu W Th F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
brian-harringtons-computer:~ brh$
date
brian-harringtons-computer:~ brh$ date Wed Aug 30 17:15:25 CDT 2006 brian-harringtons-computer:~ brh$
time
brian-harringtons-computer:~/Work/tmp brh$ time find / -name java > output real 1m57.148s user 0m2.600s sys 0m19.431s brian-harringtons-computer:~/Work/tmp brh$ time locate java > output real 0m0.783s user 0m0.180s sys 0m0.031s brian-harringtons-computer:~/Work/tmp brh$