cd /news/developer-tools/i-thought-i-knew-linux-then-i-actual… · home topics developer-tools article
[ARTICLE · art-35319] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

I Thought I Knew Linux — Then I Actually Learned It (Week 1)

A developer recounts their first week of truly learning Linux, covering fundamental concepts such as the kernel, user modes, file permissions, and essential commands. The post explains the difference between absolute and relative paths, shell and environment variables, and process management. It also introduces redirection, pipes, symbolic links, and the tar command.

read4 min views1 publishedJun 21, 2026

Before you read this doc you must know english is my second language and this doc is have completely my own words not any AI, translator etc.

An Operating System is software that manage every system resources and it also manage - Hardware, Kernel, and User space.

Kernel mode handle every hardware related work and this is only thing that manage hardware. User mode is just showing us to running programs like right now you are in User mode, you never touch any hardware related things.

Users are very important part of the OS bcz it create wall of processes and a single server can manage multiple users.

Every user gets a UID so the kernel identify the user.

This is the BOSS of the system he can do anything in the system without any confirmation model and one more thing the root can do anything but it doesn't mean root have kernel mode this is steel in the user mode.

Every user have a group and we can manage the permissions on the group so we easily add/remove users from group.

The shell is a program where we run commands. shell is a interface between kernel and users.

program + options + argument. ls -l /home

ls - program

-l - option /home - argument

ls - list the data(files & Directories) cat - View the inside file

echo - print something

touch - create a file

cp - copy anything

mv - move anything

rm - remove anything(you only remove files & directories that access you have)

pwd - present working directory

cd - change directory

mkdir - create directory

rmdir - remove empty directory

Absolute path mean full path of the file for example:- /home/user/directory/test.txt

Relative path mean only current folder path for example:- directory/test.txt

grep - this cmds grep the exact line what we want(grep "findme" file.txt). -i(case insensitive) and -v(this exclude lines that containing findme) is options of this cmd. sort - sort lines alphabetically.

head - bydefault print 10 top lines(head filename.txt)

tail - bydefault print 10 bottom lines(tail filename.txt)

less - not print everything in single time it wait for your keys(up, down, q etc.)

find - this find in the subfolders also(but ls find only on the current directory)

locate - quickly find files and direcotries

diff - check differences between two files

file - details of any file

Shell variable are the private variables of the shell we can't use them in child programs but environment variable can do but before it we need to export that.

shell find cmds on the $PATH not in the whole system if sometime the program is installed but the shell throe error like (command not find) it mean that cmd is not in the $PATH

vi, vim, nano, these are the terminal editors.(vim filename.txt)

Getting Help: man, man -k, --help. (-k mean search keyword)

Redirection & Pipes: >(> mean overwrite the content), >>(>> mean append the text), | (| mean get output preview cmd)

Process is a running instance of the program and every process have a PID(we can kill the process by their PID)

ps: Show running Processes

ps aux: Show running processes with details

kill : kill process by their PID

kill -9 : forcefully kill the process cmd &: & used for run process in background

ctrl c: stop running process from screen that running right now on screen

When we run the ls -l command you see something like this:-

-rwx-w-rw- 1 username groupname so on....

Breakdown of this:-

chmod - it mean change mode so you can change the permissions like chmod 747. each permission have a number:-

read - 4

write - 2

execute - 1

if we want read(4) and write(2) permission to owner just run this command chmod 600. 00 mean no permission to group and other. and we use something like chmod u+x, u+r. it mean please add execute and read permission for user(owner).

Symbolic link just like shortcut in window and alias in mac.

Commands for linux:- ln -s target linkname

the -s stand for symbolic link OR soft link.

tar mean bundle of the files & directories.

if you want to create a bundle just run this cmd:- tar -czf filename.tar yourstuffs

Options of the cmd:-

-czf - mean create

-tzf - mean show the list inside bundle

-xzf - mean extract the bundle

gzip mean compress the file size of the bundle. it only used for create bundle + compress the size.

.tar.gz

In linux root you see this directories:-

etc, home, var, usr, tmp etc.

This directory have only configuration related data.

This is only for users. how many users with there personal data.

This directory for the logs of the system and logs are inside /var/log

This directory have most installed programs and /usr/bin have linux commands.

This directory have temporary data as it name.

Every linux user should know about this topic. coz it is very important to know. in linux you can't delete,view,run anything without permission and every user have permissions to what to do or not. some users have sudo access it mean they can install, delete anything in system without any permission bcz they have root access sudo stand for super user.

── more in #developer-tools 4 stories · sorted by recency
── more on @linux 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-thought-i-knew-lin…] indexed:0 read:4min 2026-06-21 ·