<chapter><title>Embedded Konsole</title> <para> EmbeddedKonsole is Opie's terminal emulator. From here you can do pretty much anything (since Linux is actually a command line based OS by itself). I will not go into much detail on using the linux command line, as that is covered in many other places (http://www.tldp.org is a good place to start, or read O'Reilly's <citation>Running Linux</citation> for a comprehensive look at Linux for the beginner). I will, however, give a quick overview of using a Linux shell. </para> <section><title>Using Embedded Konsole</title> <para> Along the top of the window is a row of menus and icons. The "Font" menu lets you select the font size that you want the console to use, while the Options menu lets you select various options. Below this row of menus and icons is a pulldown list with various common commands in it. </para> <section><title>Options Menu</title> <para> The first submenu in the options menu is the "Command List" menu, which lets you edit or hide the command list pulldown. The "Tabs on top" or "Tabs on bottom" (depending on which is currently enabled) allows you to select where the tabs representing multiple terminal sessions are drawn. The "Colors" submenu lets you select from a color scheme, or make your own, and the "Scroll Bar" submenu lets you select where or if the scroll bar is drawn. </para> </section> <section><title>Icons</title> <para> The row of icons to the right of the menus allows you to type common keystrokes without having an input method visible, as well as some other things. </para> <para> The icon all the way on the left will open a new terminal session in a new tab, while the icon all the way on the right will paste text from the clipboard into the terminal. </para> <para> The other icons are the same as typing (from left to right) enter, space, tab (for tab completion), up, and down (for the command history). </para> </section> <section><title>Command List</title> <para> The command list is a pulldown menu with a list of commonly used commands. Selecting one will type the command into the terminal wherever the cursor is. You can edit or hide this menu from <GUIMenu>Options</GUIMenu>&arrow; <GUIMenuItem>Command List.</GUIMenuItem> </para> </section> </section> <section><title>What is a Shell</title> <para> A shell is a program that accepts input from a user, and runs commands. Each "command" in the shell is actually a separate program (unless you are using a shell like BusyBox, which makes some of the more common commands part of its own program in order to save space). Shells can actually be very powerful, and many of them allow you to write something called "shell scripts" which are just a sequence of commands, sometimes with some flow control statements, saved to a file and run each time the script is run. For the most part, the average user does not need to know about any of this, though. If you are running Opie on the Familiar distribution, it is advisable to install the bash shell (ipkg install bash) because it offers things like tab completion, use of the backspace key, and a command history, as well as offering a more advanced scripting languauge than most other shells. </para> </section> <section><title>Running Programs</title> <para> To run a program or a command (remember, a command is just another program), you simply type the name of the program and hit "Return" (in Linux, program names do not have a special suffix like they do in windows, in fact the "." character has no special meaning unless it is at the begining of a filename, in which case it makes the file "hidden"). When you type a program name and hit "Return" the shell looks in a special list of directories called your "path", and if it cannot find it in any of those directories, it stops looking and tells you it could not find them. If you want to run a program that is not in your path, you must specify an absolute or relative path to that program. For instance, to run a program that is in the directory you are currently in, you would type <literal>./program</literal> ("./" is a special directory that is explained below), or to run a program in /home/username/ you would call <literal>/home/username/program</literal>. </para> <para> Most programs take "arguments" when run from the command line. An argument is a string that contains no spaces that changes how the program behaves (a text editor, for instance, might take a single argument, which would be the name of the file you wish to edit). Usually, you can use the arguments "-h" or "--help" to get a list of the common arguments that that program takes, along with a short usage description, and a short description of what each argument does. </para> </section> <section><title>Basic Navigation</title> <para> The command that you will use most often in the shell is probably the "cd" command, which stands for "change directory." With this command, you can move around in the file system, by issuing the command like this: <userinput>cd <replaceable>[new directory]</replaceable></userinput>, where <replaceable>[new directory]</replaceable> is the directory you want to move to. This directory name does not have to include the entire directory structure, but can be "relative" which means it assumes you are talking about directories relative to the directory you are in. For example, if you are in a directory called /home/username and you want to move to the directory /home/username/other/dir you could simply type <userinput>cd other/dir</userinput> and you would end up in /home/username/other/dir. You can also specify a full, or "absolute" path, by specifying the entire path name starting with / ( / is a special directory called the "root" directory, and does not have a "parent" directory, which means that it is not in any other directory). There are also two special directories called "./" and "../". The "./" directory is the current directory you are in, and you will probably never use this in conjunction with the cd command (why would you want to move to the directory you are already in?). The "../" directory represents the parent directory of the directory you are currently in, so if you are in /home/username, ../ is the same as /home. You can string several ../'s together, so if you are in /home/username/dir/ ../../ represents /home. There is one other special directory, called "~/" that points to your home directory (usually /home/username or /root for the root user). </para> </section> <section><title>Moving Files</title> <para> To move files around, you need to use the "cp" (copy) and "mv" (move) commands. Both of these are run the same way: <userinput>command originalfile newfile</userinput>. The only difference is that cp creates a new file without touching the old one, while mv deletes the original file. The two path names can be either absolute or relative. If you only specify a directory for the destination, and no filename, it will use the filename for the original file. </para> </section> <section><title>Deleting Files</title> <para> To delete a file, run the "rm" command, and to delete a directory, run the "rmdir" command, each of them take the file to be removed as their only argument. The rmdir command requires the directory to be empty, so if you want to delete a directory that is not empty, along with all its contents, run <userinput>rm -r dir</userinput>. </para> </section> <section id=symlink><title>Linking Files</title> <para> In Linux, you can have a special file called a "symbolic link" that acts just like a copy of another file, except it takes up less space. This is convinient if two applications are looking for the same file in two separate places, because the file can be in both places at once, without taking up any extra space, and any change to one is automatically applied to the other (really, there is only one file, the link is just a file pointing to the original file). This is also useful for naming applications independant of their version number. For instance, you could have a link called "application" that points to "application1.0". To create a link, use the following command: <userinput>ln -s originalfile link</userinput>. </para> </section> </chapter>