OpenVMS Commands with unix equivalents
Originally downloaded from:
https://www3.physnet.uni-hamburg.de/physnet/vms-unix-commands.html
Extensively formatted and corrected/modified by Nicholas DeLarge
Tue Sep 21 05:33:13 CDT 2021

OpenVMS			UNIX		Explanation/examples
=========================================================================
APPEND			cat		Concatenates files.
ASSIGN or DEFINE	= (sh,bash,ksh,etc), set (csh,zsh,etc)
			sh,etc: "DIR = ls" csh,etc: "set DIR ls"
ATTACH			fg	
BACKUP			tar or pax	back up files into a tar file.
  /INIT			tar -c or pax	Restore files.
  /LIST			tar -t		List contents.
  /LOG			tar -v		Report progress.
  /NOREWIND		tar -r		Write at end of existing backup
					(tar) files.
  /RECORD		tar -m		Update file's modification date
					upon restore.
COPY			cp		Copy a file 
COPY /CONFIRM		cp -i		Confirm before copying.
CREATE			touch		Create or update a file.
  /DIRECTORY		mkdir		Create a subdirectory.
CREATE filename		cat << filename
					Create a file from the keyboard.
DEBUG			dbx		Debug a program.
DELETE			rm		Delete a file.
DELETE			rmdir		Delete an empty subdirectory.
  /CONFIRM		rm -i		Confirm deletion.
  /ENTRY		lprm		Remove queued line printer job.
  /QUEUE		lprm -P		Remove all jobs from the queue.
  /LOG			rm -e		Delete files and list them as they are deleted.
  /SYMBOL		unset		Get rid of an environment variable.
DIFFERENCES		diff		Display all differences in files 
					or directories.
  /MAXIMUM_DIFF= 1	cmp 		Display first difference in two files
					(typically used with binary files).
  /NUMBER NL:		cat -n		Display a file with line numbers.
  /SLP			diff - e	Generate editing changes for the ed editor.
DIRECTORY		ls		List files.
DIRECTORY [...]		ls -R		Do a recursive directory/list of files.
DIRECTORY [...]		find		Find a file
DIRECTORY *.DIR		ls -d		List directory name(s) only ls -Rd
  /BY_OWNER		ls -l dir | grep owner	
					List only those files owned by a
					specifed user.
  /COLUMN		ls -1		List one file per line.
  /DATE			ls -c		List by creation/last modification.
  /FULL			ls -l		Long listing.
  /FULL /TOTAL		du		Summarize disk usage.
  /MODIFIED /SINCE  [...]		
			find -mtime +n	
					Modified more than n days ago.
  /MODIFIED /BEFORE [...]		
			find -mtime +n	
					Modified more than n days ago.
  /OWNER		ls -g		Include group (used with |).
  /SIZE			ls -s		Include size.
DISMOUNT /UNLOAD	mt rewofmt offline	
					Rewind and unload the tape.
DUMP			od  		Dump a file in various formats.
  /HEXADECIMAL		od -h		Hexadecimal dump.
  /OCTAL		od -o		Octal dump.
EDIT 			vi		Screen editor session.
EDIT /RECOVER		vi -r		Recover a screen editing session.
EXCHANGE		dd		Back up, restore, and convert
					 nonstandard files.
EXIT			exit		Terminate a script.
HELP			man		Display online reference pages. 
HELP HINTS		man -k topic	
					Display a list of commands that
					correspond to the specified topic.
INQUIRE /NOPUNCTUATION	
			read choice? 
					Prompt for a response and put the
					response into an environment variable.
INITIALIZE device:	mkfs device	
					Format a diskette.
LIBRARY			ar		Library maintainer.
  /CREATE		ar -cr		Create library.
  /EXTRACT		ar -x		Extract modules.
  /INSERT		ar -q		Insert modules.
  /LIST			ar -t		List modules.
  /REPLACE		ar -r		Replace modules.
LINK			ld		Link compiled source code into an 
					executable image.
LOGIN /CLI		.login,.profile,etc	
					Set of commands automatically executed
					at login time. On OpenVMS, LOGIN/CLI
					specifies an alternate command language
					interpreter.
LOGOUT			logout,exit	Terminate a terminal session.
MAIL			mail		Invoke the mail utility.
MERGE			sort -m		Merge sorted files.
MOUNT			mount		Mount a tape.
ON COUNTROL_C THEN	trap 2		Enable handler for Stop signal.
ON CONTROL_Y		onintr		On interrupt.
PHONE			talk tty name	Communicate interactively with 
					another user.
PRINT			lpr		Print a file on the default line printer.
  /COPIES=N		lpr -#n		Print n copies.
  /DELETE		lpr -r		Remove file after printing
  /FORM			lpr -ln		Make page n lines (default = 66)
  /FORM			lpr -n		Print n column output.
  /FORM			lpr -wn		Set line width to n
  /HEADER		pr -h string | lpr
					Print a header on each page.
  /NAME=jobname		lpr -Jjobname
					Include job name on the first page 
					of the job.
  /NOFLAG		lpr -h		Print with no header page.
  /NOTIFY		lpr -m		Send mail upon completion.
  /QUEUE		lpr -Pqueue	Print a file on the specified queue.
READ			read		Read input (korn shell)
RECALL /ALL		history		Recall command lines
REPLY /USER		write		Send a brief message to a logged-in user
RENAME			mv			move/rename a file(s)
   /CONFIRM		mv -i		confirm the move/rename of a file(s)
SEARCH			grep		Search files for strings.
   /MATCH=NOR		grep -v		List only lines that do not match
   /NOEXACT		grep -i		Ignore case distinctions.
   /NUMBERS		grep -n		Precede each match with line number.
   /STATISTICS		grep -c		List only a file name that contains match
  /WINDOW = 0		grep -l		Return only file name(s) that contains match
SET DEFAULT		cd		Change directory.
SET FILE/OWNER		chgrp		Change group ownership of a file.
SET HOST		rlogin		Network login to trusted host.
SET HOST /DTE		tip		Dial remote host.
SET HOST 0 /LOG		script		Record a transcript of a terminal session.
SET PASSWORD		passwd		Change you local password.
SET PROCESS /PRIORITY	nice/renice	Change the priority of a process.
SET PROTECTION		chmod		Change file protection.
   /DEFAULT		umask		Change default protection for files not yet created.
SET TERMINAL		tset/stty	Set terminal characteristics.
SET VERIFY		ksh -x/csh -x	Verify command or script execution.
				 	Echo after variable substitution.
SHOW DEFAULT		pwd 		Display current directory.
SHOW DEVICE /FULL	df filesystem	
					Display information on a file system
SHOW LOGICAL		printenv	Display environment characteristics.
SHOW PROCESS /ALL	ps -l		Dislay all processes on system.
SHOW /QUEUE		lpq 		Display default print queue status.
SHOW STATUS		time		Display resources used by a process.
SHOw TIME		date		Display date and time
SHOW USERS		who 		Display the list of current system users.
SORT			sort		Sort and merge.
   /KEY			sort -k field1,[field2]	
					Starting/ending porint of sort key.
   /OUTPUT		sort -o file	Direct output to file.
SPAWN /NOWAIT		bg		Move a process to the background.
STOP /ID		kill -9		Remove a process.
SUBMIT			at		Start a process at a latter time.
TYPE			cat		Display a file
   /PAGE		more		Display a file, pausing after each page.
   /PAGE NL:		clear		Clear the terminal screen.
WRITE			/bin/echovar > file
					Create a file and write a string or the
					contents of a variable to it.
WRITE			/bin/echovar >> file
					Append a string or the contents of a
					variable to an existing file.
WRITE SYS$OUTPUT	echo		Write to standard output.

OpenVMS C compilation
====================================================
CC prog.c		cc prog.c	Compile C source to object file
CC prog1.c + prog2.c	cc prog1.c prog2.c
					Compile multiple C source files
CC prog.c + A.TLB/LIB	cc -llib	Compile C source with library
CC/DEFINE="NAME=Mary"	cc -DNAME=\"Mary\"
					Compile C source, #define on cmd line
CC hello.c		cc hello.c
LINK hello.obj		mv a.out ./hello; chmod +x ./hello
RUN hello.exe		./hello
					Example of compiling and running hello
					world C source
CREATE hello.bas
10 print "hello world"
^C
BASIC hello.bas
LINK hello.obj
RUN hello.exe
					Example of creating, compiling, linking
					and running source code

LIBRARY/LIST SYS$LIBRARY:SYS$STARLET_C.TLB
					List system text-module header files
LIBRARY/LIST SYS$LIBRARY:DECC$RTLDEF.TLB
					List DECC text-module header files
DIR SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C]*.H;
					List OpenVMS *.h header files
DIR SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF]*.H;
					List DECC *.h header files
DIR SYS$LIBRARY:*.H; 
					List layered product/misc *.h files


OpenVMS Mathematical Operators Function Equivalents
====================================================
OpenVMS			UNIX	Explanation
====================================================
.EQ., .EQS.		==	Equal to
.NE., .NES.		!	Not equal to
.AND.			&&	Boolean and
.OR.			||	Boolean or
.GT., .GTS.		>	Greater than
.GE., .GES.		>=  	Greater than or equal to
.LT., .LTS.		<	Less than
.LE., .LES.		<=	Less than or euqal to
+			+   	Add
-			-   	Subtract
*			*	Multiply
/			/	Divide
var + 1			var++	Increment by 1
var - 1			var--	Decrement by 1
			%	Modulo
			>>	Right bit shift
			<<	Left bit shift
.NOT.			~	1's complement
.NOT.			!	Logical negation
.OR.			|	Inclusive OR
			^	Exclusive OR
.AND.			&	And

OpenVMS Sample Lexical Function and UNIX Equivalents
===============================================================================
Note: From a DCL command line, for example -
$ WRITE SYS$OUTPUT F$ENVIRONMENT("INTERACTIVE")
TRUE
-or-
$ CODE = F$ENVIRONMENT("INTERACTIVE")
$ SHOW SYMBOL CODE
  CODE = "TRUE"

A more detailed guide to VMS lexicals is available at:
https://marc.vos.net/books/vms/help/lexicals/
Lexicals are extremely powerful and 1-to-1 UNIX equivalents aren't always
available. The followung are simple examples:

OpenVMS					UNIX		Explanation
===============================================================================
F$ENVIRONMENT("INTERACTIVE")		tty -s		Determine if you are an
							interactive user.
F$EXTRACT(start, length, string)	cut -c		Locate fields in a test
							string and write them out.
F$ELEMENT(element#, delimiter, string)	cut -f -d, awk	Locate delimited fields
							in a test string.
F$ENVIRONMENT("PROCEDURE")		$0 (bash,ksh) $arg [0] (csh)	
							Get name of currently
							executing script.
F$GETDVI("SYS$SYSTEM","DEVNAM")		sizer -r	Get name of the device
							from which the operating
							system bootstrapped.
F$GETDVI("TT:","DEVNAM")		tty -s		Determine the name of the
							terminal you are using.
F$GETSYI("HW_NAME")			uname -m	Get model name of the CPU
F$GETSYI("HW_MODEL")
F$GETSYI("CPU")				uname -sp	Return workstation device
							type
F$GETSYI("VERSION")	 		uname -v	Determine booted kernel's
							file name and system
						 	version.
F$GETSYI("PHYSICALPAGES")   		free		Physical memory on a
							system.
F$GETSYI("BOOTTIME")			who -b		Get system boot time.

UNIX Branching statements
DCL command procedures rely on the statements if, gosub, call, and goto for
program branching.  The shells under unix offer several branching statements.

Shell	Branching Statements Offered
====================================
csh		if, goto, while, foreach, switch, shift
ksh		do, case, elif, for, function, if, select, time, until, while
sh		if, for, while, until, case

Debugging Shell Scripts
Debugging of shell scripts is done by invoking ksh or sh scripts with the -x 
and -v flags.  Debuging of C shell scripts by invoking them with the -v, -V, -x
or -X flags.  The result is like using the OpenVMS command set verify.