The terminal may seem scary for new Linux users. However, it's one of the
tools that has the biggest potential on your Linux journey. Learn why
The Linux terminal on Ubuntu
On a previous post we discussed the benefits of using the Linux terminal.
Today, let's review how to get started with Bash, the most common
shell in GNU/Linux operating systems.
The history of Bash
But before we get hands-on, let's learn more a little about Bash. Bash is
a Unix shell and command language written by
Brian Fox
for the GNU Project as
a
free software
replacement for the
Bourne shell (which is located in your system under /usr/bin/sh and is still widely used, especially in containers).
First
released in 1989, it has been used as the default login shell for most Linux
distributions including the most popular distributions such as
Ubuntu, Fedora, Arch,
Debian and even on the
Raspberry Pi.
To finish our introduction, the name Bash is an acronym for Bourne Again
Shell, a pun on the name of
the Bourne shell that
it replaces (and extends).
Why learn Bash
Due to its popularity, power and ubiquity, we strongly recommend that you
learn it if you want to be comfortable in Linux and computers in general. Many
skills you'll learn in your bash/OSS-journey will definitely carry over to
Macs, Windows and well into your professional life.
Bash on Windows
Today, Bash can also be found on Windows via the
Windows Subsystem for Linux
(WSL for short). We will review how to get started on WSL real soon. Keep
tuned!
Starting the Terminal
To start the terminal on Ubuntu (or any
GNOME-based distro), simply type terminal
on the Activities tab. KDE and
Xfce users should also have equivalent
terminal apps in their systems.
On Ubuntu, type terminal to open your first terminal
Clicking on the terminal icon should open a new terminal for you:
Your bash terminal on Linux
You can confirm that it's running bash by running the following command:
echo $SHELL
/bin/bash
Entering Commands
Entering commands in your terminal is straightforward, just type them. For
example, here are some basic ones:
pwd - lists the current directory
ls - lists the files in the current directory
cd - change the current folder
cat - prints the contents of a file
cp - copies a file
mv - moves a file
rm - removes a file
mkdir - creates a new directory
Some simple commands on the terminal
The above list may seem a lot for a new user. Don't stress,
with time you'll learn these tools and soon they'll be part of your
muscle memory
Manual Page
Linux also has an interesting utility called man that is used for reading
the manuals (documentation) of the programs, tools and libraries available on your system. To view Bash's manual, type:
man bash
To go the extra mile, we also recommend checking this related manual page:
man bash-builtins
Follow up video
To finish, we would like to point you to an online resource that will teach
you Bash better than we could. Feel free to watch it at your own pace to get
familiar with it. For the record, we have absolutely no affiliation we the video below, we
just want you to learn Bash and Linux 😊
Conclusion
On this article we learned a little more about the Linux terminal and Bash. Bash is a fantastic tool that any Linux user should learn. We hope it helps!
The command-line (aka terminal) is a scary thing for new Linux users. But
understanding it can be a huge step in your Linux journey and a significant step in your career
If you're new to Linux, the command-line interface (also known as CLI or terminal) may look
scary. But it shouldn't. The CLI is a powerful and resourceful tool that every
aspiring Linux user should learn and be comfortable with. On this article,
let's review many reasons why you should learn and use the command line,
commonly (and often incorrectly) referred to as terminal, shell, bash and
CLI.
Ubiquitous
The command-line interface (CLI) is available in every operating system, not
only in Linux. Very frequently, developers and system administrators spend
most of the time in them. If you want to work with Linux and technology in general, better start learning it.
Terminals are available in every operating system including Linux,
Windows and Macs
Powerful
CLI-based apps are much more powerful than their GUI-based equivalents. That
happens because usually GUIs are wrappersaround libraries
developed by developers. Very frequently, these libraries contain way more
functionality than what's available in the graphical interface because, as you
might expect, since software development takes time and costs money to produce, developers only add to GUI apps the most popular features.
For example, these are some of the options that the
GNU find tool provides
us:
Does your GUI-based find tool has all those options?
Quicker
Common and repetitive tasks are also faster in the terminal with the advantage that you
will be able to repeat and even schedule these tasks so they run
automatically, releasing you to do actual work, leaving the repetitive tasks
to computer.
For example, consider this standard development
workflow:
If you were doing the above using a GUI-based git client (for example, Tortoise Git), the workflow would be similar to the below, taking you approximately 20
minutes to complete:
Right-click a folder in Nautilus (or Windows Explorer, or Finder) ->
Select clone -> Paster the Url -> Click OK
Wait for the download to Complete -> Click OK
Back to Nautilus -> Find File -> Open it
Make your changes (by probably using GEdit, KEdit or Visual Studio Code)
-> Save
Back to Nautilus
Right Click -> Commit
Right Click -> Push
Take a deep breath
In the terminal (for example, in Ubuntu),
the workflow would be equivalent to the below and could be completed in less
than 2 minutes:
sudo apt update && sudo apt install git -y # install
git
git clone <url> # clone the GitHub repo locally
vim/nano file -> save # edit the file using a text-based editor
git commit -m <msg> # commits the file locally
git push # push the changes back to our GitHub repo
Scriptable
Terminal/CLI-based tasks can be scripted (automated) and easily repeated
meaning that you will be able to optimize a big part of your workflow. Another benefit is
that these scripts can be easily shared, exactly as business and professional developers do!
So let's continue the above example. Our developer realized she is wasting
too much time in the GUI and would like to speed up her workflow even more.
She learned some bash scripting and wrote the function below:
gcp ()
{
msg="More updates";
if [ -n "$1" ]; then
msg=$1;
fi;
git add ./ && git commit -m "$msg" && git push
}
She's happy because now she can run from the terminal, the below command as
soon as she finishes her changes:
gcp <commit-msg>
What previously took 5 minutes is now is done in 2 seconds (1.8 seconds to write the commit message and 0.2 to push the code upstream). A huge
advantage in her workflow. Imagine how much more productive she would be during the course of her career!
It's important to always think how can you optimize your workflow. These small
optimizations add up to your productivity significantly over time.
Lightweight
Not only the CLI is faster and more lightweight than equivalent GUI-based
applications but it's quicker to run the same commands. For example, consider
a Git client like Tortoise Git. It was supposed to be lightweight (what most GUI apps aren't) but it takes 3s to completely load and uses 10Mb of memory:
Our GUI-based git client TortoiseGit
Meanwhile, its CLI equivalent, git status runs in 0.3s and consumes less than
1Mb. In other words, 20 times more efficient memory-wise and 10 times
faster.
A simple CLI command is 20x more efficient and 10x faster then its GUI
equivalent
Disk Space Efficient
Another advantage of terminal apps over their GUI-equivalents is reduced disk
space. For example, contrast these two popular apps. Can you spot the differences?
Application
Installation Size
Total Size
Memory Usage
Visual Studio Code
80Mb
300Mb
500Mb (on sunny days)
Nano
0.2 Mb
0.8 Mb
3 Mb
400x more efficient
375x more efficient
160x more efficient
Extensible
Another important aspect is that the CLI is extensible. From it, skilled users
could easily either extend its basic functionality using its built-in features like pipes and redirections combining inputs and outputs from different tools.
For example, sysadmins could list the first two users in the system who use
Bash as a shell, ordered alphabetically with:
What's interesting from the above command is how we combined 5 different tools
to get the results we need. Once you master the Linux terminal, you'll too
will be able to utilize these tools effectively to get work done significantly
faster!
This is a more advanced topic. We'll see in future posts more details about
it.
Customizable
As you might expect, the terminal is extremely customizable. Everything from
the prompt to functions (as seen above) and even custom keybindings can be
customized. For example, want to bind Ctrl+E to open the Nano text editor on the
terminal? Simple. Add this to your .bashrc file:
bind '"\C-E":"nano\n"'
Extensive range of Apps
Contrary to what most newcomers thing, the terminal has apps too! You will
find apps for pretty much any use case. For example:
Want to work with Linux? Another important aspect of using the terminal is
that it will make you more ready for the job market. Since Linux servers
usually don't have GUIs, you will end up having to use some of the above tools
on your day-to-day work. So why not start now?
Learn more about Linux
Hopefully at this point you realize that you will learn way
more about your Linux system and computers in general when you use the
terminal. This is the secret sauce that the most productive developers want
you to know!
It's also a huge win for testing new tools, maintaining your system, installing software, fixing issues and tweaking as you wish.
Getting Started
Ready to get started on your terminal/CLI journey? Watch the video below:
Note: We don't have any affiliation with the video above. We just want you
to learn the terminal 😊
Conclusion
Every modern computer has a terminal. Learning it will save you time, allow
you to automate common actions, make you learn more about your system, save
time, grow professionally and be more comfortable with Linux. Well worth the
effort, isn't it?
If you're looking for a lightweight and robust Linux distribution, check Fedora Xfce, a lighter (and simplified) version of Fedora Workstation but not not less
powerful
Fedora Xfce's default desktop
Before switching to Linux permanently, it's recommended to test it first on a
virtual machine so that you can feel the experience before making permanent
changes on your system.
On this tutorial, we will continue revisiting the best
lightweight distributions of 2021 and learn how to install
Fedora Xfce on VirtualBox in Windows 10.
Please note that this process should be pretty similar to accomplish in either
VirtualBox or VMWare Workstation player.
About Fedora Xfce
Fedora Xfce's is a Fedora spin of the Fedora that runs Xfce, a lightweight desktop environment and aims to be fast and lightweight, while remaining visually appealing and easy to use for new and advanced users.
Another advantage of using Fedora Xfce is that it integrates well into the RHEL/Enterprise Linux ecosystem allowing you to test, use and learn the tools enterprise Linux software uses in your own workstation.
Downloading Fedora XFCE
Head to the download page
an grab the ISO by clicking on the download button. For this tutorial we'll
use Fedora-Xfce-Live-x86_64-33-1.2.iso which's the latest version available at the moment. The file should be around 1.5 Gb in size so go grab a coffee while
it downloads.
An ISO is simply an image of the installer containing all the files needed to
boot and install that distribution in your system.
Installing Fedora Xfce
With the ISO downloaded, let's start the process. Open VirtualBox:
VirtualBox's main screen
Click New, enter the name of the VM, set Type = Linux and
Version = Ubuntu (64-bit) and specify its save location:
Choose the memory size (4Gb or more is recommended):
Create a Virtual Hard Disk:
As Hard disk file type, Choose VDI (VirtualBox's default format):
Set it to Dynamically Allocated (slower) if you don't have much
disk space or Fixed Size (faster) if you do:
After clicking Create, you should see a summary of your new VM:
Booting the VM
Okay, so it's now time to boot (load) our VM so we can install it in the
virtual hard drive. On the screen above click on Start to have
your VM initialized. We'll first need to attach our ISO as if it were a
virtual CD-ROM. Click Add and select your downloaded ISO from your
Downloads folder and click Create to set it:
Installing Fedora Xfce
Once your VM boots, choose Start Fedora-Xfce-Live 33 on the boot screen:
Soon you will be greeted by Fedora Xfce's default desktop. Double click Install to Hard drive to launch the installer:
Fedora XFCE's default desktop
Installation
Once the installer loads, you'll see Fedora's familiar Anaconda installer. On the first screen, choose your language:
On the Installation Summary screen, there are a couple of settings to adjust. Those in red are the required that still require our attention:
On the Installation Destination, choose a disk among other settings (encryption, etc). Let's keep it simple for now:
Set your root password:
Create your user:
Once all settings are good, click Begin Installation:
The installation process starts:
Once the install is done (should take 10 minutes or so), finish the installer and reboot your VM from the installation.
First Login
With the installation done, let's login the first time. Enter your password as
specified during the installation on the login screen:
Default Desktop
After login, you should see Fedora Xfce's desktop:
Fedora Xfce's standard desktop
Next Steps
There you are! Feel free to have fun with your new Fedora Xfce VM! We will cover
some more interesting topics in the future but we recommend that you play with
it in the meanwhile.
Conclusion
On this tutorial we learned how to install Fedora Xfce in a VirtualBox virtual machine (VM). Installing Linux on a VM is the first step you
need to explore Linux in its multiple variations. The next step is obviously,
replacing your Windows or Mac. But take your time!
If you're looking for a good, lightweight and solid Linux distribution, check
Manjaro.
Manjaro's beautiful Xfce desktop
Before switching to Linux permanently, it's recommended to test it first on a
virtual machine so that you can feel the experience before making permanent
changes on your system. On this tutorial, we will continue revisiting the best
lightweight distributions of 2021 and learn how to install
Manjaro on VirtualBox in Windows 10.
Please note that this process should be pretty similar to accomplish in either
VirtualBox or VMWare Workstation player.
About Manjaro
Manjaro is a free and open-source Linux distribution based on the venerable and community-based Arch Linux operating system. Manjaro has a focus on user friendliness and accessibility, and the system itself is designed to work fully "straight out of the box" with its variety of pre-installed software. It features a rolling release update model and uses Pacman as its package manager.
There are three official editions: GNOME, KDE and XFCE, being the latter the most lightweight and the one we'll review in this article.
Downloading Manjaro Xfce
Head to
Manjaro download page
an grab the ISO by clicking on
Get Xfce 20.2.1 (or later). For this tutorial we'll
use Manjaro Xfce 20.2.1 which's the a version supported until
April 2023. The file should be around 2.8 Gb in size so go grab a coffee while
it downloads.
An ISO is simply an image of the installer containing all the files needed to
boot and install that distribution in your system.
Installing Manjaro
With the ISO downloaded, let's start the process. Open VirtualBox:
VirtualBox's main screen
Click New, enter the name of the VM, set Type = Linux and
Version = Ubuntu (64-bit) and specify its save location:
Choose the memory size (4Gb or more is recommended):
Create a Virtual Hard Disk:
As Hard disk file type, Choose VDI (VirtualBox's default format):
Set it to Dynamically Allocated (slower) if you don't have much
disk space or Fixed Size (faster) if you do:
After clicking Create, you should see a summary of your new VM:
Booting the VM
Okay, so it's now time to boot (load) our VM so we can install it in the
virtual hard drive. On the screen above click on Start to have
your VM initialized. We'll first need to attach our ISO as if it were a
virtual CD-ROM. Click Add and select your downloaded ISO from your
Downloads folder and click Create to set it:
Installing Manjaro
Once your VM boots, you will be prompted with beautiful boot this menu. Click on Boot with open source drivers to start the installer:
As soon as the boot finishes, you will see this beautiful menu. Click on Launch Installer:
The Installation will start. Choose your language:
Next choose your location:
Next, choose your keyboard:
Select Bios, boot loader, encryption and partitioning:
Create users and set root password:
Choose an office suite (or none):
Review and if all looks good, click Install to proceed with the installation:
The installation starts:
Once it completes, it will ask to restart your system:
First Login
With the installation done, let's login the first time. Enter your password as
specified during the installation on the login screen:
Default Desktop
After login, you should see Manjaro's beautiful Xfce desktop:
Next Steps
There you are! Feel free to have fun with your new Ubuntu VM! We will cover
some more interesting topics in the future but we recommend that you play with
it in the meanwhile.
Conclusion
On this tutorial we learned how to install Manjaro in a VirtualBox virtual machine (VM). Installing Linux on a VM is the first step you
need to explore Linux in its multiple variations. The next step is obviously,
replacing your Windows or Mac. But take your time!