KEMBAR78
Linux Bash Shell Cheat Sheet for Beginners | PDF
freeworld.posterous.com




               Linux Bash Shell
                  Cheat Sheet

                          (works with about every distribution, except for apt-get which is Ubuntu/Debian exclusive)



Legend:

Everything in “<>” is to be replaced, ex: <fileName> --> iLovePeanuts.txt
Don't include the '=' in your commands
'..' means that more than one file can be affected with only one command ex: rm
file.txt file2.txt movie.mov .. ..
Linux Bash Shell Cheat Sheet
                                                                Basic Commands

Basic Terminal Shortcuts                                                                Basic file manipulation
CTRL L = Clear the terminal                                                             cat <fileName> = show content of file
CTRL D = Logout                                                                                      (less, more)
SHIFT Page Up/Down = Go up/down the terminal                                            head = from the top
CTRL A = Cursor to start of line                                                              -n <#oflines> <fileName>
CTRL E = Cursor the end of line
CTRL U = Delete left of the cursor                                                      tail = from the bottom
CTRL K = Delete right of the cursor                                                           -n <#oflines> <fileName>
CTRL W = Delete word on the left
CTRL Y = Paste (after CTRL U,K or W)                                                    mkdir = create new folder
TAB = auto completion of file or command                                                mkdir myStuff ..
CTRL R = reverse search history                                                         mkdir myStuff/pictures/ ..
!! = repeat last command
CTRL Z = stops the current command (resume with fg in foreground or bg in background)   cp image.jpg newimage.jpg = copy and rename a file
Basic Terminal Navigation                                                               cp   image.jpg <folderName>/ = copy to folder
                                                                                        cp   image.jpg folder/sameImageNewName.jpg
ls   -a = list all files and folders                                                    cp   -R stuff otherStuff = copy and rename a folder
ls   <folderName> = list files in folder                                                cp   *.txt stuff/ = copy all of *<file type> to folder
ls   -lh = Detailed list, Human readable
ls   -l *.jpg = list jpeg files only                                                    mv   file.txt Documents/ = move file to a folder
ls   -lh <fileName> = Result for file only                                              mv   <folderName> <folderName2> = move folder in folder
                                                                                        mv   filename.txt filename2.txt = rename file
cd <folderName> = change directory                                                      mv   <fileName> stuff/newfileName
      if folder name has spaces use “ “                                                 mv   <folderName>/ .. = move folder up in hierarchy
cd / = go to root
cd .. = go up one folder, tip: ../../../                                                rm   <fileName> .. = delete file (s)
                                                                                        rm   -i <fileName> .. = ask for confirmation each file
du -h: Disk usage of folders, human readable                                            rm   -f <fileName> = force deletion of a file
du -ah: “     “   “ files & folders, Human readable                                     rm   -r <foldername>/ = delete folder
du -sh: only show disc usage of folders
                                                                                        touch <fileName> = create or update a file
pwd = print working directory
                                                                                        ln file1 file2 = physical link
man <command> = shows manual (RTFM)                                                     ln -s file1 file2 = symbolic link
Linux Bash Shell Cheat Sheet
                                                       Basic Commands

Researching Files                                                       Extract, sort and filter data
The slow method (sometimes very slow):                                  grep <someText> <fileName> = search for text in file
                                                                              -i = Doesn't consider uppercase words
locate <text> = search the content of all the files                           -I = exclude binary files
locate <fileName> = search for a file                                   grep -r <text> <folderName>/ = search for file names
sudo updatedb = update database of files                                      with occurrence of the text

find   = the   best file search tool (fast)                             With regular expressions:
find   -name   “<fileName>”
find   -name   “text” = search for files who start with the word text   grep   -E ^<text> <fileName> = search start of lines
find   -name   “*text” = “      “     “    “  end   “    “   “    “     with   the word text
                                                                        grep   -E <0-4> <fileName> =shows lines containing numbers 0-4
Advanced Search:                                                        grep   -E <a-zA-Z> <fileName> = retrieve all lines
                                                                        with   alphabetical letters
Search from file Size (in ~)
      find ~ -size +10M = search files bigger than.. (M,K,G)            sort   = sort the content of files
                                                                        sort   <fileName> = sort alphabetically
Search from last access                                                 sort   -o <file> <outputFile> = write result to a file
      find -name “<filetype>” -atime -5                                 sort   -r <fileName> = sort in reverse
             ('-' = less than, '+' = more than and nothing = exactly)   sort   -R <fileName> = sort randomly
                                                                        sort   -n <fileName> = sort numbers
Search only files or directory’s
      find -type d --> ex: find /var/log -name "syslog" -type d         wc = word count
      find -type f = files                                              wc <fileName> = nbr of line, nbr of words, byte size
                                                                              -l (lines), -w (words), -c (byte size), -m
More info: man find, man locate                                               (number of characters)

                                                                        cut = cut a part of a file
                                                                        -c --> ex: cut -c 2-5 names.txt
                                                                              (cut the characters 2 to 5 of each line)
                                                                        -d (delimiter)         (-d & -f good for .csv files)
                                                                        -f (# of field to cut)

                                                                        more info: man cut, man sort, man grep
Linux Bash Shell Cheat Sheet
                                                   Basic Commands

Time settings                                                    (continued)
date = view & modify time (on your computer)                     crontab = execute a command regularly
                                                                       -e = modify the crontab
View:                                                                  -l = view current crontab
      date “+%H” --> If it's 9 am, then it will show 09                -r = delete you crontab
      date “+%H:%M:%Ss” = (hours, minutes, seconds)              In crontab the syntax is
      %Y = years                                                 <Minutes> <Hours> <Day of month> <Day of week (0-6,
Modify:                                                          0 = Sunday)> <COMMAND>
               MMDDhhmmYYYY
      Month | Day | Hours | Minutes | Year                       ex, create the file movies.txt every day at 15:47:
                                                                 47 15 * * * touch /home/bob/movies.txt
sudo date 031423421997 = March 14 th 1997, 23:42                 * * * * * --> every minute
                                                                 at 5:30 in the morning, from the 1st to 15th each month:
Execute programs at another time                                 30 5 1-15 * *
                                                                 at midnight on Mondays, Wednesdays and Thursdays:
use 'at' to execute programs in the future                       0 0 * * 1,3,4
                                                                 every two hours:
Step 1, write in the terminal: at <timeOfExecution> ENTER        0 */2 * * *
ex --> at 16:45 or at 13:43 7/23/11 (to be more precise)         every 10 minutes Monday to Friday:
or after a certain delay:                                        */10 * * * 1-5
      at now +5 minutes (hours, days, weeks, months, years)
Step 2: <ENTER COMMAND> ENTER                                    Execute programs in the background
      repeat step 2 as many times you need
Step 3: CTRL D to close input                                    Add a '&' at the end of a command
                                                                       ex --> cp bigMovieFile.mp4 &
atq = show a list of jobs waiting to be executed
                                                                 nohup: ignores the HUP signal when closing the console
atrm = delete a job n°<x>                                        (process will still run if the terminal is closed)
ex (delete job #42) --> atrm 42                                        ex --> nohup cp bigMovieFile.mp4

sleep = pause between commands                                   jobs = know what is running in the background
      with ';' you can chain commands, ex: touch file; rm file
you can make a pause between commands (minutes, hours, days)     fg = put a background process to foreground
ex --> touch file; sleep 10; rm file <-- 10 seconds                    ex: fg (process 1), f%2 (process 2) f%3, ...
Linux Bash Shell Cheat Sheet
                                                    Basic Commands

Process Management                                               Create and modify user accounts
w = who is logged on and what they are doing                     sudo adduser bob = root creates new user
                                                                 sudo passwd <AccountName> = change a user's password
tload = graphic representation of system load average            sudo deluser <AccountName> = delete an account
      (quit with CTRL C)
                                                                 addgroup friends = create a new user group
ps = Static process list                                         delgroup friends = delete a user group
      -ef --> ex: ps -ef | less
      -ejH --> show process hierarchy                            usermod -g friends <Account> = add user to a group
      -u --> process's from current user                         usermod -g bob boby = change account name
                                                                 usermod -aG friends bob = add groups to a user with-
top = Dynamic process list                                       out loosing the ones he's already in
While in top:
         •   q to close top                                      File Permissions
         •   h to show the help
         •   k to kill a process                                 chown = change the owner of a file
                                                                       ex --> chown bob hello.txt
CTRL C to top a current terminal process                         chown user:bob report.txt = changes the user owning
                                                                 report.txt to 'user' and the group owning it to 'bob'
kill = kill a process                                            -R = recursively affect all the sub folders
      You need the PID # of the process                                ex --> chown -R bob:bob /home/Daniel
             ps -u <AccountName> | grep <Application>
      Then                                                       chmod =   modify user access/permission – simple way
             kill <PID> .. .. ..                                       u   = user
kill -9 <PID> = violent kill                                           g   = group
                                                                       o   = other
killall = kill multiple process's
      ex --> killall locate                                            d = directory (if element is a directory)
                                                                       l = link (if element is a file link)
extras:                                                                r = read (read permissions)
      sudo halt <-- to close computer                                  w = write (write permissions)
      sudo reboot <-- to reboot                                        x = eXecute (only useful for scripts and
                                                                       programs)
Linux Bash Shell Cheat Sheet
                                                        Basic Commands

File Permissions (continued)                                         Flow Redirection (continued)
'+' means add a right                                                terminal output:
'-' means delete a right                                             Alex
'=' means affect a right                                             Cinema
                                                                     Code
ex --> chmod g+w someFile.txt                                        Game
      (add to current group the right to modify someFile.txt)        Ubuntu

more info: man chmod                                                        Another example --> wc -m << END

Flow redirection                                                     Chain commands
Redirect results of commands:                                        '|' at the end of a command to enter another one
                                                                           ex --> du | sort -nr | less
'>' at the end of a command to redirect the result to a file
      ex --> ps -ejH > process.txt                                   Archive and compress data
'>>' to redirect the result to the end of a file
                                                                     Archive and compress data the long way:
Redirect errors:
                                                                     Step 1, put all the files you want to compress in
'2>' at the end of the command to redirect the result to a file      the same folder: ex --> mv *.txt folder/
      ex --> cut -d , -f 1 file.csv > file 2> errors.log
'2>&1' to redirect the errors the same way as the standard output    Step 2, Create the tar file:
                                                                     tar -cvf my_archive.tar folder/
Read progressively from the keyboard                                       -c : creates a .tar archive
                                                                           -v : tells you what is happening (verbose)
<Command> << <wordToTerminateInput>                                        -f : assembles the archive into one file
      ex --> sort << END <-- This can be anything you want
             >   Hello                                                       Step 3.1, create gzip file (most current):
             >   Alex                                                gzip my_archive.tar
             >   Cinema                                                      to decompress: gunzip my_archive.tar.gz
             >   Game
             >   Code                                                Step 3.2, or create a bzip2 file (more powerful but slow):
             >   Ubuntu                                              bzip2 my_archive.tar
             >   END                                                         to decompress: bunzip2 my_archive.tar.bz2
Linux Bash Shell Cheat Sheet
                                                      Basic Commands

Archive and compress data (continued)                                 Installing software
step 4, to decompress the .tar file:                                  When software is available in the repositories:
       tar -xvf archive.tar archive.tar                               sudo apt-get install <nameOfSoftware>
                                                                            ex--> sudo apt-get install aptitude
Archive and compress data the fast way:
                                                                      If you download it from the Internets in .gz format
gzip: tar -zcvf my_archive.tar.gz folder/                             (or bz2) - “Compiling from source”
      decompress: tar -zcvf my_archive.tar.gz Documents/              Step 1, create a folder to place the file:
                                                                            mkdir /home/username/src <-- then cd to it
bzip2: tar -jcvf my_archive.tar.gz folder/
      decompress: tar -jxvf archive.tar.bz2 Documents/                Step 2, with 'ls' verify that the file is there
                                                                      (if not, mv ../file.tar.gz /home/username/src/)
Show the content of .tar, .gz or .bz2     without decompressing it:
                                                                      Step 3, decompress the file (if .zip: unzip <file>)
gzip:                                                                 <--
         gzip -ztf archive.tar.gz                                     Step 4, use 'ls', you should see a new directory
bzip2:                                                                Step 5, cd to the new directory
         bzip2 -jtf archive.tar.bz2                                   Step 6.1, use ls to verify you have an INSTALL file,
tar:                                                                  then: more INSTALL
         tar -tf archive.tar                                          If you don't have an INSTALL file:
                                                                      Step 6.2, execute ./configure <-- creates a makefile
tar extra:                                                            Step 6.2.1, run make <-- builds application binaries
      tar -rvf archive.tar file.txt = add a file to the .tar          Step 6.2.2 : switch to root --> su
                                                                      Step 6.2.3 : make install <-- installs the software
You can also directly compress a single file and view the file        Step 7, read the readme file
without decompressing:

Step 1, use gzip or bzip2 to compress the file:
      gzip numbers.txt

Step 2, view the file without decompressing it:
      zcat = view the entire file in the console (same as cat)
      zmore = view one screen at a time the content of the file (same as more)
      zless = view one line of the file at a time (same as less)

Linux Bash Shell Cheat Sheet for Beginners

  • 1.
    freeworld.posterous.com Linux Bash Shell Cheat Sheet (works with about every distribution, except for apt-get which is Ubuntu/Debian exclusive) Legend: Everything in “<>” is to be replaced, ex: <fileName> --> iLovePeanuts.txt Don't include the '=' in your commands '..' means that more than one file can be affected with only one command ex: rm file.txt file2.txt movie.mov .. ..
  • 2.
    Linux Bash ShellCheat Sheet Basic Commands Basic Terminal Shortcuts Basic file manipulation CTRL L = Clear the terminal cat <fileName> = show content of file CTRL D = Logout (less, more) SHIFT Page Up/Down = Go up/down the terminal head = from the top CTRL A = Cursor to start of line -n <#oflines> <fileName> CTRL E = Cursor the end of line CTRL U = Delete left of the cursor tail = from the bottom CTRL K = Delete right of the cursor -n <#oflines> <fileName> CTRL W = Delete word on the left CTRL Y = Paste (after CTRL U,K or W) mkdir = create new folder TAB = auto completion of file or command mkdir myStuff .. CTRL R = reverse search history mkdir myStuff/pictures/ .. !! = repeat last command CTRL Z = stops the current command (resume with fg in foreground or bg in background) cp image.jpg newimage.jpg = copy and rename a file Basic Terminal Navigation cp image.jpg <folderName>/ = copy to folder cp image.jpg folder/sameImageNewName.jpg ls -a = list all files and folders cp -R stuff otherStuff = copy and rename a folder ls <folderName> = list files in folder cp *.txt stuff/ = copy all of *<file type> to folder ls -lh = Detailed list, Human readable ls -l *.jpg = list jpeg files only mv file.txt Documents/ = move file to a folder ls -lh <fileName> = Result for file only mv <folderName> <folderName2> = move folder in folder mv filename.txt filename2.txt = rename file cd <folderName> = change directory mv <fileName> stuff/newfileName if folder name has spaces use “ “ mv <folderName>/ .. = move folder up in hierarchy cd / = go to root cd .. = go up one folder, tip: ../../../ rm <fileName> .. = delete file (s) rm -i <fileName> .. = ask for confirmation each file du -h: Disk usage of folders, human readable rm -f <fileName> = force deletion of a file du -ah: “ “ “ files & folders, Human readable rm -r <foldername>/ = delete folder du -sh: only show disc usage of folders touch <fileName> = create or update a file pwd = print working directory ln file1 file2 = physical link man <command> = shows manual (RTFM) ln -s file1 file2 = symbolic link
  • 3.
    Linux Bash ShellCheat Sheet Basic Commands Researching Files Extract, sort and filter data The slow method (sometimes very slow): grep <someText> <fileName> = search for text in file -i = Doesn't consider uppercase words locate <text> = search the content of all the files -I = exclude binary files locate <fileName> = search for a file grep -r <text> <folderName>/ = search for file names sudo updatedb = update database of files with occurrence of the text find = the best file search tool (fast) With regular expressions: find -name “<fileName>” find -name “text” = search for files who start with the word text grep -E ^<text> <fileName> = search start of lines find -name “*text” = “ “ “ “ end “ “ “ “ with the word text grep -E <0-4> <fileName> =shows lines containing numbers 0-4 Advanced Search: grep -E <a-zA-Z> <fileName> = retrieve all lines with alphabetical letters Search from file Size (in ~) find ~ -size +10M = search files bigger than.. (M,K,G) sort = sort the content of files sort <fileName> = sort alphabetically Search from last access sort -o <file> <outputFile> = write result to a file find -name “<filetype>” -atime -5 sort -r <fileName> = sort in reverse ('-' = less than, '+' = more than and nothing = exactly) sort -R <fileName> = sort randomly sort -n <fileName> = sort numbers Search only files or directory’s find -type d --> ex: find /var/log -name "syslog" -type d wc = word count find -type f = files wc <fileName> = nbr of line, nbr of words, byte size -l (lines), -w (words), -c (byte size), -m More info: man find, man locate (number of characters) cut = cut a part of a file -c --> ex: cut -c 2-5 names.txt (cut the characters 2 to 5 of each line) -d (delimiter) (-d & -f good for .csv files) -f (# of field to cut) more info: man cut, man sort, man grep
  • 4.
    Linux Bash ShellCheat Sheet Basic Commands Time settings (continued) date = view & modify time (on your computer) crontab = execute a command regularly -e = modify the crontab View: -l = view current crontab date “+%H” --> If it's 9 am, then it will show 09 -r = delete you crontab date “+%H:%M:%Ss” = (hours, minutes, seconds) In crontab the syntax is %Y = years <Minutes> <Hours> <Day of month> <Day of week (0-6, Modify: 0 = Sunday)> <COMMAND> MMDDhhmmYYYY Month | Day | Hours | Minutes | Year ex, create the file movies.txt every day at 15:47: 47 15 * * * touch /home/bob/movies.txt sudo date 031423421997 = March 14 th 1997, 23:42 * * * * * --> every minute at 5:30 in the morning, from the 1st to 15th each month: Execute programs at another time 30 5 1-15 * * at midnight on Mondays, Wednesdays and Thursdays: use 'at' to execute programs in the future 0 0 * * 1,3,4 every two hours: Step 1, write in the terminal: at <timeOfExecution> ENTER 0 */2 * * * ex --> at 16:45 or at 13:43 7/23/11 (to be more precise) every 10 minutes Monday to Friday: or after a certain delay: */10 * * * 1-5 at now +5 minutes (hours, days, weeks, months, years) Step 2: <ENTER COMMAND> ENTER Execute programs in the background repeat step 2 as many times you need Step 3: CTRL D to close input Add a '&' at the end of a command ex --> cp bigMovieFile.mp4 & atq = show a list of jobs waiting to be executed nohup: ignores the HUP signal when closing the console atrm = delete a job n°<x> (process will still run if the terminal is closed) ex (delete job #42) --> atrm 42 ex --> nohup cp bigMovieFile.mp4 sleep = pause between commands jobs = know what is running in the background with ';' you can chain commands, ex: touch file; rm file you can make a pause between commands (minutes, hours, days) fg = put a background process to foreground ex --> touch file; sleep 10; rm file <-- 10 seconds ex: fg (process 1), f%2 (process 2) f%3, ...
  • 5.
    Linux Bash ShellCheat Sheet Basic Commands Process Management Create and modify user accounts w = who is logged on and what they are doing sudo adduser bob = root creates new user sudo passwd <AccountName> = change a user's password tload = graphic representation of system load average sudo deluser <AccountName> = delete an account (quit with CTRL C) addgroup friends = create a new user group ps = Static process list delgroup friends = delete a user group -ef --> ex: ps -ef | less -ejH --> show process hierarchy usermod -g friends <Account> = add user to a group -u --> process's from current user usermod -g bob boby = change account name usermod -aG friends bob = add groups to a user with- top = Dynamic process list out loosing the ones he's already in While in top: • q to close top File Permissions • h to show the help • k to kill a process chown = change the owner of a file ex --> chown bob hello.txt CTRL C to top a current terminal process chown user:bob report.txt = changes the user owning report.txt to 'user' and the group owning it to 'bob' kill = kill a process -R = recursively affect all the sub folders You need the PID # of the process ex --> chown -R bob:bob /home/Daniel ps -u <AccountName> | grep <Application> Then chmod = modify user access/permission – simple way kill <PID> .. .. .. u = user kill -9 <PID> = violent kill g = group o = other killall = kill multiple process's ex --> killall locate d = directory (if element is a directory) l = link (if element is a file link) extras: r = read (read permissions) sudo halt <-- to close computer w = write (write permissions) sudo reboot <-- to reboot x = eXecute (only useful for scripts and programs)
  • 6.
    Linux Bash ShellCheat Sheet Basic Commands File Permissions (continued) Flow Redirection (continued) '+' means add a right terminal output: '-' means delete a right Alex '=' means affect a right Cinema Code ex --> chmod g+w someFile.txt Game (add to current group the right to modify someFile.txt) Ubuntu more info: man chmod Another example --> wc -m << END Flow redirection Chain commands Redirect results of commands: '|' at the end of a command to enter another one ex --> du | sort -nr | less '>' at the end of a command to redirect the result to a file ex --> ps -ejH > process.txt Archive and compress data '>>' to redirect the result to the end of a file Archive and compress data the long way: Redirect errors: Step 1, put all the files you want to compress in '2>' at the end of the command to redirect the result to a file the same folder: ex --> mv *.txt folder/ ex --> cut -d , -f 1 file.csv > file 2> errors.log '2>&1' to redirect the errors the same way as the standard output Step 2, Create the tar file: tar -cvf my_archive.tar folder/ Read progressively from the keyboard -c : creates a .tar archive -v : tells you what is happening (verbose) <Command> << <wordToTerminateInput> -f : assembles the archive into one file ex --> sort << END <-- This can be anything you want > Hello Step 3.1, create gzip file (most current): > Alex gzip my_archive.tar > Cinema to decompress: gunzip my_archive.tar.gz > Game > Code Step 3.2, or create a bzip2 file (more powerful but slow): > Ubuntu bzip2 my_archive.tar > END to decompress: bunzip2 my_archive.tar.bz2
  • 7.
    Linux Bash ShellCheat Sheet Basic Commands Archive and compress data (continued) Installing software step 4, to decompress the .tar file: When software is available in the repositories: tar -xvf archive.tar archive.tar sudo apt-get install <nameOfSoftware> ex--> sudo apt-get install aptitude Archive and compress data the fast way: If you download it from the Internets in .gz format gzip: tar -zcvf my_archive.tar.gz folder/ (or bz2) - “Compiling from source” decompress: tar -zcvf my_archive.tar.gz Documents/ Step 1, create a folder to place the file: mkdir /home/username/src <-- then cd to it bzip2: tar -jcvf my_archive.tar.gz folder/ decompress: tar -jxvf archive.tar.bz2 Documents/ Step 2, with 'ls' verify that the file is there (if not, mv ../file.tar.gz /home/username/src/) Show the content of .tar, .gz or .bz2 without decompressing it: Step 3, decompress the file (if .zip: unzip <file>) gzip: <-- gzip -ztf archive.tar.gz Step 4, use 'ls', you should see a new directory bzip2: Step 5, cd to the new directory bzip2 -jtf archive.tar.bz2 Step 6.1, use ls to verify you have an INSTALL file, tar: then: more INSTALL tar -tf archive.tar If you don't have an INSTALL file: Step 6.2, execute ./configure <-- creates a makefile tar extra: Step 6.2.1, run make <-- builds application binaries tar -rvf archive.tar file.txt = add a file to the .tar Step 6.2.2 : switch to root --> su Step 6.2.3 : make install <-- installs the software You can also directly compress a single file and view the file Step 7, read the readme file without decompressing: Step 1, use gzip or bzip2 to compress the file: gzip numbers.txt Step 2, view the file without decompressing it: zcat = view the entire file in the console (same as cat) zmore = view one screen at a time the content of the file (same as more) zless = view one line of the file at a time (same as less)