You often hear the terms “shell” and “terminal” when the topic is about Linux.
A shell, is “the command interpreter used to pass commands to an operating system; so called because it is the part of the operating system that interfaces with the outside world.” Some spelunking resulted in a post by IBM, titled “A history of shells”, which states “shells - or command-line interpreters - have a long history, but this discussion begins with the first UNIX shell. Ken Thompson (of Bell Labs) developed the first shell for UNIX called the V6 shell in 1971.” The post goes on to state “what the Thompson shell lacked was the ability to script.” I won’t quote anymore, so that the reader is inclined to go read the article.
A terminal is much more complicated and has a much longer history. First, it’s important to clarify that when you hear “terminal”, people are actually referring to a terminal emulator. The term terminal comes from a much older technology, the teletype. Though I will not cover TTY or it’s history in this zet, I have added a link to a great article below. All you need to know is that a terminal emulator is a piece of software that emulates a terminal. This is what allows a user to interact with a shell.
If we bring up a terminal via
ctrl + alt + t, we are brought to a shell prompt, which means the shell is ready to accept input. The shell prompt will look different, but will usually display username@machinename. If the last character in the shell prompt is a
# rather than a
$, it means the terminal session has superuser privileges.
Typing in some garbage (
thisisgarbage), results in
thisisgarbage: command not found. This is is known as garbage-in, garbage-out (GIGO). Typing in a known command (like
date), will execute the command (and produce output if any).
We have access to a history of all the commands ran (up to the last 1000 commands by default usually), by either typing
history, pressing the up-arrow/down-arrow keys, or
ctrl + [ and
set -o vi is enabled).
One important thing to remember with terminal emulators is how to copy and paste. The primary way is
ctrl + alt + c and
ctrl + alt + v, but you can also copy things by highlighting with your mouse and pasting by the middle mouse button. Keep in mind that they use different buffers though, so what you copy with
ctrl + alt + c will not be able to be pasted via the middle mouse click.
The first commands introduced are
date command prints the current datetime (
Mon 10 Jan 2022 09:48:59 AM PST).
cal command prints a calendar (the current month by default).
January 2022 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
df command prints disk space usage.
Filesystem 1K-blocks Used Available Use% Mounted on overlay 114337956 93153308 15333512 86% / tmpfs 65536 0 65536 0% /dev tmpfs 4010568 0 4010568 0% /sys/fs/cgroup shm 65536 0 65536 0% /dev/shm /dev/sda2 114337956 93153308 15333512 86% /etc/resolv.conf /dev/sda2 114337956 93153308 15333512 86% /etc/hostname /dev/sda2 114337956 93153308 15333512 86% /etc/hosts tmpfs 4010568 0 4010568 0% /proc/asound tmpfs 4010568 0 4010568 0% /proc/acpi tmpfs 65536 0 65536 0% /proc/kcore tmpfs 65536 0 65536 0% /proc/keys tmpfs 65536 0 65536 0% /proc/timer_list tmpfs 65536 0 65536 0% /proc/sched_debug tmpfs 4010568 0 4010568 0% /proc/scsi tmpfs 4010568 0 4010568 0% /sys/firmware
free command prints memory usage.
total used free shared buff/cache available Mem: 8021140 1351760 3456164 322484 3213216 6071500 Swap: 2097148 900 2096248
It is important to note that I used a docker container, running the
bash:5.1 docker image, to run the above commands.
To end a terminal session, you can either enter
exit, or you can enter
ctrl + d.
The last thing covered in this chapter is virtual terminals or virtual consoles. These are terminal sessions that continue to run in the background, even when there is no terminal emulator running. To access a virtual terminal, enter
ctrl + alt + F1 through
ctrl + alt + F6. You can swap between virtual terminals via
alt + F1 through
alt + F6. Typically to return to the graphical desktop, enter
alt + F7.
#tlcl #shell #terminal #tty #bash