The terminal is the black thing with text you probably have already seen in some hacker movies. It might look scary, but it basically works like a voice assistant with text input. If you see instructions in the form of
sudo pacman -Q | grep -i -C 10 "apt", then this is something you have to put into the terminal.
And the best thing is, you can control your entire computer, just from the terminal! Technically speaking, you don't even need a graphical interface. This can be very useful if you break your system to the point where the graphical interface is not working anymore. But it has more benefits. If you know how to use it, it's also the fastest way to do certain things. And it's always the same, no matter which graphical interface (desktop environment) you use. And the best: You can just copy instructions, and paste them. You don't have to follow a ten step tutorial, search buttons, and so on. You copy a couple lines of code, paste them to the terminal (attention here, but more on that later), press enter, and (if everything went well) you are done. Additionally, the terminal can give you very useful information about errors, if you start a program from it.
How to use the terminal
Where do I find the terminal?
You will probably find it somewhere in your menu. It might have a name like Gnome-Terminal, Konsole, Xterm, Terminator, or something else. It will probably have an icon that looks vaguely like a terminal (black background, white text).
How does the terminal work?
You write a line of text, you press enter, and you look at what happens. The terminal usually tells you if something goes wrong. Sometimes you need to press additional buttons like
y for "yes" or
n for "no".
Should I read the output?
Yes, it might contain warnings. However: Sometimes the output is very long, for example if you install software. In this case, you don't have to read everything. The important stuff will be at the end. If you have problems and look for help in forums, always include the output from the terminal.
Should I take warnings seriously?
Is the terminal dangerous?
It might look scary, but it's not dangerous. If you write something wrong, it will just tell you that it's wrong - your computer will not explode. However, things can go wrong, more in the next section.
How can I learn using it?
Look here: https://linuxjourney.com/
Dangers of the terminal
So should I just input whatever I find at some random place in the internet?
NO! You should not copy/paste stuff from untrusted sources (like this wiki - everyone can edit it) if you don't understand what you're doing. The commands might be malicious. For example, if you would type the following, you would delete everything on your computer, and potentially destroy your motherboard:
Other commands may uninstall your graphical user interface, or install a remote access for hackers.
This sounds scary!
Don't be afraid. Malicious tutorials for Linux are rarer than malware for Windows (I don't even know if this ever happened somewhere), and if someone did write one, it would probably get noticed and removed very fast.
If you're fine with installing software on Windows, you should be fine with tutorials for Linux. But still. Be wary.
So as long as I don't type --no-preserve-root, everything is fine?
No. The terminal is a way to operate your computer. It will do exactly what you tell it to do. If you tell it to remove all your important files, it will do just that. In the same way you might harm your computer with the GUI, you might as well harm it with the terminal. However, you definitely have more options to fuck things up when using the terminal.
For example, always be careful, when running
sudo. This is the equivalent to "Administrator access", but much more powerful. You should always avoid running a root-shell (a shell where you have sudo access without typing sudo). In many shells you would detect it by the # symbol at the beginning of each line.
But note, that you can do all kind of bad stuff in your home directory (the place where all your important files are), without typing
sudo. Always think before typing something, and especially think before pressing enter.
Also note, that
rm actually removes files, and doesn't just move them to the trash bin. Always be careful when using
rm. If you want to have extra safety, you can use
trash instead, it will move files to the trash bin.
Could I harm my computer if I type malicious commands by accident?
Accidentally typing a command that installs malware is near impossible. However you can absolutely delete important files by accident. For example, you could want to do
rm -r ~/images/bad_images to remove some bad images. However, if you accidentally hit
enter instead of
/ after typing
rm -r ~/images you will remove all images. Be alert when using dangerous commands, or use less dangerous commands instead! For example, you can use
trash instead of
rm, it will move into the recycle bin instead of deleting.
What else can go wrong?
There might be instances where you copy a command from some website, and you also copy the "enter command". This might lead to enter being automatically pressed at the end of the line, and the command being executed without additional interaction by you. If you want to modify the command before executing it, this would be unintended behavior. To prevent it, you can copy to a text editor first, modify the commands, and then copy to the terminal. Malicious websites could even alter what you copy. It's always a good idea to paste in a text editor before you paste into the terminal.
Other stuff you should know
If you have a folder
foo and in it a folder
bar, you would write this as
foo/bar. The topmost folder is
/. This means, that every path on your computer looks like this:
Go to a folder:
cp <source> <target>
Copy a folder:
cp -r <source> <target>
mv <source> <target>
ln -s <source> <target>
mv <source> <target>
rm <file_name> (better alternative:
rm -r <folder_name> (better alternative:
trash -r <folder_name>)
Do something as
root (the equivalent to the windows administrator):
~ is an abbreviation for
<username> is your actual username. If your username is peter, this would be
/home/peter), so paths to files in your home directory (the place where all your personal files are, look like this:
. is an abbreviation for the folder you are currently in. For example if you are in
. would be
~/.var/app/. This is especially useful if you want to execute a script that's inside your current folder:
./<script_name>, or if you need the path you are currently in, but don't want to type it, for example to search a file inside your current folder or a subfolder:
find . | grep -i <file_name>.
.. is an abbreviation for the parent of the folder you are currently in. For example if you are in
.. would be
~/.var/. This is especially useful to change the directory to the parent folder: