The command line is often mentioned as a tool for starting or setting up Flightgear, Atlas, Terrasync, FGCOM and other programs related to Flightgear. Many users aren't aware of the command line or how to make use of it. This article may help...
Operating System independent advice: Try to use copy & paste as much as possible in order to avoid spelling mistakes, whenever you try to execute command line commands! The system will do exactly what you tell it on the command line and when you get it wrong, the system will do it wrong.
On Windows, you can get to the command line by clicking the "Start" button and then choosing "Run...". As a handy shortcut to the "Run..." prompt: Hold down the "Windows" key (the one with the windows flag on it) and tap the "R" key.
Type "cmd" (without quotation marks) into the field and hit Enter.
You should see the so called prompt now, which says something like that:
Microsoft Windows [Version x.y.zz.abc] Copyright and stuff C:\Windows>_
That says you're operating on drive C in directory Windows. The blinking cursor awaits your commands.
You can simply change drives by entering <drive-letter>: as shown below:
C:\Windows> d: D:\>_
And return to drive C in the same way:
D:\> c: C:\Windows>_
Now how about changing the directory? Assuming you downloaded Flightgear into the directory "Flightgear", that is located on drive D and its directory "Simulators". You do the following:
C:\Windows> d: D:\> cd Simulators D:\Simulators> cd Flightgear D:\Simulators\Flightgear>_
Easy, isn't it? You can also change directly into subdirectories:
C:\Windows> d: D:\> cd Games\Flightgear D:\Games\Flightgear>_
And if you got into the wrong directory somewhere, just try "cd .." to go one directory downwards:
D:\Games\Flightgear> cd .. D:\Games> cd .. D:\>_
That's most you'll need to know about the command line, when operating under Windows. Any commands that appear in the forums or in a wiki can be executed directly on the command line, after you have changed into the correct directory first.
On Linux systems, there are several ways to get a command line. As Flightgear does only run in a graphic X-Window system, we'll use a so-called terminal.
The most often used window managers are Gnome, KDE and Xfce. One way of getting to a console would be using the window managers menu:
- KDE KDE-Menue > System > Konsole
- Gnome Applications > Accessories > Terminal
- Xfce Applications > Terminal
A different approach would be pressing Alt F2. That should open a dialog box, where you can enter one single command. Depending on which distribution of Linux you chose and which window manager you use, you can try (all without quotation marks) "xterm", "konsole", "gnome-terminal", "gtkterm", "kterm", "xfce4-terminal"... there's a lot of graphical console emulators!
Now as you've got your console window, it will say something like that:
This (especially the dollar sign) is the so called "prompt", where username should be the name of the currently logged on user and computername is the name of your computer. If your prompt is "#" instead of "$", you are logged in as root (superuser) and probably shouldn't be.
Note the "~" (tilde) sign before the prompt. On Linux systems that sign indicates, that you're in your home directory, which normally should be equal to "/home/username".
On Linux systems, you can change directories equally to the above described Windows method:
username@computername:~$ cd Flightgear username@computername:~/Flightgear$ cd data username@computername:~/Flightgear/data$ _
To go one directory back, you have to use "cd ..":
username@computername:~/Flightgear/data$ cd .. username@computername:~/Flightgear$ cd .. username@computername:~$ _
Now if you downloaded Flightgear to another place than your home directory, you can go anywhere else (remember, that "~" says you are in "/home/username"):
username@computername:~$ cd .. username@computername:/home$ cd .. username@computername:/$ _
Notice, that the "~" sign disappeared, as you went out of your personal home directory from "/home/username" to "/home". The directory "/" is the so called root directory - you can't go downwards from here as all directories are based here.
To change directly to a specific directory, you may use:
username@computername:~$ cd /any/path/you/like username@computername:/any/path/you/like$ cd /home/username username@computername:~$ cd /some/other/path username@computername:/some/other/path$ cd ~ username@computername:~$ _
Notice, that cd-ing to /home/username produces the "~" sign, indicating, that you're at your home directory, as well as "cd ~" directly brings you there.
One last note, before we finish this thing:
Linux systems are case sensitive, so you have use the correct case sensitive spelling of files and directories. Otherwise the command line won't act as expected!
Now this should be enough, to change to a desired directory, where commands can be executed.
On Linux, the command line is a very essential tool and it provides a lot of means to do special actions.
To show the content of a directory, use the "ls" command. This for example shows the content of a directory, where flightgear and several other stuff is saved:
username@computername:~/flightgear$ ls download_and_compile_mod.sh plib-1.8.5 run_fgrun.sh download_and_compile_mod.sh~ plib-1.8.5.tar.gz run_fgrun.sh~ download_and_compile.sh run_fgcom.sh run_js_demo.sh fgcom run_fgfs.sh run_js_demo.sh~ fgfs run_fgfs_test.sh run_terrasync.sh fgrun run_fgfs_test.sh~ simgear install run_fgjs.sh OpenSceneGraph run_fgjs.sh~
Okay. Imagine, you just want to know about the files and directories containing the sequence "run". In order to achieve this, you can pass the output of the "ls" command to another program. A very common filter program is "grep". You use "grep" by telling the program what to filter. Directing the output of "ls" to "grep" (filtering for "run") is done by using the pipe symbol: "|"
username@computername:~/flightgear$ ls | grep run fgrun run_fgcom.sh run_fgfs.sh run_fgfs_test.sh run_fgfs_test.sh~ run_fgjs.sh run_fgjs.sh~ run_fgrun.sh run_fgrun.sh~ run_js_demo.sh run_js_demo.sh~ run_terrasync.sh
Easy, isn't it?
Now on Linux, you can't simply rename a file into "filename.exe" to attempt to execute it, as you might consider in Windows. In Linux, every file has its restrictions, called mode bits. You can show them by using the "ls" command with option "-l":
username@computername:~/flightgear$ ls -l total 880 -rwxr-xr-x 1 username usergroupname 9138 2009-02-01 14:26 download_and_compile_mod.sh -rw-r--r-- 1 username usergroupname 9156 2009-02-01 14:23 download_and_compile_mod.sh~ -rwxr-xr-x 1 username usergroupname 15263 2009-02-05 21:23 download_and_compile.sh drwxr-xr-x 9 username usergroupname 4096 2009-01-26 21:58 fgcom drwxr-xr-x 4 username usergroupname 4096 2009-01-26 07:26 fgfs drwxr-xr-x 6 username usergroupname 4096 2009-01-26 10:13 fgrun drwxr-xr-x 8 username usergroupname 4096 2009-01-26 21:58 install drwxr-xr-x 15 username usergroupname 4096 2009-02-14 11:19 OpenSceneGraph drwxr-xr-x 4 username usergroupname 4096 2009-02-14 11:18 plib-1.8.5 -rw-r--r-- 1 username usergroupname 779133 2008-03-11 03:16 plib-1.8.5.tar.gz -rwxr-xr-x 1 username usergroupname 167 2009-01-26 21:58 run_fgcom.sh -rwxr-xr-x 1 username usergroupname 162 2009-02-14 12:30 run_fgfs.sh -rwxr-xr-x 1 username usergroupname 916 2009-02-09 22:26 run_fgfs_test.sh -rw-r--r-- 1 username usergroupname 915 2009-02-09 22:26 run_fgfs_test.sh~ -rwxr-xr-x 1 username usergroupname 162 2009-02-09 20:26 run_fgjs.sh -rwxr-xr-x 1 username usergroupname 162 2009-02-09 20:26 run_fgjs.sh~ -rwxr-xr-x 1 username usergroupname 205 2009-02-14 12:31 run_fgrun.sh -rw-r--r-- 1 username usergroupname 218 2009-01-27 23:23 run_fgrun.sh~ -rwxr-xr-x 1 username usergroupname 165 2009-02-09 20:39 run_js_demo.sh -rwxr-xr-x 1 username usergroupname 162 2009-02-09 20:39 run_js_demo.sh~ -rwxr-xr-x 1 username usergroupname 143 2009-02-14 12:30 run_terrasync.sh drwxr-xr-x 3 username usergroupname 4096 2009-01-26 07:20 simgear
First, every item has its mode bit, shown on the very left in a scheme of drwxrwxrwx, followed by a number, the username of the owner (should be the same as of the current user!), the name of the group of the owner, file size, its last change date and its name. If there is a "-" (minus) sinstead of a character in the drwxrwxrwx sequence, the specific mode bit isn't set.
The first d in some of the items indicates a directory. Then, three groups of rwx follow. Each r means "file/directory may be read", each w means "file/directory may be written", each x means "file may be executed".
The first group of rwx shows the rights of the owner of the file, the next group of rwx shows the rights of the group of the owner and the last group of rwx gives information about what everybody else may do with the file.
As there are some scripts out there, that can be downloaded, you have to make them executable in most of the cases (because downloading only sets -rw-r--r-- per default). Making a file executable can be achieved by the "chmod" command. We use the "ls" command with its "-l" option and the pipe to filter the output of "ls" by "grep":
username@computername:~/flightgear$ ls -l | grep download_and_compile.sh -rwxr-xr-x 1 username usergroupname 15263 2009-02-05 21:23 download_and_compile.sh username@computername:~/flightgear$ chmod -x download_and_compile.sh username@computername:~/flightgear$ ls -l | grep download_and_compile.sh -rw-r--r-- 1 username usergroupname 15263 2009-02-05 21:23 download_and_compile.sh username@computername:~/flightgear$ chmod +x download_and_compile.sh username@computername:~/flightgear$ ls -l | grep download_and_compile.sh -rwxr-xr-x 1 username usergroupname 15263 2009-02-05 21:23 download_and_compile.sh
Notice, that "download_and_compile.sh" at first had the executable bits all set, then we take them away by "chmod -x" and give them back by "chmod +x". You can do the same with read and write rights.
That should be enough of command line knowledge, to perform several command line actions related to Flightgear and its Addons so far.