This is how the screen may loop like after some programs have been started
Linux comes in many flavors (distributions) which may be different
in how they are configured, their desktop, their software repository,
their target user community
beginners, gurus, programmers, desktop, server …
Here are some distributions:
Ubuntu (which we use), Mint, Debian, RedHat, Fedora, Kali...
Linux can be downloaded and installed for free
The sources of the OS can be accessed freely
Linux has a window system based on X11 and has most facilities Windows offers
For certain commercial hardware there are no Linux drivers (caution!)
Writing your own Linux driver is possible but often the manufacturers do not
open the hardware specs (register meaning, initialization procedure…)
which makes this a very tedious job.
Programmers mostly use the command line interface something
that is hardly ever used in Windows.
The file system layout on disk is different (ext4 vs ntfs)
but there exist drivers on both systems
reading and writing the others files systems
When you start up a terminal window, you start a command shell with it.
We will be using bash
When you type a command, bash will check if it is a command
implemented in bash, in which case it is executed immediately,
otherwise a new process is created, the command loaded and executed
After termination of the command the process is removed again.
Either bash waits for termination of the process
or it is run in parallel (“&” after the command)
Where are the commands and how many are there?
Here are a few very frequently used commands
Command | Action |
---|---|
ls | List directory content |
cat, less, more | Print content of a text file |
mkdir | Create a directory |
cd | Change working directory |
pwd | Print current working directory |
echo | Print variable |
vi, nano, emacs, gedit ... | Edit a text file |
rm, rmdir | Remove a file / directory |
grep | Search for a string in files |
The number of commands is unlimited since you can write your own commands
and include them into the system.
This is a small sample of /usr/sbin | ![]() |
Well… you don’t, but there is a man (manual) command where you can find
a description of the parameters.
Typing ls -l (l means long listing format) in one of my directories,
this is what I get:
The left rwx means that the file owner can
and the last 3 characters for any user.
The chmod command allows the file owner to modify file permissions.
This can be done for
Example: chmod a+w Makefile (what does it do?)
You can also give octal values representing the permission bits:
chmod 655 Makefile (what will be the file permissions after the command?)
As we have seen the owner of a file / directory can do with it whatever he wants
including to refuse access to anybody but himself.
You can modify or destroy your file but you cannot modify system files
or files of other another user if he does not explicitly allow it.
There is one user who has the power to do anything: root: the super user.
Sometimes you may need this power to adapt the system to your needs:
sudo command executes a command with super user privileges.
Be careful when doing this, you have the power to destroy your system!
The apt command is a package management to allowing you to
add new software packages
To find any command click this button and type a command name in the search box |
![]() |
Here you may try to see which software is available on Ubuntu
clicking the Ubuntu Software button
Every program has 3 input/ouput channels associate with it:
stdin: the standard input channel
stdout: the standard output channel
stderr: the error channels
stdin in usually associate with the keyboard
stdout and stderr with the terminal window
from which the application was started.
Any of these may be re-directed with “<” for stdin,
'“>” for stdout and “2>” for stderr
Unix (and Linux) uses many small programs that can however be
connected to produce more complex commands.
stdout of one command is connected to stdin to another one through a pipe.
Let’s say, I want to know how many instances of bash are running on the system
(with each terminal you get an associated shell)
In this case I can give the command ps ax, which will however print all processes
currently running. If I pipe this output into grep bash
(showing every line containing the string “bash”)
then I have constructed the command I was looking for.
Every user has his own home directory into which his personal files are stored.
This also concerns configuration files
Most configuration files are “hidden files” whose file names start with “.” To see these type
ls -a ~ Meaning: show all files in my own home directory.
cd (without parameters) takes you to your home directory
The current working directory is “.”
“..” is the directory one level lower from the current working directory
You can collect commands in a script file (e.g. myscript.sh)
The command sh myscript.sh sequentially executes all commands in this file.
Actually bash is a command language with assignments,
conditional and loop statements just like any conventional programming language.
When making your script file executable by changing the permission
bits you can run it (with the sh prefix) like any other program (how?).
Have a look at your .profile file a shell script which is executed
when you create a new shell (e.g. when opening a new command window).
bash is a command interpreter but it is not the only one
There are other command shells like csh, tcsh …
And there are script base programming languages like python, perl …
Often the first comment in the script file tells the
system which interpreter to use:
#!/bin/sh
#!/bin/python
I | Attachment | History | Action | Size | Date | Who | Comment |
---|---|---|---|---|---|---|---|
![]() |
binaries.png | r1 | manage | 65.4 K | 2017-09-06 - 15:39 | UnknownUser | |
![]() |
chmod.png | r1 | manage | 26.8 K | 2017-09-06 - 15:39 | UnknownUser | |
![]() |
lecture_2.odp | r1 | manage | 1050.5 K | 2017-09-07 - 08:57 | UnknownUser | |
![]() |
mainScreen.png | r1 | manage | 332.6 K | 2017-09-05 - 16:01 | UnknownUser | |
![]() |
permissions.png | r1 | manage | 14.4 K | 2017-09-05 - 16:14 | UnknownUser | |
![]() |
pipe.png | r1 | manage | 10.5 K | 2017-09-06 - 16:20 | UnknownUser | |
![]() |
startButton.png | r1 | manage | 5.5 K | 2017-09-05 - 16:01 | UnknownUser | |
![]() |
ubuntuSoft.png | r1 | manage | 427.2 K | 2017-09-05 - 16:14 | UnknownUser |