======Part 2====== =====Entries===== ====October 4, 2011==== Today we went over regular expressions in class. We reviewed and played with basic regular expressions that one may encounter. I am starting to get a good feel for the regular expressions and with a little more practice, I should be fairly comfortable with using them. The biggest difficulty i can foresee with this is knowing precisely what I want to do with them but this is common for all new tools. ====October 13, 2011==== Today we looked a little bit at C programming. Although we do not need to know much detail about the C language, I found today's lecture quite useful. I vaguely remember doing something in C about 4 years ago for another class but had all but forgotten what I learned. The class today reawakened some of those memories and I remember, at the very least, what some of the symbols and syntax means. ====October 18, 2011==== Today we talke a little about wildcards and how to use them. I had read about them in in one of the books but had not played with them on my own. Today's class allowed me to see them in action. I see that they are very similar to regular expressions but with minor differences. The same basic principles applied to regular expressions can be applied to wildcards keeping in mind what symbols are used for what and when they can be used appropriatetly. ====OCtober 27, 2011==== Today I completed the archive handling project. It was a bit of a challenge for me due to the fact that I had not fully read beforhand anything related to archiving. Now that the project is completed, I have a little better of a grasp on archives but am not completely comfortable with them. This can be remedied by more playing and reading. =====unix Topics===== ====Regular expression==== This allows for shortcuts to be taken when trying to specify what is wanted when searching for something specific in a file. lab46:/usr/share/dict$ cat words|grep '^[aeiouy]*$'|less|wc -l 15 This shows that there are 15 words in the dictionary file that contain 0 or more of the letters enclosed in the brackets. ====Copying==== Copying a file is creating an exact replica of a file to another location lab46:~$ cd /usr lab46:/usr$ cp -R games /home/swilli31/games lab46:/usr$ This command copied the games directory into my home directory while still preserving the games directory in the /usr directory. ====Moving/Renaming==== You can move a file to a diffrent location by using the move command. You can also change the name of a file without losing data by using the move command. lab46:~$ touch script7 lab46:~$ mv script7 opus.results.sh lab46:~$ This shows that the file script7 was renamed as opus.results.sh lab46:~$ mv script7 bin lab46:~$ This shows that script7 was moved to bin directory. ====VI insert mode==== The insert mode in vi allows the user to input text or write scripts in the vi editor. lab46:~$ vi space ghost ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ INSERT To enter insert mode press i while in command mode. ====VI command mode==== This mode allows for keys to be used to move the cursor quickly around the screen for easy access to quick edits to the text ~ ~ ~ ~ ~ ~ ~ vi space ghost To get from insert mode to command mode press the ESC key ====VI extended command mode==== The extended command mode allows for the user to save and quit the vi editor ~ ~ ~ ~ ~ :q! To enter extended command mode, press the : key. The command shown is quit without saving. ====Wildcards==== Another form of regular expression that is used where regular expressions aren't recognized. lab46:~$ cd /usr/bin lab46:~/usr/bin$ ls -d *[aeiouy]|wc -l 231 This shows that in the directory /usr/bin has 231 files that end in a,e,i,o,u, or y ====Compiler==== A compiler takes a program and formats it to be read in machine language and can also make a C program executable in bash. lab46:~$ cd bin lab46:~/bin$ gcc -o culpepper command.c lab46:~/bin$ culpepper culpepper was called with 1 arguments argv[0]: culpepper lab46:~/bin$ ====C==== lower level Programming language #include int main(int argc, char **argv) { int i printf(" %s was called with %d arguments\n," argv[0], argc) for (i=1; i This is a C program code. ====Creating a file==== This is simply making a file and bringing it into existance. This can be done using any text editor of choice or simply by they touch command lab46:~$ touch robot chicken lab46:~$ ls lab46:~$ robot chicken space ghost futurama The file robot chicken was created and was added in the directory with the other files space ghost and futurama. ====Archiving/Unarchiving a file==== This is a form of compression. Most commonly a tape archive,tar, is used. lab46:~$ tar -cf archive6.tar futurama lab46:~$ The archive archive6 was created as a tar file. ====Compressing/decompressing a file==== This takes a tar file or a zip file and streches it out so that it can be read. lab46:~$ tar -jcvf archive9.tar.bz2 american horror story american horror story lab46:~$ ls archive6.tar archive9.tar.bz2 The archive9.tar.bz2 was compressed by tar and then compressed to bzip2 format containg the file american horror story. =====unix Objective===== ====Objective==== Become comfortable with the vi editor ===Method=== To obtain this objective I will read some material on the vi editor and practice writing scripts ===Measurement=== After much reading and familiarizing, I am finally able to comfortably write scripts. ===Analysis=== The vi editor is a useful tool to know and use. Although it is not the only text editor available, it has commands and options that make learning unix easier. My method seems to have been effective due to the fact that I have started dreaming about writing scripts using vi while I slumber. =====Experiments===== ====Experiment 1==== ===Question=== Can bash handle a multiplication function using decimal and change that number into binary? ===Resources=== The resources used for this experiment came from other class' notes taken and my previous knowledge about bash. I also tried to combine two scripts previously written ===Hypothesis=== I will be able to take a number gathered from multiplication.sh and pipe it to script5. Rationale: The groundwork has been laid it just needs to be written. ===Experiment=== I will test my hypothesis by writing the new script and running it. The numbers should then be binary ===Data=== The code is written in binarymultiply.sh. The final output on the screen is below. lab46:~$ binarymultiply.sh Please enter multiplicand:5789 Please enter multiplier:22 The product is 127358 The binary value is 11111000101111110 lab46:~$ ===Analysis=== My hypothesis was correct although I could not do it the way I thought I could. I had figured that I could cat in one program to another but because no actual values are stored in either program this created an empty function. The way I fixed this was to set the variable number equal to the product taken from the multiplication and then proceeded to run through the conversion script. It still has the same issues as before in which it doesn't work once the number becomes to large and it no longer out puts to binary. ===Conclusions=== Based on this experiment there are still some bugs that need to be fixed in converting large numbers into binary as well as multiplying by negative numbers and taking that negative number into a binary value. ====Experiment 2==== ===Question=== Can I create a dual operating system on my computer with windows and linux? ===Resources=== I will follow instructions from computer essentials class to download ubuntu and then go from there to create dual OS system. ===Hypothesis=== I can run my computer with both windows and ubuntu Rationale: The hard drive can be partitioned to handle a dual OS ===Experiment=== I will test by installing Ubuntu first on a flash drive and then installing to my computer ===Data=== After a long installation time, I was able to create a dual operating system on my computer. Upon the start I can choose whether or not I wan to run the Windows OS or the Ubuntu OS. The one downside is that files are not shared between the two operating systems. ===Analysis=== Based on the data collected: My hypothesis was correct but not necessarily applicable. I was able to create a dual OS system but I could also just as easily have overwritten the Windows OS and used Ubuntu solely on its own. A better experiment would be to see if I can transfer files from one OS to another automatically. ===Conclusions=== I didn't really make any new discoveries nor did I achieve a groundbreaking experiment. I was able to do what I set out to do but not much more than that. ====Experiment 3==== Does a child process die when the parent is killed? ===Resources=== This is a look at killing processes and possibly the creation of zombies on the system. The code being used in this experiment was found on [[http://snippets.dzone.com/posts/show/6233]] I also referenced a unix forum on the following website: [[http://www.unix.com/unix-dummies-questions-answers/100737-how-do-you-create-zombie-process.html]] ===Hypothesis=== If the parent process dies, the child will not die with it and become a zombie. ===Experiment=== I will take the code from the above mentioned website and run it. I will then run the top command to see if there are any zombies in the system ===Data=== I did not use the code provided on the first resource sit and instead followed the example on the unix forum. ===Analysis=== I did not follow the experiment the exact was as planned but I was not able to run the check process to see if it actually created a zombie. I did run the top command and there are no zombies reported on the system so my assumption is that I did not successfully create a zombie. ===Conclusions=== My hypothesis was never tested because I did not create a zombie in the system. If I had a more proven way to create a zombie so that I can at least understand how they work then I may have more to conclude.