After an extended break, I’m adding a second installment into my Terminal Tutorial. This time I’ll be going into the structure of Unix commands.
Doing Something with Files
Now that you know how to move around in the filesystem, you’ll want to do something with files. For a simple example until I get to text editors, save the source of this web page to your home directory (you just want the HTML source, which is currently Safari’s default and only option when you choose Save As). Alternatively, use your favorite text editor (BBEdit, TextEdit, SubEthaEdit, Smultron, etc.) and save a text file with some text in it to your home directory (refrain from using spaces in the file name for now).
Open up your terminal application. Navigate to your home directory if it’s not your current working directory. Use the
ls to list the contents of your home directory. Either the source of the page or your text file should be there. We’re going to use the
cat command now. Type
cat <em>filename</em> where filename is the name of your file. You should see the text of that file be displayed.
What is this
cat command do and what does it have to do with your kitty Fluffy? Well, it has nothing to do with fluffy.
Cat, like all good Unix commands, is short for something. In this case, it stands for “concatenate and print files”. You can see this for yourself by typing
man cat into the terminal. You’ll see that under name what I’ve said is true. Now before the rest of what is output makes any sense, I’ll have to introduce you to how Unix commands are formed. For now, press q to exit the man command. This will return you to the prompt.
Some Structured Education
Unix commands are archaic, hard to understand, complicated, and for programmers only. Right? Wrong! Once you get to know them a little bit, they’re not so bad. Unix commands are made up of several parts. Once you get them down, you’ll start to understand the Unix commands you’ve dutifully pasted into the terminal window at someone’s suggestion. You’ll start using your own commands. You’ll start to understand
man pages. Amaze your friends!
The first part of a command is the program being executed. Some examples are
ls, etc. There are many built-in commands. For now, we’ll just use the ones I’ve introduced. Next, we have what are called flags. Like those things we burn? No, no, not those flags. These flags are like preferences or options, they tell the command how to behave. For example, use the
ls command. Now use
ls -l. Suddenly, there’s a lot more crap being displayed. What does it all mean? You don’t care. Let’s move on. The “l” after the dash is what you are interested in here. That’s a flag. The dash is your clue that it is a flag. Characters after a dash are interpreted as a flag. Try
ls -al. Note that more files are listed, including “.” and “..” which we encountered in the last lesson.
These flags tell the
ls command to a couple things. The “a” tells
ls to list all files. The “a” does stand for something! It’s not just an obscure thing scientists know. Likewise, “l” stands for long. There is a way to look these up, but we’ll leave that to the next section.
Next in a command, we have the arguments which can define a sub-command of the command or a file to act upon. In the
cat command you just used, the filename was an argument. Sometimes arguments following a flag are used by the flag. How these arguments are used are defined by the command. For
cat, it will list all the files that you list in a row. This usage is defined by the
Meet the Man
Man, or manual, pages define the origins, functionality, and usage of commands. They’re useful for figuring out what a command does and formulating your own commands.
Let’s break it down a little. The first section is the Name, which generally tells you the name and a quick description of the command. Next we have the Synopsis which describes the general structure of the command. Things enclosed in brackets  are optional. Almost all flags are optional. Sometimes arguments are optional as well. Ellipses indicate multiple arguments of a certain type (for example in cat).
This was a big chunk and not everyone who uses Unix properly understands how commands are set up (to them, Unix is like a cookbook). By understanding how these commands work, you have a leg up.