CSC231 Bash Lab 1
--D. Thiebaut (talk) 17:04, 2 February 2017 (EST)
This tutorial introduces the basic navigation commands, and will show you how to create directories (folders) and move in and out of them. I have used and adapted much of the information that is presented in several excellent tutorials:
Contents
Switching to the Bash Shell
By default, your student account using the shell called tcsh. We will be using another shell that is more friendly: bash.
Open a terminal or console window and connect to aurora.smith.edu with your class account. Here we assume that your class account is of the form 231b-xx where xx are two unique letters associated with your personal account.
Run these commands at the Linux prompt:
cd cp .login .login.bak cp .bashrc .bashrc.bak cp ~231b/.login .login cp ~231b/.bashrc .bashrc
What this does is to copy the a file from your instructors account (~231b) into your account (~231b-xx). This file is read automatically every time you login to your account and will set the shell to bash.
- logout of your account
- log back in. You should see something like this:
231b-xx@aurora.smith.edu's password: Welcome to Linux Mint 17 Qiana (GNU/Linux 3.13.0-24-generic x86_64) Welcome to Linux Mint * Documentation: http://www.linuxmint.com Last login: Thu Feb 2 16:59:49 2017 from 131.229.199.140 bash: setenv: command not found 231b-xx@aurora ~ $
Backing up your files
Just in case you mess up and erase files in your account that you'd like to keep, you will make an archive of all your files and save it in your instructor's account:
cd tar -czvf backup.tgz * rsubmit backup backup.tgz
That's it! Your instructor should now have a copy of all the files you may have created in your home account, and in case you delete some by mistake, they should be recoverable.
Creating Subdirectories
We are going to create the following tree of directories shown below. Note that you do not need to create the 231b-xx folder, as it is by default already there: it's your home directory.
Type in the following commands to create the tree and put files in the different folders. Note: you will use the getcopy command that is not a Linux command, but rather a program created for the CS department accounts.
mkdir lab1 mkdir hw1 mkdir misc ls
You should see the 3 directories in your account.
Let's go in the misc folder:
cd misc ls
Let's create 2 subdirectories there: demo and pictures:
mkdir demo mkdir pictures ls
Now, let's go "up" one level and look at what we have created and what they contain (the subdirectories should all be empty at this point):
cd .. ls ls hw1 ls lab1 ls misc ls misc/demo
Let's go into lab1 and put the file prog1.asm there. We'll get prog1.asm from the instructor's handout directory:
cd lab1 getcopy prog1.asm ls
Now let's go into hw1, which is at the same level as lab1 and put prog2.asm into it:
cd ../hw1 getcopy prog2.asm ls cat prog2.asm
Same thing with misc and prog3.asm
cd ../misc cd demo getcopy prog3.asm
and finally we'll get prog4.asm and put it into pictures.
cd ../pictures getcopy prog4.asm
A view from the Home Directory
Let's go back "home" and see if we can see the different prog*.asm files without actually "cd"-ing to the folders:
To go "home" we simply type:
cd
And we can look at the contents of the different sub- and sub-sub-directories:
ls lab1 ls hw1 ls misc ls misc/demo ls pictures/demo
You should have seen all 4 prog*.asm files. Yes?
Challenge #1: A New Directory Tree |
Let's remove all the new files and subdirectories you have just created. In Linux, "removing" means "deleting." The "rm" command deletes a file, while "rmdir" removes an empty directory. You have to delete all the files and subdirectories inside a directory before deleting it.
rm hw1/prog2.asm rm lab1/prog1.asm rm misc/demo/prog3.asm rm misc/pictures/prog4.asm rmdir misc/pictures/ rmdir misc/demo/ rmdir misc rmdir lab1 rmdir hw1
Now, using similar commands as the ones you used in the previous section, create the following directory tree:
Challenge 1: Verification
You can check wether you have created the correct tree by typing the following command (too evolve for us to try to understand it today) which will look for all the file with a ".asm" extension in your account:
find . -name "*.asm" -print
If you have created your tree correctly, you should get
./hws/hw1/prog1.asm ./hws/hw1/prog2.asm ./misc/demo/pictures/prog3.asm ./misc/demo/pictures/prog4.asm
(You may have other files that you had created before today listed. That's fine, as long as the 4 lines above appear in the output.)
Copying Files
cp is the copy command. It simply makes a duplicate of a file somewhere in the tree.
Run the command makeLab1Tree. It will create a new subdirectory tree in your account, with the HWorks as the top subdirectory. Explore it with the cd command and go up and down the tree of subdirectories. Verify that it contains 4 different subdirectories and 4 assembly programs:
./HWorks/hw1/prog1.asm ./HWorks/hw2/prog2.asm ./HWorks/hw4/prog4.asm ./HWorks/hw3/prog3.asm
We are now going to make a copy of all the programs and put them in separate subdirectory
cd cd HWorks/hw1 cp