This document provides an overview of Unix fundamentals, including:
- Opening the terminal application located in the Utilities folder to access the Unix subsystem in OS X.
- Common terminal navigation techniques like using arrow keys to move the cursor or scroll, and cut/paste with mouse or keyboard shortcuts.
- Basic Unix commands like cp to copy files, mv to move them, cd to change directories, ls to list contents, and mkdir to create directories.
- Additional commands covered include ps, kill, chmod, chown, grep, and man to get command help. It also discusses redirection, pipes, and shell scripting.
This document provides an overview of Unix fundamentals, including:
- Opening the terminal application located in the Utilities folder to access the Unix subsystem in OS X.
- Common terminal navigation techniques like using arrow keys to move the cursor or scroll, and cut/paste with mouse or keyboard shortcuts.
- Basic Unix commands like cp to copy files, mv to move them, cd to change directories, ls to list contents, and mkdir to create directories.
- Additional commands covered include ps, kill, chmod, chown, grep, and man to get command help. It also discusses redirection, pipes, and shell scripting.
FUNDAMENTAL OVERVIEW OF THE UNIX SUBSYSTEM IN OS X OPENING A TERMINAL To access the UNIX subsystems in OS X you need to open the terminal application. It is located in the Utilities folder under applications. It is highly recommended that you put this application on the dock NAVIGATING IN THE TERMINAL The ←→ keys move the cursor left and right
the ↑↓ keys page through the command
history.
you can use the mouse to select text and
⌘c and ⌘v to cut and paste text
Delete deletes text behind the cursor the
⌦ key deletes text after the cursor. Common Navigation Nomenclature . means this directory or right here
.. means the directory right above you
~ means your home directory
/ the root directory
~<username> the home directory of the user
for example cp /local/fel/test . will copy test
to your current directory Unix Commands cp copies a file cp <source path>/<filename> <target path>/<filename> some common modifiers are -r for recursive (used to copy whole directories) -f force (don’t ask me if I want to do it just do it) -P preserve permissions Unix Commands mv moves a file from one directory to another. it can also be used for renaming files mv <source dir>/<filename> <target dir>/<file> some common modifiers are -r for recursive (used to copy whole directories) -f force (don’t ask me if I want to do it just do it) -P preserve permissions Unix Commands
cd changes your current working directory.
cd <directory to change to>
also the command pwd tells you which
directory you are currently in. Unix Commands
mkdir creates a new directory
mkdir <directory name> or /<ABS path>/
<directory name> Unix Commands ls lists the contents of a directory ls or ls <directory name> lists the current directory or the specified directory Some common modifiers. -l lists all the information about the files -lt lists all information in chronological order -al list all the information including hidden files. Unix Commands 007 PS, &, and kill are used to manages jobs that are running in the background. <command> & executes a command and sends it to the background, this allows you to continue with something else while you are waiting for it to finish ps <-aux> reports what processes are running in the background. kill -9 <process id> kills the backgrounded process ( warning only kill process that belong to you ) ps by itself only reports processes that are yours and in your current session. Mother May I UNIX uses the concept of permissions and ownership to determine who can access a file or directory There are three types of permissions read allows you to read the contents of a file write allows you to write to a file or delete it x or execute allows you to run a file as a script or a program. There are three classes of permissions. User or Owner is the person who created the file Group is the group that the owner belongs to Other is everyone else in the world. Unix Commands chmod changes permissions on a file chmod +x <filename> this is commonly used to make a script executable Some common modifiers are a (all) u (user) o (other) g (group) and r (read) w (write) x (execute) these combine to form chmod g+rw (add read and write permissions to the group) o-rwx ( remove read write, execute permissions from other<filename> where + means add permissions Unix Commands chown is used to change the ownership of a file or directory.
for example chown <user>:<group> <filename>
changes the ownership of the file or directory
some common modifiers
-R recursively changes ownership on all the
elements in a directory.
-f forces the operation, without asking for
permission first. Unix Commands grep performs a textual search for a word or pattern.
grep <pattern> <File or directory>
grep test * searches all of the files in the current
directory and returns any files that contain the word test
grep uses regular expressions for searching patterns.
you can find out more about regular expressions at http://www.regular-expressions.info/ UNIX REDIRECTION UNIX allows to you information form many sources. < > input output redirection {command} < {filename} takes the information in filename and uses it as input to the {command} {command} > {filename} takes the output from the command and puts it into the filename > creates the file >> appends to the file for example ls -al > dirinfo.txt creates the file dirinfo.txt and puts the directory information in it. | or pipe redirection {command1} | {command2} takes the output of command1 and makes it the input of command2 for example ls -al |grep <somefile> will only return something if the file is in the output. Whose da MAN and --h
UNIX has a built in help system or collection
of manual pages that can be accessed by the command man
man <command name> will give you a
complete manual page on the command.
also for a brief summary of a commands
usage <command name> --h or -help Shell Scripting
If you find yourself entering a series of commands
frequently UNIX supports shell scripting. shell scripting is a simple text file with a list of commands as you would enter them in a terminal. shell scripting also supports input variables, loops and conditional operation Shell Example Here is an example of a script used to start the renderfarm VI (return of the text editor) VI is the oldest and most common UNIX text editor in existence it has support for advanced editing and pattern matching search and replace. VI has three modes view, insert, and command. view allows you to view files without modifying the text. insert allows you to edit the file. command allows you to save quit search replace and all other text editor functions. vi is very efficient at performing complex text editing and manipulation operations. you have an overwhelming desire to use vi ( announcer waives his hand ) VI Basics (View) vi <filename> to open a file for editing ←↑→↓ move the cursor left up right and down. also j,k,h,l accomplish the same thing x or delete delete the letter over the cursor dd deletes a line dw deletes the word yy yanks a line into the buffer, you can also use mouse select and ⌘c on the mac pp paste the line at the cursor, and ⌘v on the mac /<pattern> performs a regular expression search for a certain word ie /test↵ will place the cursor at the first instance of the word cw allows you to change the word under the cursor (press esc when done) r allows you to change the character under the cursor. VI Basics (Insert)
i,I puts vi into insert (edit) mode at/before
the cursor
o, O puts vi into insert mode above/below
the current line ( it creates a new line)
a,A inserts text at the beginning/ending of
the current line
to exit insert mode hit the esc key.
VI Basics (Command) to enter command mode use : in view mode or esc : in insert mode ( I will use :<command> notation to signify command mode) Basic Command options :q Quit vi, :w save the current file, :qw save the file and quit vi, :q! force quite vi without writing changes :/<pattern> find selected pattern in file :^ go to the beginning of the file :$ go to the end of the current file. :<number> got to the line number in the file. VI Basics (Command) VI also has advanced search and replace capabilities. :<start>,<end>s/<pattern>/<replace pattern>/<gis> <start> (optional) starting line to search <end> (optional) ending line to search. s/ tells vi you want to search and replace <pattern> this is the regular expression pattern that you want to search for <replace pattern> this is the text you wish to replace any matches with. <gis> (any combination, optional) search modifiers g ( global, replaces all instances of a match) i ( Case insensitive ) s ignore carriage return Compiling a program
you may need to write or modify a program
gcc is the standard unix c compiler
gcc < -lm (or other libraries)> <filename> -o
<executable to create>
this will create an executable from c source
code. UNIX SSH
ssh is a program used for creating terminals on remote
computers. it stands for secure shell, its predecessor telnet is still available but should not be used because all data sent by telnet is unencrypted. ssh -l <username> <target computer> <username> (optional) if ssh does not recognize your local username you may have to use this to tell it who you are. <target computer> this is the computer you wish to connect to Example ssh -l ehadint felcl1.physics.nps.navy.mil X11 X11 is a traditional UNIX windowing application it is a GUI based environment. X11 can be run locally or remotely X11 is located in the utilities folder, it is highly recommended that you ad this to your dock for quick access. There are two two setting that you need in order to use X11 from a terminal the DISPLAY environment variable, and xhosts needs to have proper permissions. in tcsh you need to type setenv DISPLAY <your computer ip>:0.0, or if you are using X11 on localhost you can set it to setenv DISPLAY :0.0 in bash you need to type export DISPLAY=:0.0 or you IP address for remote operations. next if you have permission errors you need to type /usr/X11R6/bin/ xhost + to enable connection to the X11 server (see example) this can be configured in the profile script covered later. a good test of a properly configured X11 system is typing in /usr/X11R6/ bin/xeyes SW and fink many x11 applications and utilities are installed separately from OS X, these consist of gv (ghost view), imagemagick (image conversion and manipulation suite) these applications are located under the /sw/bin directory There are many powerful UNIX applications available through fink (Show fink commander demo) gv or ghostview is the primary application used for viewing FEL simulation data graphically Profiles in your home directory there is a file named .cshrc (tcsh shell) and .bashrc ( bash shell) this file is responsible for setting up your initial environment
This is a typical .cshrc file
LAM maintenance lamclean reinitializes the user environment and ensures that there are no environment variable from a previous session, it is recommend that you run this before running any mpi programm
mpitask lets you know which nodes are
performing mpi functions.
lamhalt shuts down the cluster
mpirun
mpirun starts the mpi program an manages
all output and tasks
mpirun -np <numprocs> <program>
<numprocs> is the number of processors to
run the mpi task on Connecting to the cluster file server
you may find it easier to edit and manage
text and output files on your local computer. to do this you can connect to the cluster file services and work on your files locally with a gui or in a local terminal