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.