Linux for students terminal shell kernel guide IC2

Linux for students — everything nobody explains before IC2

Linux for students is one of those topics that GCID throws at you in IC2 without much preamble. One day you’re writing Python in VS Code on Windows, and the next you’re expected to navigate a terminal, manage files with commands and compile C programs in Fedora.

This article is what I wish someone had given me before that first IC2 class, the conceptual foundation that makes everything else click.

What is Linux, really?

Most people think Linux is an operating system. That’s partially true but not the full picture.

Linux is technically just the kernel, the core piece of software that communicates directly with the computer’s hardware. It manages the processor, RAM, storage and all connected devices. It’s the layer that sits between the hardware and everything else.

What most people call “Linux” is actually a Linux distribution, the kernel plus a collection of tools, libraries and a desktop environment packaged together. Fedora, Ubuntu, Debian, Arch, these are all Linux distributions. They all use the same Linux kernel but package different software around it.

Hardware (CPU, RAM, Disk)
        ↕
Linux Kernel              ← the actual "Linux"
        ↕
System tools and libraries
        ↕
Desktop environment (GNOME, KDE...)
        ↕
Applications (VS Code, Firefox, Terminal...)

In IC2 at ULPGC you use Fedora, a distribution sponsored by Red Hat, known for being cutting-edge and widely used in academic environments.

Why Linux for students in a Data Engineering degree?

This is the first question everyone asks. You’re studying data science, not systems administration, why do you need Linux?

Three reasons that become obvious by the end of first year:

1. Servers run Linux. Almost every server in the world, cloud platforms, university systems, company infrastructure — runs Linux. If you’re going to work with data at scale, you’re going to be connecting to Linux machines.

2. Programming tools are built for Linux first. Python, Git, Docker, Jupyter, virtually every data science tool runs natively on Linux. On Windows you’re always fighting with compatibility issues, path problems and installation quirks. On Linux things just work.

3. IC2 teaches you the tools you’ll actually use. Compiling C programs, writing shell scripts, managing processes, these are real skills. The terminal isn’t a relic of the past, it’s how professionals interact with systems at scale.

Image generated with AI (Google Gemini)

The terminal, the shell and the console, what’s the difference?

These three words get used interchangeably but they mean different things:

Terminal — the window you type into. It’s the visual interface that shows you a text prompt and lets you enter commands. In Fedora you open it from the applications menu by searching “Terminal”. Historically, terminals were physical hardware — actual machines connected to a central computer. Now the terminal is just a program that emulates that old hardware.

Shell — the program running inside the terminal that interprets your commands. When you type ls and press Enter, the shell reads that, figures out what it means and executes it. The most common shell is bash (Bourne Again Shell) — which is what you use in Fedora by default.

Console — in modern usage, usually synonymous with terminal. Historically the console was the physical keyboard and screen directly attached to a computer.

You type: ls
     ↓
Terminal: shows your input, displays the output
     ↓
Shell (bash): interprets "ls" and executes it
     ↓
Kernel: actually reads the directory from disk
     ↓
Shell: receives the file list
     ↓
Terminal: displays the list to you

Why the terminal and not a graphical interface?

Fedora has a perfectly good graphical file manager. You could click through folders instead of typing ls. So why learn the terminal?

Speed. Moving files, searching for content, processing data, with commands you do in one line what would take 10 clicks. When you’re working with thousands of files this matters enormously.

Automation. You can put terminal commands in a script and run them automatically, at a specific time, on a schedule, triggered by an event. You can’t automate clicking.

Remote access. When you connect to a server over the network you only have a terminal, no graphical interface. This is how all server administration works in the real world.

Precision. Commands do exactly what you tell them. No ambiguous menus, no mystery options, just input and output.

The file system, how Linux organises everything

One of the first things that confuses people coming from Windows is that Linux has no drive letters (C:, D:). Everything is organised in a single tree starting from / — called the root.

/                    ← root — everything starts here
├── home/            ← user home directories
│   └── sergio/      ← your home directory (~)
│       ├── Documents/
│       ├── Downloads/
│       └── GCID/
├── etc/             ← system configuration files
├── bin/             ← essential system commands
├── usr/             ← user programs and libraries
│   └── bin/         ← programs installed by the user
├── var/             ← variable data (logs, databases)
├── tmp/             ← temporary files (cleared on reboot)
└── media/           ← mounted drives and USB devices
    └── sf_GCID/     ← your VirtualBox shared folder

The most important directories for IC2:

~ — shorthand for your home directory (/home/sergio). When you open a terminal you always start here.

/media/sf_GCID/ — where VirtualBox mounts your shared folder with Windows. This is how you pass files between the two systems.

/tmp/ — temporary files that disappear when you reboot. Never store important work here.

Absolute vs relative paths

This is a concept that confuses beginners but is essential to understand:

Absolute path — starts from the root /, always works regardless of where you are:

/home/sergio/GCID/FP1/topic_variables/average.py

Relative path — starts from your current location, changes depending on where you are:

GCID/FP1/topic_variables/average.py    # if you're in /home/sergio
topic_variables/average.py              # if you're in /home/sergio/GCID/FP1
average.py                              # if you're already in topic_variables

Two special shortcuts that appear everywhere:

  • . — means “the current directory”
  • .. — means “the parent directory” (one level up)

Open source — what it actually means

Linux is open source. That word gets used a lot but what does it actually mean for you as a student?

Open source means the source code is publicly available, anyone can read it, study it, modify it and distribute their own version. This is why there are hundreds of Linux distributions — anyone can take the kernel and build their own.

For you as a student it means:

  • All the tools you use in IC2 are free, no licences to buy
  • You can look at the source code of any tool and learn from it
  • If something doesn’t work the way you want, there’s a community that has probably already solved it
  • The skills you learn are transferable, they work the same on your laptop, on a university server and on a cloud machine

Linux and the open source ecosystem is what makes the entire modern web run. Every time you use Google, Netflix, Amazon or any major tech service, Linux is running underneath it.

Getting comfortable with the terminal — the right mindset

The terminal feels intimidating at first because you have to know what to type. There’s no menu to browse. But this is actually its strength, once you know the commands, you’re faster than anyone using a graphical interface.

The learning curve is real but short. After two weeks of IC2 you’ll be navigating the file system without thinking about it. After four weeks the commands that felt foreign will feel natural. After a semester you’ll wonder how you ever managed without it.

The most important thing to remember when you’re starting: you can’t break anything by typing commands, as long as you’re not using sudo (which gives administrator permissions) you can’t damage the system. Explore, experiment, make mistakes. The terminal is more forgiving than it looks.

Summary

Linux = kernel + distribution
Fedora = the distribution used in IC2

Terminal  = the window you type in
Shell     = the program that interprets your commands (bash)
Console   = modern synonym for terminal

File system:
/ = root (everything starts here)
~ = your home directory (/home/sergio)
. = current directory
.. = parent directory (one level up)

Absolute path: /home/sergio/GCID/file.py (always works)
Relative path: GCID/file.py (depends on where you are)

Why Linux for GCID?
→ Servers run Linux
→ Data science tools run natively on Linux
→ IC2 teaches real professional skills
→ Terminal = speed + automation + remote access

Open source = free, public code, modifiable, community-supported

In the next article we look at the essential Linux terminal commands you’ll use every day in IC2.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *