IT Knowledgebase
< All Topics
Print

Basic Linux Shell Commands

The following is a breakdown of the most commonly used commands and the most commonly used arguments for them.

ls : list files/directories in a directory, comparable to dir in windows/dos.

ls -al : shows all files (including ones that start with a period), directories, and details attributes for each file.

cd : change directory

cd /usr/local/apache : go to /usr/local/apache/ directory

cd ~ : go to your home directory

cd – : go to the last directory you were in

cd .. : go up a directory

cat : print file contents to the screen

cat filename.txt : cat the contents of filename.txt to your screen

tail : like cat, but only reads the end of the file

tail /var/log/messages : see the last 20 (by default) lines of /var/log/messages

tail -f /var/log/messages : watch the file continuously, while it’s being updated

tail -200 /var/log/messages : print the last 200 lines of the file to the screen

more : like cat, but opens the file one screen at a time rather than all at once

more /etc/userdomains : browse through the userdomains file. hit [space] to go to the next page, [q] to quit

pico : friendly, easy to use editor. A clone of it is “nano”

pico /home/burst/public_html/index.html : edit the index page for the user’s website.

vi : another editor, tons of features, harder to use at first than pico

vi /home/burst/public_html/index.html : edit the index page for the user’s website.

grep : looks for patterns in files

grep root /etc/passwd : shows all matches of root in /etc/passwd

grep -v root /etc/passwd : shows all lines that do not match root

touch : create an empty file

touch /home/burst/public_html/404.html : create an empty file called 404.html in the directory /home/burst/public_html/

ln : creates “links” between files and directories

ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf : Now you can edit /etc/httpd.conf rather than the original. changes will affect the original, however you can delete the link and it will not delete the original.

rm : delete (remove) a file

rm filename.txt : deletes filename.txt, will more than likely ask if you really want to delete it.

rm -f filename.txt : deletes filename.txt, will not ask for confirmation before deleting.

rm -rf tmp/ : recursively deletes the directory tmp, and all files in it, including subdirectories. BE VERY CAREFUL WITH THIS COMMAND!!!

last : shows who logged in and when

last -20 : shows only the last 20 logins

last -20 -a : shows last 20 logins, with the hostname in the last field

w : shows who is currently logged in and where they are logged in from.

netstat : shows all current network connections.

netstat -an : shows all connections to the server, the source and destination ips and ports.

netstat -rn : shows routing table for all ips bound to the server.

file : attempts to guess what type of file a file is by looking at it’s content.

file * : prints out a list of all files/directories in a directory

du : shows disk usage.

du -sh : shows a summary, in human-readble form, of total disk space used in the current directory, including subdirectories.

du -sh * : same thing, but for each file and directory. helpful when finding large files taking up space.

wc : word count

wc -l filename.txt : tells how many lines are in filename.txt

cp : copy a file

cp filename filename.backup : copies filename to filename.backup

cp -a /home/burst/new_design/* /home/burst/public_html/ : copies all files, retaining permissions form one directory to another.


Putting Commands Together

Often you will find you need to use different commands on the same line. Here are some examples.

(Note that the | character is called a pipe, it takes data from one program and pipes it to another.)

> means create a new file, overwriting any content already there.

>> means to append data to a file, creating a new one if it does not already exist.

< send input from a file back into a command.

grep User /usr/local/apache/conf/httpd.conf |more — this will dump all lines that match User from the httpd.conf, then print the results to your screen one page at a time.

last -a > /root/lastlogins.tmp — this will print all the current login history to a file called lastlogins.tmp in /root/

tail -10000 /var/log/exim_mainlog |grep domain\.com |more — this will grab the last 10,000 lines from /var/log/exim_mainlog, find all occurrences of domain.com (the period represents ‘anything’, — comment it out with a \ so it will be interpreted literally), then send it to your screen page by page.

netstat -an |grep :80 |wc -l — show how many active connections there are to apache (httpd runs on port 80)

mysqladmin processlist |wc -l — show how many current open connections there are to mysql

sudo — allows users to run programs with the security privileges of another user

Messenger