UNIX to Plan 9 command translation D1373207366 Astevie #The command set of Plan 9 is similar to that of UNIX. The commands #fall into several broad classes. # #Some are new programs for old jobs: programs like ls(1), cat(1), and #who(1) have familiar names and functions but are new, simpler #implementations. Who, for example, is a shell script, while ps is #just 163 lines of C code. # #Some commands are essentially the same as their UNIX ancestors: #awk(1), troff(1), and others have been converted to ANSI C and #extended to handle Unicode, but are still the familiar tools. # #Some are entirely new programs for old niches: the shell rc(1), text #editors acme(1) and sam(1), debuggers acid(1) and db(1), and others #displace the better-known UNIX tools with similar jobs. # #Compatibility was not a requirement for the system. Where the old #commands or notation seemed good enough, we kept them. When they #didn't, we replaced them. # #The following list of some UNIX commands, files, and shell #terminology, which you can emulate in a Plan 9 system: # #! UNIX Plan 9 from Bell Labs #! #! `command` `{ command } #! #! .profile $home/lib/profile #! #! ^C (Ctrl+C) DEL key -- doesn't work without rio(4) though. #! #! ~ $home #! /usr/$user/ #! #! ~username /usr/username #! #! "$@" $* #! #! 1>&2 >[2=1] #! #! apropos lookman(1) #! #! at specific-time while (! ~ (`{ date }) (specific-time)); commands #! #! cc one of ones in 0c(1) followed by the same of 0l(1) #! pcc(1) for Standard C/POSIX programs #! #! cp -r /foo/ /bar/ mkdir /bar/foo/ && dircp /foo/ /bar/foo/ #! #! crontab -e sam /cron/$user/cron #! #! curl http://foo/bar #! wget http://foo/bar hget http://foo/bar > bar #! (progress bar, -t for ascii) hget -v -o bar http://foo/bar |[2] aux/statusbar [-t] 'downloading' #! #! cut awk -F ... #! #! apt-get dist-upgrade #! rpm -Ua #! yum -c update /usr/glenda/bin/rc/pull #! #! apt-get install #! rpm -i package #! yum -c install package 9fs sources ; cd /n/sources/ #! /n/sources/contrib/fgb/root/rc/bin/contrib/install fgb/contrib ; contrib/install $who/$what #! #! df disk/kfscmd check #! echo fsys all df | con -l /srv/fscons #! df in fossilcons(8) #! #! ee #! emacs #! jim #! joe #! nano #! pico #! vi #! xedit sam #! acme #! #! expr hoc -e #! #! find du -a | grep pattern #! grep pattern `{du -a root} #! -name du -a root | grep name #! pattern in a file grep -n pattern `{du -a root | awk '{print $2}'} #! -exec cp '{}' x ';' cp `{ du -a | grep pattern } x #! #! fsck echo fsys all check fix | con -l /srv/fscons #! if running venti, for a thorough fix: echo fsys all check fix venti snapshot | con -l /srv/fscons #! #! ftp ftpfs host.domain (Remote files apear in /n/ftp). #! #! ftpd aux/listen ftp #! #! getopt getflags(8) #! #! groff -l troff | lp #! #! grops dpost - see troff(1) #! #! head sed 10q #! #! hwclock cat '#r/rtc' #! aux/timesync #! #! id echo $user #! cat /dev/user #! grep `{cat /dev/user} /adm/users #! grep $user /adm/users #! #! iostat iostats(4) #! #! ifconfig(IP address) cat /net/ndb #! #! ifconfig ip/ipconfig ether /net/ether0 add 192.168.1.32 #! ip/ipconfig # let dhcp do it #! #! kill pid stop processname | rc #! echo stop > /proc/pid/ctl #! (in both cases, switch stop with start to get it back) #! #! kill -9 pid #! kill -KILL pid slay processname | rc #! echo kill > /proc/pid/ctl #! #! ld one of the ones in 0l(1) #! #! ls lc -F #! #! lspci pci -v #! #! make mk (not exactly the same) #! if necessary, use make in ape/psh #! #! man -k lookman(1) #! #! less #! more p #! #! mount [-p flag] bind(1) #! unmount(1) #! 9fs(1) #! srv(1) #! import(4) #! exportfs(4) #! -p ns(1) #! #! mount /dev/fd0 /mnt a: ; cd /n/a: #! #! mount /dev/acd0 /mnt 9660srv #! mkdir /n/9660 #! mount /srv/9660 /n/9660 /dev/sdD0/data #! #! netcat -l aux/listen1 -t tcp!*!$port command #! #! netstat [-r flag] netstat(1) #! -r cat /net/iproute #! #! nfsstat iostats(4) #! #! nslookup ndb/dnsquery #! #! passwd auth/changeuser username (first time) #! passwd (subsequent times) #! #! paste [FILE] ... pr -m [FILE] ... #! #! PATH=$PATH:... bind -a directory /bin #! #! ping ip/ping #! #! pkginfo wrap(8) #! #! reboot fshalt -r (note that there is a reboot command, but it doesn't call fshalt) #! #! rmdir rm(1) #! With contents inside: rm -r dir #! #! sh rc(1) #! if necessary, ape/psh #! #! shutdown fshalt(8) #! echo reboot > /dev/reboot #! echo panic > /dev/reboot #! #! snoop snoopy(8) #! #! source . #! #! startx #! launch (Andrew Project) #! mux (Blit's wm) rio (replaces 8½ and help) #! #! tar xzf file.tgz tar xf file.tgz #! #! tcpdump snoopy(8) #! #! traceroute ip/traceroute #! #! tree du $* | awk '{print $2}' | sort | sed 's/[^\/]+\// /g' #! #! ufs{dump|restore} yesterday(1) #! history(1) #! fs(4) #! #! vigr #! vipw [Adding a new user] #! #! vlock http://mirtchovski.com/lanlp9/rlock #! (specify password at invocation) #! #! vmstat stats(1) #! cat /dev/sysstat #! cat /dev/swap #! #! which whatis #! #! xbiff faces #! #! xclock clock #! games/catclock #! faces #! #! xditview troff | page #! troff | proof #! #! xload stats -l #! #! xlock /n/sources/contrib/steve/conslock #! (authenticates against authentication server) #! #! xlogo window 'hget http://plan9.bell-labs.com/plan9/img/plan9bunnysmblack.jpg | page' #! #! xman cat man -t cat | page #! #! xv file.jpg page file.jpg #! #! xwininfo winwatch #! #! yes while() { echo y } #! yes arg while() { echo arg } #! # #OTHER APPLICATIONS: # # * [Web browsers] # * Word processing: troff(1) #