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