Command line:

Part 2



Editing Scripts

You can use the vi or vim commands to edit files

Typically there is no difference  between the two.

The vi editor operates based on modes.

The mode you are in dictates which
options you have available to you.

Editing Scripts

When the editor first opens, it is in "normal" mode.

Content can be added using "insert" mode

Editor commands are issued using "command-line" mode

There are several other modes, but
most of the action happens in these three modes.

Hit Esc to exit the current mode
and go back to normal mode

Normal Mode

Use 0 to move the cursor to the beginning of the line

Use $ to move the cursor to the end of the line

Move the cursor on character using h, j, k, or l

Use b to move the cursor to beginning of the current word

Use e to move to the end of the current word

Use w to move to the beginning of the next word

Insert Mode

Use Aa, Ii, O or o to enter insert mode

Command-line Mode

Allows you to enter a command at the bottom of the screen

Triggered by entering a :, ?, /, or !

:q quits the application


Files that contain commands are called "scripts"

When you open a new terminal window,
the ~/.bash_profile script is run.

This prepares the initial state of the environment
before the first prompt is displayed.


It is common for Linux systems to only run ~/.bash_profile once
when the user first logs in.

The ~/.bashrc script is then run with each new shell.

To avoid duplication many times .bashrc is run explicitly within .bash_profile.

Environment Variables

The bash shell supports the ability to set variables and
use their values in commands.

Variables used to configure the behavior
of the shell environment use the convention
of being all upper-case separated by underscores.

These are generally referred to as environment variables.

The PATH environment variable is special in that
the shell uses it value to find most commands. 

Environment Variables

Set the value of a variable
variable="some value"

Get the value of a variable
ls -la $variable

You can use the echo command to
check the value of a variable


The value is a list of directory paths delimited by a single colon.

E.g. PATH=/usr/local/bin:/bin

When a command is entered that isn't built into the shell,
it will start at the left-most path and look for the command.

Only the first instance of the command
Is ever run, so order is important. 

Getting Data From 

Other Sources

The curl command can be used to 
send network requests to other machines.


By default it will output 
the response data from the request

Saving to a file

Use the -O flag to save the request to a file in the current directory.

curl -O

Use the -o flag to specify which file 
to save the response to.

curl -o example.html

Following Redirection

It is common for web requests to result in 
location headers that redirect the client to another URL

Curl does not follow the location headers by default. 

Use the -L flag to follow location headers.

curl -L

Just the Headers

Use the -I flag to just get the head of the response

curl -I

curl -L -I

Copy as Curl in Chrome

The Chrome browser supports exporting
network requests as curl from
within the "Network" tab of the developer tools

Remote Terminal

You can open a shell session on another
machine using the ssh command

ssh my.other.machine

This should prompt you for a username and password.

You can supply a username as part of the host name as well.

ssh username@my.other.machine

Running a command remotely

You can pass a command as the last argument to ssh.
The session will be closed immediately after the command finishes

ssh my.other.machine 'ps eax'


ssh my.other.machine -- ps eax

Port Forwarding

You can use ssh to forward network traffic
from a local port to a port on a remote machine

ssh -L my.other.machine

This opens a shell on my.other.machine
then forwards it's port 8888 to on port 80


While its important to memorize the basics, the flexibility of the command-line is all about composability.

Because of that, the most useful commands can sometimes be so long and convoluted it makes it difficult to remember/type them.

Use the alias command to set shortcuts
to commonly used commands

alias ll="ls -la"

Hit me up with questions.
@meany_face (twitter)

Command Line: Part 2

By Jared Stilwell

Command Line: Part 2

  • 494
Loading comments...

More from Jared Stilwell