Our server
storm.cis.fordham.edu
is a
Fedora
Linux
machine.
We will store and run our C++ programs on this server.
Here’s how to use your account there.
Every member of Fordham University already has a Fordham ID.
(It’s the first part of your Fordham email address.)
Let’s assume your Fordham ID is
jsmith,
for John Smith.
You will also need two passwords.
To log into your account on
storm.cis.fordham.edu,
CMD
(command) window.
Terminal.app.
Utilities
folder of the
Applications
folder.
In both cases, a window will appear.
See if you can enlarge the window’s font
to make the writing easier to read.
In this window
(assuming your Fordham ID is
jsmith),
give the following lowercase
ssh
command
with a space after the
ssh.
The first time you use
ssh,
type your temporary secret password.
As you type it,
the characters of this password will not be echoed onto the screen:
you’ll be flying blind.
The computer will ask you to type your temporary secret password again
so that you can replace it with a new password of your own choosing.
ssh jsmith@storm.cis.fordham.edu Are you sure you want to continue connecting? yes jsmith@storm.cis.fordham.edu's password: Type your temporary secret password. You won't see what you're typing. You are required to change your password immediately (administrator enforced). WARNING: Your password has expired. You must change your password now and log in again! Current password: type your temporary secret password again New password: type your permanent secret password Retype new password: type your permanent secret password again passwd: password updated successfully Connection to storm.cis.fordham.edu closed.
Now start again from the beginning with another
ssh jsmith@storm.cis.fordham.edu
This time, type in your permanent secret password.
The server should give you a
green prompt.
ssh jsmith@storm.cis.fordham.edu jsmith@storm.cis.fordham.edu's password: type your permanent secret password jsmith@storm:~$
Run the lowercase
date,
cal,
and
hostname
programs in response to the
green prompt
just to verify that you’re connected to
storm.cis.fordham.edu,
and to build your confidence.
jsmith@storm:~$ date Thu Jan 15 06:19:51 PM EST 2026 jsmith@storm:~$ cal January 2026 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 jsmith@storm:~$ cal 7 1955 jsmith@storm:~$ hostname storm.cis.fordham.edu
The documents you type into the computer (including your C++ programs)
are called
files.
The part of the computer
that holds the files is divided into sections called
directories.
At any given time,
you are located in one of these directories.
To find out which directory you are in now,
run the lowercase
pwd
(print working directory)
program.
The output of this program will appear on your screen.
It will tell you that you are located in your own
home directory,
whose name is your Fordham ID,
which we are assuming is
jsmith.
There are many more directories,
organized into a family tree.
jsmith@storm:~$ pwd /home/students/jsmith
The directory you are in now is called your
current directory.
When you first log in,
your current directory is your home directory.
The
cd
command (“change directory”) will let you travel to a different directory.
The two dots
..
stand for the name of the directory that is one level above your
current directory.
Type a space before the two dots,
no space between the two dots.
jsmith@storm:~$ cd .. (Go one level up from your home directory.) jsmith@storm:/home/students$ pwd (Make sure you did go one level up.) /home/students jsmith@storm:/home/students$ cd .. (Go another level up.) jsmith@storm:/home$ pwd /home jsmith@storm:/home$ cd .. jsmith@storm:/$ pwd / (Now you're in the "root directory". Can't go any higher.) jsmith@storm:/$ cd .. (Try to go higher. You can't.) jsmith@storm:/$ pwd / (You're still in the root directory.) jsmith@storm:/$ cd (Go straight back to your home directory.) jsmith@storm:~$ pwd (Make sure you returned there.) /home/students/jsmith jsmith@storm:~$ cd . (Does nothing: one dot means your current directory.)
jsmith@storm:~$ cd (Go back to your home directory.) jsmith@storm:~$ pwd (Make sure you're back in your home directory.) /home/students/jsmith jsmith@storm:~$ cd .. (Go one level up from your home directory.) jsmith@storm:/home/students$ pwd (Find out where you went.) /home/students jsmith@storm:/home/students$ cd .. (Go another level up.) jsmith@storm:/home$ pwd (Find out where you went.) /home jsmith@storm:/home$ ls (See what's in the /home directory: lowercase LS means "list") staff students sysadmin jsmith@storm:/home$ ls -l (Get a long listing: lowercase LS space minus lowercase L) total 104 drwxr-xr-x. 44 root root 4096 Nov 12 13:09 staff drwxrwxr-x. 1044 root students 86016 Nov 24 22:04 students drwx------. 14 root root 4096 Aug 12 2019 sysadmin jsmith@storm:/home$ cd staff (Go down into the staff directory.) jsmith@storm:/home/staff$ pwd /home/staff jsmith@storm:/home/staff$ ls jsmith@storm:/home/staff$ ls -l jsmith@storm:/home/staff$ ls -l | more (Dole it out one screenful at a time. Space bar or q.) jsmith@storm:/home/staff$ cd ~mmeretzky (Tilde: go to mmeretzky's home directory.) jsmith@storm:/home/staff/mmeretzky$ pwd /home/staff/mmeretzky jsmith@storm:/home/staff/mmeretzky$ ls -l | more jsmith@storm:/home/staff/meretzky$ cd public_html (Underscore, not dash. Ends with lowercase L.) jsmith@storm:/home/staff/mmeretzky/public_html$ pwd /home/staff/mmeretzky/public_html jsmith@storm:/home/staff/mmeretzky/public_html$ ls -l | more jsmith@storm:/home/staff/meretzky$ cd (Go straight back to your home directory.) jsmith@storm:~$ pwd (Make sure you returned there.) /home/students/jsmith jsmith@storm:~$ ls -l | more
jsmith@storm:~$ cd /usr/bin (the "user binary" directory) jsmith@storm:/usr/bin$ pwd (Make sure you arrived there.) /usr/bin jsmith@storm:/usr/bin$ ls -l | more (Space minus lowercase L for more information about each one) (Files start with dash; subdirectories start with lowercase d) jsmith@storm:/usr/bin$ ls -l c++ (List only one file. This is our C++ compiler.) -rwxr-xr-x 4 root root 1333360 May 20 20:00 c++
jsmith@storm:~$ cd /usr/include/c++/15 jsmith@storm:/usr/include/c++/15$ pwd (Make sure you got there.) /usr/include/c++/15 jsmith@storm:/usr/include/c++/15$ ls -l iostream -rw-r--r-- 1 root root 3125 May 20 20:00 iostream jsmith@storm:/usr/include/c++/15$ ls -l cstdlib -rw-r--r-- 1 root root 7064 May 20 20:00 cstdlib
jsmith@storm:/usr/include/c++/15$ cd (Go back to your home directory.) jsmith@storm:~$ pwd (Make sure you got there.) /home/students/jsmith
The files in your public_html
directory are publicly visible.
See
I’m no longer bothering to show the green prompt:
cd (Go back to your home directory.) pwd (Make sure you got there.) /home/students/jsmith ls -l | more (See what you already have there.) cd public_html (Go one level down to your public_html directory.) pwd (Make sure you got there.) /home/students/jsmith/public_html ls -l | more (See what (if anything) you already have there.) cd (Go back up to your home directory.) pwd (Make sure you got there.) /home/students/jsmith
Let’s create an empty file named
junk
in your home directory.
When you move a copy of this file down to your
public_html
subdirectory,
can you see it in
cd (Go back to your home directory.) pwd (Make sure you got there.) /home/students/jsmith ls -l | more (See what (if anything) you already have there.) touch junk (Create an empty file named junk.) ls -l | more (See if you actually created this file. Is its size 0?) mv junk junk2 (Change the name of the file from junk to junk2.) ls -l | more (Did we actually rename the file?) cp junk2 junk3 (Create a copy of junk2 named junk3.) ls -l | more (Did we actually create a copy of the file?) mv junk3 public_html (Move junk3 down to your public_html subdirectory.) cd public_html (Go down there and make sure you moved the file there.) pwd ls -l | more (Can you also see junk3 in the class website?) rm junk3 (Remove the file that we moved down into your public_html.) ls -l | more (Is junk3 actually gone?) cd (Go back up to your home directory.) pwd rm junk2 (Remove this file, too.) ls -l | more (Is junk2 actually gone?)
Let’s download the text file
xanadu.txt
from the class website.
The link to this file is
https://markmeretzky.com/fordham/1600/src/xanadu.txt
Before downloading the file,
make sure you’re in your own home directory:
you have to be in a directory
in which you have permission to deposit a new file.
wget
means
“get from the web”.
cd pwd /home/students/jsmith wget https://markmeretzky.com/fordham/1600/src/xanadu.txt HTTP response 200 OK ls -l xanadu.txt (Did we really download the file? How many bytes is it?) -rw-r--r-- 1 mmeretzky staff 2040 Aug 29 2024 xanadu.txt
Practice editing your file
xanadu.txt
with
vi,
the “visual” text editor.
When in doubt while using
vi,
press the
ESCape
key in the upper left corner of your keyboard and
you should get a reassuring beep.
There are several
O’Reilly
books
about
vi.
cd pwd /home/students/jsmith ls -l xanadu.txt (See how many bytes are in the file.) vi xanadu.txt (Start editing the file xanadu.txt)
vi
cursor up, down, left, and right with the four arrow keys;
↑
↓
←
→
4G
x
xxxx
4x
dd
4dd
i
(before the cursor)
or lowercase
a
(after the cursor).
ESCape
key in the upper left corner of your keyboard.
o
(below the cursor) or uppercase
O
(above the cursor).
ESCape
key.
yy
4yy
p (below)
or uppercase
P (above)
the cursor.
:w
followed by RETURN or ENTER.
ESCape
to make sure you’re not in the middle of an insertion.
vi
with lowercase :q
followed by RETURN or ENTER.
ESCape
to make sure you’re not in the middle of an insertion.
After quitting from
vi,
the green prompt should reappear
and you should still be in your home directory.
See if the file you were editing is still in your home directory.
Did you change its size (its number of bytes)
while you were editing it?
ls -l xanadu.txt
Go to your home directory and create two files named
.plan
and
.project.
Their names must begin with a dot.
Put whatever you want into these files
(start with the i command to insert,
command #4 above),
but the
.project
file can only be a single line.
Then
finger
yourself and others.
cd pwd /home/students/jsmith vi .plan ls -l (when you're done with vi) ls -la (The "Los Angeles" option will show you *all* your files.) finger (Finger everyone who is logged in now.) finger jsmith (Finger yourself.) finger mmeretzky (Finger me.)
Let’s download the C++ program
dime1.C
from the class website.
(The
.C
must be uppercase for the language C++;
a lowercase
.c
would indicate the language C.)
Point your web browser at this file and copy its link
https://markmeretzky.com/fordham/1600/src/dime/dime1.C
cd (Go home, because you have permission to put a new file there.) pwd /home/students/jsmith ls -l (Make sure you don't already have a file named dime1.C) wget https://markmeretzky.com/fordham/1600/src/dime/dime1.C ls -l dime1.C (Make sure the file was downloaded.)
Assuming you already have the above file
dime1.C
in your home directory.
cd pwd /home/students/jsmith ls -l dime1.C c++ dime1.C (c++ should create a new file named a.out) ls -l a.out (Did c++ create a file named a.out?) ./a.out (Execute the a.out file and see its output.) echo $? (See the exit status number produced by the a.out file.) mv dime1.C public_html (If you want to let everyone see your dime1.C file.) cd public_html (Make sure you moved the file.) pwd ls -l dime1.C
Download the file
boilerplate.C
into your home directory on
storm.cis.fordham.edu,
and change the file’s name to
helloworld.C.
cd pwd /home/students/jsmith wget https://markmeretzky.com/fordham/1600/src/output/boilerplate.C ls -l boilerplate.C (Make sure we downloaded the file.) boilerplate.C mv boilerplate.C helloworld.C (Rename the file.) ls -l helloworld.C (Make sure we renamed the file.) helloworld.C cat helloworld.C (See what's in the file.)
Use
vi
to change the contents of the file to the following:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cout << "Hello, world!\n";
return EXIT_SUCCESS;
}
Can you compile this file with
c++
and execute the resulting
a.out
file?
By now, you are probably fatigued or overwhelmed.
exit
command to log out from
storm.cis.fordham.edu.
exit
command
to close your
CMD
window (on a Windows PC)
or your
Terminal.app
window (on an Apple Macintosh).
exit exit