Table of Contents

Part 1

Entries

September Something early in September, 2011

The File system.

With 99% of everything in a Unix system being a file it is important to know how they work, how to find them, and how to modify them.

You cannot execute or open a file without being in the directory the file is in, or making a path to it. This is understandable, it is just slightly annoying.

For some reason I am having the most ridiculously difficult time moving files through directories.

September 15?, 2011

I experienced Shell Scripting.

This is a very powerful tool that can be used effectively with a Unix/Linux system.

The concepts make sense as the CLI simply reads and performs the script line by line.

As far as writing a shell script is concerned I need to learn more about the functions of quotations, back ticks, parentheses to be more effective and create more complex scripts.

August 30, 2011

The CLI

It is how things get done.

How a CLI could be more efficient, and more powerful (why use it at all?) than a GUI.

I have no prior experience with a CLI and I have a lot to learn to become efficient.

September 21, 2011

I experienced the awesome that is multitasking on Ubuntu

Linux systems are designed to multitask and it is appropriate for me to finally take advantage of it. It is extremely useful to have the ability to switch work spaces with the click of a button. I hooked up a monitor to my laptop to more effectively use this feature, giving me eight work spaces.

Topics

Backgrounding a process

Allows a process to operate while freeing up your terminal. This can be done using bg or &. In addition the process must be able to run in the background.

lab46:~$ bg PID
lab46:~$ ./test &

Forgrounding a process

Brings a process operating in the background to the terminal. Use fg to forground a process.

lab46:~$ fg PID

Killing a process

Sends a signal to stop or terminate a process. Killing can be done in a number or ways commands consist of k -0 to -64. Kill usually works in conjunction with the PID (process id) which can be determined using ps. ctrl+c will work to terminate a task in many cases See man page for more. (man kill)

lab46:~$ kill -9 PID

The Vi Editor

A text editor that is built in to nearly every Unix system. It as different modes consisting of “insert, command, and extended command.” Bi was developed to be efficient and used without a mouse Vi automatically starts in command mode. To enter Vi use vi filename. See http://adminschoice.com/vi-editor-quick-reference for more on Vi.

lab46:~$ vi test

Insert mode

Insert mode allows for text input. There are various methods to enter insert mode. “i, a, A” keys from command mode are just a few. Note that each of these will put you in insert mode at a different point in the text. Follow the link under The Vi Editor for more.

Command Mode

Command mode permits the use of commands within the vi text editor. Use escape to enter command mode. The majority of keys (on the keyboard) are bound to some command. It allows for quick editing of text without a mouse. You can also use a number before some commands to move multiple lines, delete or copy multiple lines, etc. See the link under the Vi Editor for more.

Examples: u = undo dd = deletes a line i = enters insert mode h, j, k, l = move the cursor right, down, up, left

Extended Command Mode

Extend command mode can be used to enter script like commands. To enter extended command mode, from command mode press : (that's colon) This is useful for copying or editing multiple lines at one time. For more on extended command mode see http://www.eng.hawaii.edu/Tutor/vi.html#s-excmd or http://www.uic.edu/depts/accc/software/unixgeneral/vi101.html#introvi

Files

Files are how data in Unix is represented. Fall into one of the three Unix philosophies “everything is a file” this holds true for nearly everything in Unix. Files can be manipulated, executed, used to store data, moved, renamed, replaced, copied, deleted etc. (Given that you have the permissions.) You can create regular files with touch filename, directories can be created with mkdir filename.

Listing

Listing files can be done with ls. It is necessary to be able to view the files within a directory in order to manipulate them or navigate through the file system. Hidden files or files that begin with a . can be viewed by using ls -a. For more on ls see man ls.

lab46:~$ ls
lab46:~$ ls -a

Permissions

Permissions dictate who can do what with files. Permissions can be set with chmod. Permissions consist of read write and execute. They can be set for user, group and other. Man chmod for more also see http://www.perlfect.com/articles/chmod.shtml

lab46:~$ chmod 700 test
lab46:~$ chmod 755 test

Viewing

To see the contents of a file (provide you have the permissions) you can open the file with a text editor (vi, nano, etc). It is also possible to see the contents of a file without opening it in a text editor. To do this you can use cat or if you are looking for something specific grep. See man cat and man grep for more.

lab46:~$ cat test
lab46:~$ grep this test
this is a test
lab46:~$

Multitasking

Unix was developed with the idea of multitasking in mind. The Unix system can be easily used to run multiple processes at one time. Multitasking can be accomplished with the use of multiple terminals, foregrounding backgrounding, and workstations. It is one of the core advantages to using a Unix system.

Objectives

Objective 1

Exposure to open source concepts and ideals.

Method

I will download and install Ubuntu, in addition to applications for the operating system. In addition to reading Harley Hans guide to Unix Linux and learning about the principals Linux systems are based on.

Measurement

While downloading Ubuntu (free) and some applications after the installation (Emacs to use as an example, also free)I have gotten fair grasp of open source concepts.

Analysis

Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.

I would say over all I did fairly well. I understand that the important ideal behind open source is not that it is necessarily free but that it can be modified to suit a users need, and that a collaborated effort between an unlimited amount of programmers can make software all around better, faster.

I could improve upon these concepts by contributing to the collective effort. For example creating software for others to use and improve upon.

The process could be extended upon, perhaps by more research into open source, or downloading multiple versions of free Linux.

This enhancement would be relatively inefficient as it is more of a time consuming project that wouldn't necessarily result in learning anything new.

Perhaps by adding a requirement that students make a direct contribution to the open source ideals of some sort (software, knowledge, etc) but that is already tied in somewhat via the opus.

Experiments

Experiment 1

Question

Can I write a Script in Emacs from the desktop and run it in a terminal?

Resources

No real resources necessary just Emacs and some knowledge of scripting.

Hypothesis

I believe it will work due to the fact that I can run Emacs from a terminal in addition to using it from the desktop shortcut.

Experiment

I am going to write a small script in Emacs from the desktop and open a terminal to see if it will run.

Data

In Emacs

#!/bin/bash

echo -n “enter a number: ”

read number

let a=number+3

In terminal

chmod 700 test

./test

Analysis

Based on the data collected:

Yes it worked, I entered a number and it added 3 to that number.

No everything is as it should be.

Nothing that I can think of for what I was trying to test.

My data is sound.

Conclusions

I can say that even with the use of a GUI as opposed to a straight CLI applications will work properly in both/on both/with both.

Experiment 2

Question

When multiple processes are running in the background, if you foreground simply fg which one will foreground.

Resources

No necessary resources just knowledge of how to use bg and fg. The use of ps is also necessary.

Hypothesis

I believe that the process listed at the bottom of the background processes will be the one to come to the foreground. This is really just guess. It would make the most sense without actually knowing what will happen.

Experiment

I am going to but a number of processes in the background, run ps to see the list, then run fg. After this I will run ps again to see what process comes to the foreground as I will be using xeyes multiple times. I will repeat this until I can determine what actually is happening.

Data

While performing my experiment I initially thought that my hypothesis was correct as the process to foreground was the last process on the list when I ran a ps. However it was also the last process to be sent to the background. I brought other processes to the foreground and found that the last process to be sent to the background (the most recent process in the foreground) would be the one to return to the foreground when performing just fg.

Analysis

Based on the data collected:

No it was not.

Yes it was applicable, just not correct.

Not really more it just functions differently that I thought it would.

I could probably try with more than just xeyes to see if there is some sort of priority based on a different process.

If I didn't run the experiment enough times the data could be wrong.

Conclusions

I can say after performing the experiment a number of times that the process that will foreground if you are just doing a fg with no modifications to it will be the last process to be sent to the background.

Experiment 3

Question

What is the question you'd like to pose for experimentation? State it here.

Resources

Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.

Hypothesis

Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.

State your rationale.

Experiment

How are you going to test your hypothesis? What is the structure of your experiment?

Data

Perform your experiment, and collect/document the results here.

Analysis

Based on the data collected:

Conclusions

What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've