CSC 101 UNIX Basics

CSC 101 UNIX Basics


This document has some basic UNIX commands for dealing with files and directories. These commands should be more than enough for use in CSC 101.

Command Description
cp  source_file target_file
cp  source_file ... target_directory
cp _rp source_directory target_directory   
Copy files or directories. The first form copies the single source_file to the target_file. If the target exists, it is overwritten. If the target does not exist, it is created.

The second form of cp copies one or more source_files into the target_directory. The target must exist.

The third form recursively copies an entire source_directory hierarchy to the target_directory. If the target exists, the source is copied into it. If the target does not exist, it is created.


mv source target

Move the source file or directory to the target file or directory. If source is a file, target cannot be an existing directory.


ln -s  source_file target

Create a symbolic link, i.e., an alias or short cut, from the source_file to the target. If the target is a file, it cannot exist. If the target is a directory, a file of same name as source_file cannot exist.


mkdir  name

Make a directory of the given name. A file or directory of the given name cannot exist.


rm  file ...
rm -r  directory
rmdir  directory

Remove files or directories. The first form removes one or more file(s). The second form recursively removes an entire directory hierarchy. The third form removes an empty directory.


cd  directory

Change the current working directory to the given directory.


pwd

Print the current working directory.


chmod  permissions file ...
chmod -R  permissions directory


Change the permissions mode of the given file(s) to the given permissions. The first form changes one or more files. The second form recursively changes all files in the given directory. The permissions argument is an octal number with values defined as follows:
0400 Allow read by owner.
0200 Allow write by owner.
0100 Allow execute (search in directory) by owner.
0700 Allow read, write, and execute (search) by owner.

0040 Allow read by group.
0020 Allow write by group.
0010 Allow execute (search in directory) by group.
0070 Allow read, write, and execute (search) by group.

0004 Allow read by others.
0002 Allow write by others.
0001 Allow execute (search in directory) by others.
0007 Allow read, write, and execute (search) by others.

ls
ls -sal

List the contents of the current directory. The first form lists just the file names, not including files staring with ".". The second form gives a long-form listing of all files, including their sizes, modification dates, and permissions.


man  command_name

Print the detailed manual page for the given command_name.


gcc  file.c ...

Compile the given .c file(s), with the executable result going by default into the file named "a.out". See the gcc man page for the many options.


a.out

Run the compiled C file named a.out.


command  >  output_file

Redirect the output of command to output_file. The command can be any valid UNIX call, including a compiled C program. E.g.,
a.out > outfile
sends the standard output generated by the program a.out to the file named "outfile".


command  <  input_file

Redirect the contents of input_file to the input of command. The command can be any valid UNIX call, including a compiled C program. E.g.,
a.out < infile > outfile
sends infile to the standard input of the ReadFromTerminal program, then sends the output to the file named "outfile".


command_1  |  command_2

Pipe the output of command_1 to the input of command_2. E.g.,
a.out | fmt
sends the output of Hello through the simple UNIX text formating command "fmt ".


command  | tee  output_file

"Tee" the output of command to output_file, as well as to the normal standard output stream. E.g.,
a.out | tee outfile
sends the standard output of a.out to both stdout and the file named "outfile".


>&    and   |&

These are forms of output redirection and piping that apply to stderr as well as stdout. E.g.,
a.out >& outfile
redirects both the standard output and standard error of a.out to outfile. The command line
a.out |& tee outfile
sends both standard output and standard error of a.out to their normal streams, as well as to outfile.

In the preceding commands, file and directory arguments are specified as a path name, in one of these forms:

A path that starts with a leading slash is an absolute path, referring to a file from the root of the entire file system. A path that starts with ~user_id is relative to the home directory of user whose UNIX ID is user_id. A tilde character by itself refers the current user's home directory.

Here are some examples of typical commands useful in CSC 101.

Example Command Description

cd
    - or -
cd ~

Change to your home directory. Your home directory is the default when you initially log in, so this command is only necessary when you've used cd to change to some other directory.


mkdir csc101

Make a directory named "csc101".


chmod 700 csc101

Change the permissions of csc101 so that no one but you can access the files.


cd csc101

Change into the csc101 directory.


cp ~gfisher/classes/101/info/unix-basics.html .
    

Copy the unix-basics.html file into the current directory, i.e., csc101.


rm unix-basics.html

Remove the unix-basics.html file -- you've decided to make a link instead.


ln -s ~gfisher/classes/101/handouts/unix-basics.html .

Make a symbolic link to
unix-basics.html into the current directory. A symbolic link is the same as a short cut in Windows.


man ls

Print the manual page information for the ls command.