Terminal

Here's a list of some random, useful commands and tools to use in the Command Line.

Shut Down right now.

shutdown -h now

See the status of a service.

service nginx status

See the status of all services.

service --status-all

Restart a service.

service nginx restart

Get only the HTTP status code of a site

curl -o /dev/null -w '%{http_code}\n' -s -I URL

What's my IP?

curl -4 icanhazip.com

What's my IP, Another method

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

What is the current git repo remote URL?

git config --get remote.origin.url

Pretty Git Log

git log --date-order --all --graph --format="%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ar%Creset %C(red bold)%d%Creset%s"

Git untrack a file

git update-index --assume-unchanged path/to/file

Linux: Update, Upgrade, Autoremove & AutoClean in one line

sudo sh -c "apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean"

List open files

lsof

List all open ports

sudo lsof -iTCP -sTCP:LISTEN -n -P

List all network ports

netstat -a

Show stats for all network ports

netstat -s

Display directory sizes from current directory

sudo du -h --max-depth=1 -x

Where is php.ini and which is loaded?

php -i | grep "php.ini"

How much free memory is there? -b, -k, -m, -g outputs in KB/MB/GB. -h is human readable, the one i use most often to be honest.

free free -b free -h

Better ls. Highly recommend using exa otherwise.

ls -lhaG

SQL dump (export MySQL database)

mysqldump -u root -p database_to_backup > backup_name.sql

Upload/Import MySQL from file

mysql -u username -p database_name < file.sql

NPM: What's installed globally?

npm list -g --depth 0

What mail records are open?

nslookup -q=mx DOMAIN.com

Query nameserver

nslookup -type=ns DOMAIN.com

Query complete DNS record

nslookup -type=any DOMAIN.com

Spin Up a localhost server via Python

python -m SimpleHTTPServer 9999

Spin Up a localhost server via PHP

php -S localhost:9999

Upload a file from the remote server to local machine

scp your_username@remotehost.com:foobar.txt /some/local/directory

Upload a file to the remote server

scp /file/to/send username@remote:/where/to/put

Scrape a Site quickly with wget

wget -mkEpnp http://DOMAIN.com

Show empty files

print -l **/*(L0)

How long has the machine been running?

uptime

Let's see what processes are running. Recommend htop as replacement to top.

top

Find all files by Type from the current directory.

find -name *.php

Look inside files, recursively, for a string.

grep -r "127.0.0.1" /etc/nginx/sites-available/

What processes are running? ps -A | grep -i ssh filters ps by process name.

ps -A ps -A | grep -i ssh

Kill process. First one we get the process ID then pass that ID to the kill command. Second is simpler, uses pkill.

grep -i nginx kill -9 1285

or

pkill nginx

Kill all by process. Second one kills and restarts a PHP server.

killall php killall php && php -S localhost:8888

You can repeat commands previous typed obviously by hitting the up arrow on the keyboard. Typing history will list out all commands recently typed. If you want to repeat a longer command without retyping it, just follow up with ! before the history number.

history !25

Remove duplicate lines using awk.

awk '!($0 in array) { array[$0]; print }' temp

Go to the 100th line in a file using vim.

vim +100 /etc/nginx/sites-available/default

Go to the 100th line in a file using vim.

vim +/SEARCHTERM filename.html

Copy all jpg images to hard-drive

ls *.jpg | xargs -n1 -i cp {} ~/Desktop

Remove a file, but get prompted to confirm before doing so.

rm -i filename.txt

whatis command in Linux is used to get a one-line manual page descriptions.

whatis nginx

Hope this serves as a good reference; Enjoy!