Linux Basics
Linux is a free, open-source operating system used on servers, desktops, and embedded systems. It supports both command-line (CLI) and graphical (GUI) interfaces.
Key Concepts
- Case Sensitivity: Files and directories are case-sensitive.
- Everything is a File: Devices, processes, and sockets are represented as files.
- Multi-user Support: Multiple users can operate simultaneously.
- Multitasking: Multiple processes can run at the same time.
- Permissions: Access to files and directories is controlled by permissions.
- Processes: Each running program is a process with a unique PID.
- Shell: The command-line interface (e.g., Bash) interprets user commands.
File System Structure
| Directory | Purpose |
|---|---|
/ |
Root directory |
/home |
User home directories |
/etc |
System configuration files |
/var |
Variable files (logs, spool) |
/usr |
User programs and data |
/bin |
Essential user binaries |
/sbin |
System binaries |
/tmp |
Temporary files |
/dev |
Device files |
/proc |
Process and kernel information |
/lib |
Essential shared libraries |
/opt |
Optional application software packages |
/mnt |
Mount point for temporary filesystems |
/media |
Removable media (USB, CD-ROM) |
Common Linux Commands
| Command | Description |
|---|---|
pwd |
Print working directory |
ls |
List files and directories |
ls -l |
Long listing format |
ls -a |
Show hidden files |
cd <dir> |
Change directory |
cd ~ |
Go to home directory |
cd .. |
Go up one directory |
cp <src> <dst> |
Copy files or directories |
cp -r <src> <dst> |
Copy directories recursively |
mv <src> <dst> |
Move or rename files/directories |
rm <file> |
Remove files |
rm -r <dir> |
Remove directories recursively |
mkdir <dir> |
Create a new directory |
rmdir <dir> |
Remove an empty directory |
cat <file> |
Display file contents |
less <file> |
View file contents page by page |
more <file> |
View file contents page by page |
head <file> |
Show first 10 lines of a file |
tail <file> |
Show last 10 lines of a file |
tail -f <file> |
Follow appended data in real time |
touch <file> |
Create an empty file or update timestamp |
echo <text> |
Print text to terminal |
man <command> |
Show manual for a command |
info <command> |
Show detailed info about a command |
chmod <mode> <file> |
Change file permissions |
chown <user>:<group> <file> |
Change file owner/group |
ps |
Show running processes |
ps aux |
Detailed process list |
kill <pid> |
Kill a process by PID |
killall <name> |
Kill processes by name |
top |
Display running processes |
htop |
Interactive process viewer |
df -h |
Show disk space usage |
du -sh <dir> |
Show directory size |
free -h |
Show memory usage |
ifconfig / ip a
|
Show network interfaces |
ping <host> |
Test network connectivity |
wget <url> |
Download files from the web |
curl <url> |
Transfer data from/to a server |
ssh <user>@<host> |
Secure shell remote login |
scp <src> <dst> |
Secure copy files over SSH |
tar -czvf <file.tar.gz> <dir> |
Create compressed archive |
tar -xzvf <file.tar.gz> |
Extract compressed archive |
zip <file.zip> <files> |
Create zip archive |
unzip <file.zip> |
Extract zip archive |
find <dir> -name <pattern> |
Search for files |
grep <pattern> <file> |
Search text in files |
history |
Show command history |
alias ll='ls -l' |
Create command alias |
sudo <command> |
Run command as superuser |
passwd |
Change user password |
date |
Show current date and time |
cal |
Display a calendar |
whoami |
Show current user |
uname -a |
Show system information |
reboot |
Reboot the system |
shutdown now |
Shutdown the system immediately |
File Permissions
- r: read
- w: write
- x: execute
Example: -rwxr-xr--
- Owner: rwx (read, write, execute)
- Group: r-x (read, execute)
- Others: r-- (read)
Change permissions:
chmod u+x file # Add execute for user
chmod g-w file # Remove write for group
chmod o+r file # Add read for others
chmod 755 file # rwxr-xr-x
Change ownership:
chown user file
chown user:group file
Process Management
-
ps,top,htop: View processes -
kill <pid>: Terminate process -
jobs: List background jobs -
bg,fg: Move jobs to background/foreground -
&: Run command in background (command &)
Networking
-
ifconfig/ip a: Show interfaces -
ping <host>: Test connectivity -
netstat -tuln: Show listening ports -
ss -tuln: Show socket statistics -
scp,ssh: Secure file transfer and remote login
Package Management
-
Debian/Ubuntu:
apt,dpkgsudo apt updatesudo apt upgradesudo apt install <package>sudo apt remove <package>
-
RedHat/CentOS:
yum,dnf,rpmsudo yum install <package>sudo dnf install <package>sudo rpm -i <package.rpm>
Useful Tips
- Use
tabfor auto-completion. - Use
historyto see previous commands. - Use
sudoto run commands as superuser. - Use
ctrl + cto stop a running command. - Use
ctrl + lto clear the terminal. - Use
!!to repeat the last command. - Use
!nto repeat command number n from history. - Use
clearto clear the terminal screen. - Use
exitto close the terminal session.
Editing Files
-
nano <file>: Simple text editor -
vim <file>: Advanced text editor -
emacs <file>: Powerful text editor
Redirection and Pipes
-
>: Redirect output to file (ls > out.txt) -
>>: Append output to file (echo hi >> out.txt) -
<: Use file as input (sort < file.txt) -
|: Pipe output to another command (ls | grep txt)
Environment Variables
- View:
echo $HOME - Set:
export VAR=value - List:
env
Getting Help
-
man <command>: Manual page for a command -
<command> --help: Most commands support this flag -
info <command>: More detailed help
System Monitoring
-
top,htop: Monitor processes -
free -h: Memory usage -
df -h: Disk usage -
du -sh <dir>: Directory size -
uptime: System uptime
Users and Groups
-
who: List logged-in users -
id: Show user and group IDs -
adduser <user>: Add new user -
deluser <user>: Delete user -
usermod -aG <group> <user>: Add user to group -
groups <user>: Show user groups
Scheduling Tasks
-
crontab -e: Edit user cron jobs -
at <time>: Schedule one-time task
Disk Management
-
lsblk: List block devices -
fdisk -l: List disk partitions -
mount <device> <dir>: Mount device -
umount <dir>: Unmount device
Archiving and Compression
-
tar -czvf archive.tar.gz dir/: Create archive -
tar -xzvf archive.tar.gz: Extract archive -
gzip file: Compress file -
gunzip file.gz: Decompress file
Working with Files from the Terminal
Write to a file:
echo "text" > file.txt— Overwrites file with text
echo "text" >> file.txt— Appends text to fileSave output of a command to a file:
ls > files.txt— Saves output oflstofiles.txt-
Edit and save files interactively:
-
nano file.txt— Edit and save withCtrl+O, then exit withCtrl+X -
vim file.txt— Enter insert mode withi, save with:w, quit with:q -
emacs file.txt— Save withCtrl+X Ctrl+S, exit withCtrl+X Ctrl+C
-
-
Close a file in an editor:
- In
nano:Ctrl+X - In
vim::q(quit),:wq(write and quit) - In
emacs:Ctrl+X Ctrl+C
- In
Saving and closing files is editor-specific; always check the help (
Ctrl+Gin nano,:helpin vim,C-hin emacs) for more shortcuts.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.