From VMS to Linux HOWTO
Prev |  | Next

# 2. Short Intro

This is what you absolutely need to know before logging in the first time. Relax, it's not much.

## 2.1. Files

- Under VMS filenames are in the form `filename.extension;version`. Under Linux, the version number doesn't exist (big limitation, but see Section Section 10.2); the filename has normally a limit of 255 characters and can have as many dots as you like. Example of filename: `This.is_a_FILEname.txt`.

- Linux distinguishes between upper case and lower case characters: `FILENAME.txt` and `filename.txt` are two different files; `ls` is a command, `LS` is not.

- A filename starting with a dot is a `hidden' file (that is, it won't normally show up in dir listings), while filenames ending with a tilde '`˜`' represent backup files.

Now, a table to sum up how to translate commands from VMS to Linux:

    VMS					Linux
    ---------------------------------------------------------------------

    $ COPY file1.txt file2.txt              $ cp file1.txt file2.txt
    $ COPY [.dir]file.txt []                $ cp dir/file.txt .
    $ COPY [.dir]file.txt [-]               $ cp dir/file.txt ..
    $ DELETE *.dat;*                        $ rm *dat
    $ DIFF file1 file2                      $ diff -c file1 file2
    $ PRINT file                            $ lpr file
    $ PRINT/queue=queuename file            $ lpr -Pprintername file
    $ SEARCH *.tex;* "geology"              $ grep geology *tex

For other examples involving directories, see below; for details about protections, ownership, and advanced topics, see Section Section 8.

## 2.2. Directories

- Within the same node and device, directories names under VMS are in the form `[top.dir.subdir]`; under Linux, `/top/dir/subdir/`. On the top of the directory tree lies the so--called `root directory' called `/`; underneath there are other directories like `/bin`, `/usr`, `/tmp`, `/etc`, and others.

- The directory `/home` contains the so--called users' `home directories': e.g. `/home/guido`, `/home/warner`, and so on. When a user logs in, they start working in their home dir; it's the equivalent of `SYS$LOGIN`. There's a shortcut for the home directory: the tilde '`˜`'. So, `cd ˜/tmp` is the same as, say, `cd /home/guido/tmp`.

- Directory names follow the same rules as file names. Furthermore, each directory has two special entries: one is `.` and refers to the directory itself (like `[]`), and `..` that refers to the parent directory (like `[-]`).

And now for some other examples:

    VMS                                     Linux
    ---------------------------------------------------------------------

    $ CREATE/DIR [.dirname]                 $ mkdir dirname
    $ CREATE/DIR [.dir1.dir2.dir3]          $ mkdirhier dir1/dir2/dir3
       n/a                                  $ rmdir dirname
       					(if dirname is empty)
                                            $ rm -R dirname
    $ DIRECTORY                             $ ls
    $ DIRECTORY [...]file.*;*		$ find . -name "file*"
    $ SET DEF SYS$LOGIN			$ cd
    $ SET DEF [-]                           $ cd ..
    $ SET DEF [top.dir.subdir]              $ cd /top/dir/subdir
    $ SET DEF [.dir.subdir]                 $ cd dir/subdir
    $ SHOW DEF                              $ pwd

For protections, ownership, and advanced topics, see Section Section 8.

## 2.3. Programs

- Commands, compiled programs, and shell scripts (VMS' `command files') don't have sort of mandatory extensions like `.EXE` or `.COM` and can be called whatever you like. Executable files are marked by an asterisk '`*`' when you issue `ls -F`.

- To run an executable file, just type its name (no `RUN PROGRAM.EXE` or `@COMMAND`). Caveat: it's essential that the file be located in a directory included in the path of executables, which is a list of directories. Typically, the path includes dirs like `/bin`, `/usr/bin`, `/usr/X11R6/bin`, and others. If you write your own programs, put them in a directory you have included in the path (see how in Section Section 9). As an alternative, you may run a program specifying its complete path: e.g., `/home/guido/data/myprog`; or `./myprog`, if the current directory isn't in the path.

- Command switches are obtained with `/OPTION=` under VMS, and with `-switch` or `--switch` under Linux, where `switch` is a letter, more letters combined, or a word. In particular, the switch `-R` (recursive) of many Linux commands performs the same action as `[...]` under VMS;

- You can issue several commands on the command line:

      $ command1 ; command2 ; ... ; commandn

- Most of the flexibility of Linux comes from two features awkwardly implemented or missing in VMS: I/O redirection and piping. (I have been told that recent versions of DCL support redirection and piping, but I don't have that version.) Redirection is a side feature under VMS (remember the switch `/OUTPUT=` of many commands), or a fastidious process, like:

      $ DEFINE /USER SYS$OUTPUT OUT
      $ DEFINE /USER SYS$INPUT IN
      $ RUN PROG

  which has the simple Linux (UNIX) equivalent:

      $ prog < in > out

  Piping is not readily available under VMS, but has a key role under UNIX. A typical example:

      $ myprog < datafile | filter_1 | filter_2 >> result.dat 2> errors.log &

  which means: the program `myprog` gets its input from the file `datafile` (via `<`), its output is piped (via `|`) to the program `filter_1` that takes it as input and processes it, the resulting output is piped again to `filter_2` for further processing, the final output is appended (via `>>`) to the file `result.dat`, and error messages are redirected (via `2>`) onto the file `errors.log`. All this in background (`&` at the end of the command line). More about this in Section Section 11.

For multitasking, `queues', and the like, see Section Section 8.

## 2.4. Quick Tour

Now you are ready to try Linux out. Enter your login name and password exactly as they are. For example, if your login name and password are `john` and `My_PassWd`, don't type `John` or `my_passwd`. Remember, UNIX distinguishes between capital and small letters.

Once you've logged in, you'll see a prompt; chances are it'll be something like `machinename:$`. If you want to change the prompt or make some programs start automatically, you'll have to edit a `hidden' file called `.profile` or `.bash_profile` (see example in Section Section 9). This is the equivalent of `LOGIN.COM`.

Pressing ALT--F1, ALT--F2, ... ALT--F6 switches between `virtual consoles'. When one VC is busy with a full--screen application, you can flip over to another and continue to work. Try and log in to another VC.

Now you may want to start X Window System (from now on, X). X is a graphic environment very similar to DECWindows---actually, the latter derives from the former. Type the command `startx` and wait a few seconds; most likely you'll see an open `xterm` or equivalent terminal emulator, and possibly a button bar. (It depends on how your sysadm configured your Linux box.) Click on the desktop (try both mouse buttons) to see a menu.

While in X, to access the text mode (`console') sessions press CTRL--ALT--F1 ... CTRL--ALT--F6. Try it. When in console, go back to X pressing ALT--F7. To quit X, follow the menu instructions or press CTRL--ALT--BS.

Type the following command to list your home dir contents, including the hidden files:

    $ ls -al

Press SHIFT--PAG UP to back-scroll. Now get help about the `ls` command typing:

    $ man ls

pressing 'q' to exit. To end the tour, type `exit` to quit your session. If now you want to turn off your PC, press CTRL--ALT--DEL and wait a few seconds (never switch off the PC while in Linux! You could damage the filesystem.)

If you think you're ready to work, go ahead, but if I were you I'd jump to Section Section 8.

Prev | Home | Next
Introduction |  | Editing Files