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.