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.
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
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
Use A, a, I, i, O or o to enter insert 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.
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.
Set the value of a variable
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.
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
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 http://www.example.com
Use the -o flag to specify which file
to save the response to.
curl -o example.html http://www.example.com/
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 http://bitly.com/VDcn
Just the Headers
Use the -I flag to just get the head of the response
curl -I http://www.google.com
curl -L -I http://m.google.com
Copy as Curl in Chrome
The Chrome browser supports exporting
network requests as curl from
within the "Network" tab of the developer tools
You can open a shell session on another
machine using the ssh command
This should prompt you for a username and password.
You can supply a username as part of the host name as well.
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
You can use ssh to forward network traffic
from a local port to a port on a remote machine
ssh -L 8888:google.com:80 my.other.machine
This opens a shell on my.other.machine
then forwards it's port 8888 to google.com 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.
Command Line: Part 2
By Jared Stilwell