This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
haas:spring2014:unix:projects:puzzle_box [2014/01/20 20:37] – created wedge | haas:spring2014:unix:projects:puzzle_box [2014/02/02 15:44] (current) – [Procedure] wedge | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | coming soon | + | <WRAP centeralign round box> |
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ~~TOC~~ | ||
+ | |||
+ | ======Project: | ||
+ | |||
+ | =====Objective===== | ||
+ | To become familiar with another useful utility, and to develop some basic debugging/ | ||
+ | |||
+ | =====Background===== | ||
+ | The filetype of a file can be extremely important when determining what application is used to open it. | ||
+ | |||
+ | Most of the time a file is named correctly, for instance a file ending in **.c** can be assumed to be the source code of a C program, or **.gz** to be a gzipped file. | ||
+ | |||
+ | With the **dircolors**(**1**) utility colorizing specific files, it is further assuming that files which end in **.mpg** are really MPEG files and colors them accordingly, | ||
+ | |||
+ | In other operating systems, a file's extension determines what application is used to open the particular file. If a file that ends in **.mp3** is really a **.png** file, the default MP3 player is going to have difficulties. | ||
+ | |||
+ | Sometimes files are not always named properly, either due to a web browser mangling an extension or for whatever reason. When a file is more than meets the eye, we must rely on the various tools available to use to determine what in fact it is. | ||
+ | |||
+ | ====The file utility==== | ||
+ | |||
+ | In UNIX there is a nifty little utility called **file** that attempts to determine the actual type of a file by checking a series of properties. From the **file**(**1**) man page: | ||
+ | |||
+ | There are three sets of tests, performed in this order: | ||
+ | |||
+ | - filesystem tests, | ||
+ | - magic number tests, | ||
+ | - and language tests. | ||
+ | |||
+ | The first test that succeeds causes the file type to be printed. | ||
+ | |||
+ | A // | ||
+ | |||
+ | The //magic number// test is a check of files conforming to existing fixed formats, typically by examining the file at the binary level. If using a hex editor, you will find that **.gz** files should always start with the same sequence of hexadecimal values. | ||
+ | |||
+ | Finally, if the file is determined to be a simple ASCII file, it will attempt to analyze whether or not it conforms to some language (ie C source code vs. an HTML document). | ||
+ | |||
+ | Note that **file** is not always perfect, but for most cases will get the job done. Try checking files in your home directory or elsewhere on the system and see the results. | ||
+ | |||
+ | Refer to the **file**(**1**) manual page or your textbook for more information. | ||
+ | |||
+ | =====Practice===== | ||
+ | For this project, files are located in the **projects/ | ||
+ | |||
+ | ^ ^|Do the following, and discuss the results in your Opus:| | ||
+ | | ^ a.|Copy **file.txt** into your home directory.| | ||
+ | |:::^ b.|Using **file**(**1**), | ||
+ | |:::^ c.|View the contents of this file using **cat**(**1**). Is it what it appears to be?| | ||
+ | |:::^ d.|Using **gzip**(**1**), | ||
+ | |:::^ e.|Uncompress the file, and recompress using arguments for fastest (not highest) compression. What does **file**(**1**) report now?| | ||
+ | |||
+ | As in many puzzles, one's visual comprehension of the scenario plays a vital role. Where something doesn' | ||
+ | |||
+ | =====Procedure===== | ||
+ | |||
+ | Try your hand at the following activity, where things are not necessarily as they should be: | ||
+ | |||
+ | * Locate the file **puzzle.txt** and copy it into your home directory. | ||
+ | |||
+ | Being a file that ends in **.txt**, you might try opening it in a text editor (or simply using the **cat**(**1**) utility. | ||
+ | |||
+ | Does it appear to be a text file? | ||
+ | |||
+ | * Use the **file**(**1**) utility to determine the actual file type. | ||
+ | * Based on the output of file, react as appropriate to unravel this puzzle in order to find some plain text directions that will instruct you how to finish this project. | ||
+ | |||
+ | As is the case many investigations, | ||
+ | |||
+ | =====Submission===== | ||
+ | To successfully complete this project, you must follow the directions located in a readable file at the conclusion of this project. Until you encounter it, you are not yet finished (hint). | ||
+ | |||
+ | You should get some sort of confirmation indicating successful submission (actually, two) if all went according to plan. If not, check for typos and or locational mismatches. |