Table of contents
As I was getting involved with technologies and knowing more about what our machines run and how effectively we can complete our tasks using better technologies which in our case is using a better OS that runs Linux
- Well, how did I know it was better, I wasn't even using it back then, that's where the tech communities help us in guiding our way through the hurdles, contribute to our life and make it better.
- In my case using my PC with optimal performance saves my time, and makes my day productive.
- Then came the help, "Hey buddy, in that case, you should try using Linux and see if it helps you in any way to make your day better also learning how it works have its perks." that is how I got started.
SETTING UP THE ENVIRONMENT TO RUN LINUX
Before I started learning about Linux, I started setting up the environment for my PC to get it Linux-based.
For to use it as a Primary OS, I found Dual Booting much better than the first two methods, considering all the suggestions/advice on Linux, I was in to use Linux at its best and found dual boot is the best way possible.
It just took more time and patience, reading the documentation carefully, following the instructions and I was good to go, It was completely worth it since I wanted the best experience of using Linux.
But it's not all Pros, the dual booting method has its Cons too, and the process has its Risks.
Choosing the distribution for Linux
Here I didn't take much time on selecting a distro a.k.a distribution to run Linux.
Here are some widely used distros for the following categories:
- Yocto isn't embedded Linux distro, what it does is that it provides the necessary tools, templates, and methods to help us to create a custom Linux-based system for embedded system deployments in connected servers, virtual environments, etc. for any type of /regardless of hardware architecture.
These are not the only distros just the widely used ones, there are almost one thousand distros as of now maybe even more, you can know more at Distrowatch.
- I fall into the desktop category so I took the obvious choice i.e Ubuntu, also because I preferred the modern and standard desktop interface.
Do you know the actual extent one can go with Linux, is building their distribution, for a person who is at a master-level of System Administration of Linux and uses a distro like Gentoo is quite the challenge they would look up to. It's possible, we need to put on a lot of work for it and we will.
- As of now that's all for the setup part.
Then enters the switch par from Windows to Linux for dual-booted systems, it was quite simple I must say and that's it for setting up Linux in your PC.
That's Good, but I want to know more about Linux.
What is Linux and Why use it?
Firstly, I've found that what I now use isn't just Linux it's GNU/Linux, yes it is. But why, isn't Linux an OS? Well, It is, as GNU/Linux and it is core which as a kernel is Linux just as it is.
Even our system agrees with it, to know that open your terminal
Ctrl + Alt + tand type the command:
uname -a, you should get the output similar to this
Linux is constantly evolving both at the technical, including kernel features, distributions, and interface level.
Unlike other OS's which are also not an Open-Source Software and take several months for an update, and it's frustrating if it has bugs. We have battled with slowdowns, crashes, malware, and viruses until the next update is released.
GNU/Linux OS consists of:
Some common terminologies to know before we enter:
Kernel: It is considered the brain of the GNU/Linux operating system. It controls the hardware and makes the hardware interacts with the applications know more at Kernel. org
Distribution a.k.a Distro: It's a collection of programs combined with the Linux kernel and package management system to make up a Linux-based operating system. Ex: RHEL, SUSE, Ubuntu, Fedora, etc. They are variants of GNU/Linux OS. Each has a different approach to a Desktop, I just had to pick one which matches my needs.
A Linux OS has GNU Shell utilities, Linux kernel, graphical desktop environment, and more
Boot Loader: A program that boots the operating system, let's get that even more clear when we power on our PC/laptop, a basic standard check is done a.k.a Power On Self Test(POST) like did you ever see a speedometer of a vehicle, technology is being used in it
- When you put the key in and turn on the ignition mode what you see is that it flashes the numbers, the meter raises or the needle rotates fully and gets back to its default speed, what happened in there was a system check, this is an example since embedded systems are used in them and what powers them is Linux
- When we power on the BIOS which is the ROM(read-only memory) chip that consists of all the set instructions that are needed to do the system check before we run the programs
- After that when the computer starts up the first it read was bootloader and it points to the program which is going to run next
- It's like when you are bootstrapping yourself the first thing you do is to tug your lace-up, so just awake enough to get the OS started. It is also the earliest process to happen in the Boot Process
- Command-Line Interface a.k.a CLI: Well, it's one of the first few thoughts that comes into my mind when I hear or say Linux.
- Now an OS kernel is wrapped with a shell, in order to perform tasks by accessing the kernel we need commands to pass through the shell or more like an orb that needs commands to penetrate through to get control of what's inside and show us the effect of it, so it is the shell that interprets the commands and instructs them to the OS, some shell examples are bash which is widely used, bourne, Korn and z shell
- Terminal: Now the terminal is where we access the OS kernel to perform tasks, this is the command-line interface that I was talking about, it is the arena to use our weapons well in technical terms it is where we access the system through a shell using commands in this environment. Let's start using them.
Opening the Terminal
- Press the Windows key and the search pops up, type "terminal"
- OR right-click on the desktop home page and click the open terminal option
- OR use
ctrl + alt + t
Point to remember: Linux commands are case sensitive
A terminal is a text-based environment but since we use this in an OS, we get a GUI a.k.a Graphical User-Interface some of them actually have very few features of GUI are available the terminal we now use.
But a Console is the environment, which in our case a console in our Linux-based system is a pure text-based environment with no scope for GUI, you can access it with
Ctrl + alt + F1if we want to open-up/access multiple consoles we can do it with
Ctrl + Alt + F1-F8like 1-8 is number for the console, depending on which you want to open it.
If you're going to try it, type the
exitcommand to exit from the console, wait for a few seconds, and you'll be back to your system login page.
Let's get back to the terminal
What does this mean?
kiransatyarajis the username name and after the
jksrtwtis the hostname
A Linux-based system can have multiple users for the same host and you can also change the hostname
The terminal emulator which I'm using is Terminator, you can install it using the command:
sudo apt update && sudo apt install terminator
After the semicolon, the
~characters represent the user's home directory, what lies in that position is the file path, after the
$sign we can start writing the commands
cd- change directory,
pwd- present working directory,
/- root directory,
~ - home directory
- As you see in the image the output of
pwdis a path
/home/kiransatyaraj/which means that starting from
/- root directory inside that we have a
home directoryinside that we have user directory of name
ls- list which lists all the directories of the current directory you are in.
echo Hello, World!is the bash way to print hello world into the console here echo is the command name, and "Hello, World!" is the argument
- using just
cdgets you back to the user's home directory and you can change the directory that you want to work with using
cd <filepath>of the directory like
cd -to change back to the previous directory,
cd ..to change back to the parent directory,
- We use flags to get detailed specifications,
ls -a- lists all the files also the hidden files because any file that starts with a dot (.) is hidden
Flags are like options for a given command for the specification we like to see, we use
--double hyphens for the word flags and
-single hyphen for the character flags
We can also group the
-character flags and can provide arguments which in this case
hello/is the argument and we are in the parent/user's home directory
- Lets clear the clutter using the
clearcommand, which clears the page for you, and
Ctrl + lis used to expand the browser until you can use it from the top
- Now how do we get to know the option available for a command, that is possible with the man command, now what is man, let's ask about
which leads to a page about the manual command
you can get additional typing
h when you're on the manual page, to quit from it just typing
q twice will do the job.
While you are reading the documentation you can scroll through the page using arrow keys but if you want to scroll down as one window
Ctrl + f or spacewill help you and for scrolling up one window at a time
Ctrl + band to get to the very beginning of the page type
gand to the very end of the page
G, to search for a specific keyword type
/while you're on the manual page and type the word or a letter and press
enter, the matches in the current will be highlighted
To navigate through the page of the keyword you searched for on the manual page press
nto get to the next match and
N or Shift + nfor the previous match
/the search starts from the beginning of the page, to search from the end of the manual page and you know the drill what to do next
Commands are two types, some are executable files, they have a file path in the system and manual and some are builtin commands they do not have a manual like cd, alias, and more
To know the type of a command, we use
- To get the documentation of such builtin shell commands, we use
- help does not work on the executable file commands like try
help lsit won't work,
helpis only for shell builtin commands but we have a hack, use ` it works for all the commands no matter what the type is.
man -k <command-name>or
apropos <command-name>to find the command, feature, keyword
- Use the
TABkey for auto-completion of a command, folder, or a directory
- Type the first few letters of the command you want to execute and press the
TABkey, if there's a single match the command will be auto-completed, if not press the key twice to see all the matches for the first few letters of that command
Terminal Shortcut keys
- Navigating through all the commands you ran before using the
up and down arrowkeys and press enter to run them
exit or Ctrl + dto exit the bash shell/close the terminal,
Ctrl + uto remove the current line,
Ctrl + ato move the cursor to the start of the line, and
Ctrl + eto the end,
Ctrl + cto stop the executing the command
cat .bash_historystores the history of all the commands as a directory in the user's home directory,
echo $HISTFILESIZEto know how many commands the systems stores in it which is 2000
historyto print out the entire history of all the commands you ran,
echo $HISTSIZEcontrols how many commands from your bash history will be stored in the memory
historyshows the current history of the commands but the user's bash history files are updated when the user is logged out Before logging out
- It's updated after logging in, for printing out the user's command history files use
- Commands are numbered when we print out the history using
history, so in order to run a certain command of number we use
!<number from history's command-line>, take a look at the picture below
- To re-run the previous command use
!!and to run the last nth command from the history use
- Running the last command that starts with "XYZ" use
!XYZand for printing that command
- To search the commands from the history use
Ctrl + rand start typing, if you found the command press
enter, or if you want to exit and clear the line press
Ctrl + G
To delete a command line from the history use
history -d <line_number>and to erase the whole history use
To run commands without leaving a trace is to use space before typing a command and check the history if the command you ran is not in the history then you’re good
If it does not work then use
$HISTCONTROL=ignorebothit works only for the current session to save the changes using
echo “HISTCONTROL=ignoreboth" >> .bashrc
Thank You so much, you made it till the end, and giving your time means a lot to me, I hope you found this blog helpful and we'll meet again with another blog on "Linux File System" starting with root access, why wait till the next blog you can connect with me on Twitter
YOU ARE AWESOME!! HAVE A GREAT DAY BUDDY