Skip to content

This repo is designed to provide a comprehensive guide to Linux Shell, from beginner to advanced level. It is a valuable resource for those who want to learn command line or expand their knowledge of it. This repo is under progress and will be regularly updated with new content.

Notifications You must be signed in to change notification settings

Mostafa-Farahat/BeRootFork

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BeRoot

Are you ready to unlock the full potential of the Linux command line? Your journey begins here!

BeRoot is your comprehensive guide to mastering the Linux Shell, designed to take you from a beginner to an advanced user. It's crafted with love for the Open Source community at Ain Shams University and the wider FOSS community.

No matter your skill level, BeRoot has something for you.

Table of Contents

Session 1

FOSS ❱ Closed Source Software
Paid Proprietary Software Freeware Source Available Software
❱ Free and Open Source Software (FOSS)
The FOSS Definition FOSS vs Free Software
❱ How do FOSS projects make money?
❱ Open Source History
❱ Types of open source licenses
Copyleft Licenses Permissive licenses
❱ Importance of Open Source
❱ OSS Examples
Introduction to Linux ❱ Introduction to Operating Systems
❱ GNU/Linux
❱ Linux Distribution Families
❱ What makes Linux great and why to use it?
❱ Installing software on Linux
❱ Get yourself a Linux Machine
❱ Dual Boot VS Live Boot VS Virtual Machine
Linux Desktop ❱ Linux Desktop
❱ Display Server
❱ Display Manager
❱ Desktop Environment
❱ Window Managers

Session 2

CLI & Linux File System ❱ The Shell
❱ Terminal vs Shell vs Prompt
❱ The Command Line Syntax
❱ File Systems
❱ Windows Directory Structure
❱ Linux File System Hierarchy
❱ Linux Virtual Top-Level Directories
❱ Navigating through the File System
❱ The . and .. Links
❱ Relative and Absolute Paths
❱ File Extensions in Linux
❱ Types of Files
❱ Command-line File Management
❱ Creating Directories
❱ Creating Files
❱ Copying Files & Directories
❱ Renaming & Moving Files
❱ Removing Files and Directories
❱ Useful Command-line Editing Shortcuts
❱ TAB Completion
❱ Continuing a long command on another line
❱ Command history
- - - - - - - - - - - - - - - - - - - - - - - - -
❱ Terminal Types
Virtual Console Pseudo Terminal (PTY) Serial Port Terminal
Environment & Startup Files ❱ Environment
❱ What Is Stored In The Environment?
Environment Variables Shell Variables Aliases Functions
❱ How Is The Environment Established?
❱ Shell Types and Difference Between Them
❱ Startup files
❱ How to make Environment configurations permanent?
❱ How to organize Environment configurations?
❱ For Your Knowledge
Explore Different Shells How to customize bash prompt

Session 3

Git ❱ What's Git?
❱ How To Save Changes?
❱ How To Undo Changes?
❱ How To Work With Branches

Session 4

GitHub ❱ Remote Repository
❱ Issues
 ❱ Labels
 ❱ Milestone
❱ Contributors
❱ Fork
❱ Pull Requests
❱ Releases
❱ Wiki
❱ Pages

Session 5

Simple Commands ❱ GETTING HELP
Man Pages Common Sections of the Linux Manual
Navigating Man Pages Searching for a Command What a command does
❱ Basic Command Syntax
❱ Bash Logical Operators
Logical AND Logical OR
Viewing Files ❱ cat Command
❱ less Command
❱ head & tail Commands
❱ file Command
Nano ❱ Opening and Creating Files
❱ Saving and Exiting
❱ Editing Files
❱ Customizing Nano (nanorc)
❱ Set Nano as the Default Text Editor
Creating Links Between Files ❱ Inode
❱ Inode Table
❱ What are Links?
❱ Creating Hard Links
❱ Deleting Links
Finding Files ❱ Find Command
❱ Locate Command
File Compression and Archiving ❱ gzip
❱ bzip2
❱ zip
❱ tar
Redirecting Output ❱ Unix Philosophy
❱ Standard Input, Standard Output & Standard Error
❱ I/O Redirection Examples
❱ Pipeline `|`
❱ Pipeline Examples
❱ Pipelines, Redirection, and the tee Command
❱ Pipelines, and the wc Command

Session 6

Files Permissions & Ownership ❱ Linux File Ownership
❱ Linux File Permissions
❱ Changing Permissions
❱ Changing Ownership and Group
Dealing with Users & Groups ❱ Superuser
❱ System User
❱ Regular User
❱ UID Ranges
❱ Group
❱ id Command
❱ /etc/passwd File
❱ /etc/shadow File
❱ /etc/group File
❱ Gaining Superuser Access
❱ sudo Command
❱ Switching Users su
❱ su vs. su -
❱ Sudo vs. Su
❱ Creating Users/Groups, Removing Users/Groups & Changing Passwords
❱ Why Not Just Use One Account?
❱ Creating Users "useradd"
❱ Setting/Changing Passwords "passwd"
❱ Creating Groups "groupadd"
❱ Add an Existing User Account to a Group "usermod"
❱ Removing Users "userdel"
❱ Removing Groups "groupdel"

Session 7

Shell Scripting ❱ Definitions
Shell Bash Shell Scripts Bash Process
❱ Shebang
❱ Script Execution
❱ Bash Parameters
❱ Bash Parameters
❱ Variables
❱ Scope of Variables
❱ Parameter Expansion
❱ The Difference between ' ' and " "
❱ Positional Parameters
❱ Special Parameters
❱ Arithmetic Expansion
expr Command let Command
❱ Taking Input from Terminal
Command Line Arguments read Command
❱ Shell Variable Types
Local Variables Global or Environment Variables Shell Variables
❱ Comments #
❱ Command Substitution
❱ If Statements
❱ Conditions
Comparing Numerical Variables Comparing String Variables Boolean Conditions File Conditions
❱ Case Statements
❱ Loops
For Loops While Loops Until Loops Break & Continue Statements
❱ Functions
Passing Arguments to a Function The Fork Bomb

Session 8

Boot Process ❱ The Boot Process
❱ BIOS Stage
❱ Boot loader Stage
❱ Kernel Stage
Kernel Initialization The Startup Process systemd

Session 9 & 10

Networking ❱ Introduction to computer networks
❱ Network Tools
ping traceroute ifconfig ip nmap dig wget & curl ssh

Session 11

Processes ❱ Processes
❱ Foreground and Background Processes
❱ Process Relationships
Parent Process Child Process Orphan Process Zombie Process
❱ ps Command
❱ Process States
Running Waiting Stopped Zombie
❱ Process Codes
❱ top Command
❱ htop Command
❱ Signals
❱ kill & killall Commands
❱ Change priority of a process
Package Managers ❱ Package Managers
❱ What is a Package
❱ Contents of Packages
❱ Package Dependencies
❱ Package Repositories
❱ How does the package manager work
❱ Functions of a Package manager
❱ Different kinds of package managers
❱ Architecture of Package managers
❱ Compile Source Code

Session 12

Text Processing ❱ Sort
❱ Cut
❱ Uniq
❱ tr
❱ paste
❱ Regex
❱ Grep
❱ Sed
❱ Awk
File Globbing ❱ Glob Patterns
❱ Basic Patterns
❱ Extended Globbing (extglob)
❱ Globstar
❱ Glob – Filename Pattern Matching vs. Regexp
❱ Exercises

Session 13

VIM ❱ What is Vim
❱ Why to learn VIM ?
❱ Installation
❱ VIM Modes

Session 14

Job Scheduling ❱ At
❱ Cron
❱ Crontab

Contribution

We encourage everyone to contribute to this guide and help make it even more comprehensive and valuable for learners. If you have any corrections, additions, or suggestions, feel free to submit a pull request.

About

This repo is designed to provide a comprehensive guide to Linux Shell, from beginner to advanced level. It is a valuable resource for those who want to learn command line or expand their knowledge of it. This repo is under progress and will be regularly updated with new content.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%