2022-04-23 13:26:53 +01:00
|
|
|
|
---
|
|
|
|
|
tags:
|
|
|
|
|
- shell
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Unix based systems
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
Many operating systems are based on the UNIX software architecture. macOS/OSX
|
|
|
|
|
(Darwin) and GNU/Linux are two very popular examples. Most web servers run a
|
|
|
|
|
version of Linux as their native OS thus a knowledge of command line for UNIX
|
|
|
|
|
systems is invaluable for web developers. Windows systems are not UNIX based so
|
|
|
|
|
everything that is written here is not applicable to the Windows command line
|
|
|
|
|
program Command Prompt although there are obvious conceptual overlaps.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
UNIX was initially developed by AT&T and is still owned by them. GNU (the basis
|
|
|
|
|
for Linux) is a recursive acronym for ’GNU is not UNIX’. Functionally it is the
|
|
|
|
|
same as Unix however, it just doesn’t contain the proprietary code.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
## Key terms
|
|
|
|
|
|
|
|
|
|
### Kernal
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
The kernel is the central part of an operating system. It manages the operations
|
|
|
|
|
of the computer and the hardware; most notably memory and CPU time. There are
|
|
|
|
|
two types of kernels: a **micro-kernel**, which only contains basic
|
|
|
|
|
functionality; and a **monolithic kernel**, which contains many device drivers.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
### Shell
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
A shell is a user interface for access to an operating system’s services. In
|
|
|
|
|
general, operating system shells use either a command-line interface or GUI,
|
|
|
|
|
depending on a computer’s role and particular operation. It is named a shell
|
|
|
|
|
because it is the outermost layer around the operating system kernel
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
### Bash
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
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. First released in
|
|
|
|
|
1989, it has been distributed widely as the default login shell for most Linux
|
|
|
|
|
distributions and Apple’s macOS.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
## What is the command line?
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
Command line is both a general computing concept and a specific utility. In its
|
|
|
|
|
general sense, engaging with a computer via command line means inputting
|
|
|
|
|
abbreviated written commands into a console or terminal window on a computer.
|
|
|
|
|
The computer then runs these commands on the basis of the instructions you have
|
|
|
|
|
given.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
You can get the computer to ‘do things’ (make files, connect to networks etc)
|
|
|
|
|
via command line and you can use it to check the status of systems within your
|
|
|
|
|
computer.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
This mode of engagement contrasts with the engagement facilitated by modern
|
|
|
|
|
graphical user interfaces (GUIs) where the user navigates via a combination of
|
|
|
|
|
keyboard and mouse inputs and interacts with windows whose functionality is
|
|
|
|
|
usually self-explanatory and therefore more user-friendly. Command line predates
|
|
|
|
|
GUIs but it is considered a more efficient and expansive means of interacting
|
|
|
|
|
with the whole of your computer especially if you are a developer or programmer.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
In the more specific sense, the ‘command line’ refers to the location in the
|
|
|
|
|
console window where you input your commands. The command line consists in a
|
|
|
|
|
user name and the current directory you are in followed by a dollar sign and a
|
|
|
|
|
cursor waiting for input.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
## Basic orientation
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
When you are using command line you are always situated somewhere within a file
|
|
|
|
|
system. Typically this will be your own user files. directory structure By
|
|
|
|
|
default you are always in your home directory, this is represented by the tilda
|
|
|
|
|
symbol: `~`. This is why you see the tilda symbol as part of the command line.
|
|
|
|
|
In command line, we do not use the term ‘folders’, instead they are called
|
|
|
|
|
directories. (I will follow this convention from hereon.) You do not have to
|
|
|
|
|
worry too much about remembering the names of specific folders and files you can
|
|
|
|
|
always ask the computer to display them to you by using `ls` argument or `pwd`.
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
## Command line syntax
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
The syntax of the language used to input commands is analogous to the grammar of
|
|
|
|
|
natural languages. We have a verb that is operative on an object/noun and which
|
|
|
|
|
can be modified through adverbs. The syntax of a command sequence is as follows:
|
2022-04-23 13:26:53 +01:00
|
|
|
|
|
|
|
|
|
1. Command (verb): what we want to do
|
|
|
|
|
1. Option (adverb): modifying the command - always starts with a hyphen
|
|
|
|
|
1. Argument (noun/object): what we want our command to operate on
|
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
|
We will see that not all commands require arguments, but this is the general
|
|
|
|
|
structure
|