cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2494
Views
0
Helpful
0
Comments
Amit Sharma
Cisco Employee
Cisco Employee

Linux Basics

  • LINUX IS CASE-SENSITIVE
    • For example: 
      • Netscape, NETSCAPE and nEtscape are three different commands.
      • Also my_filE, my_file, and my_FILE are three different files.
      • Your user login name and password are also case sensitive.
      • (This goes with the tradition of UNIX and the "c" programming language  being case sensitive.)
  • Filenames can be up to 256 characters long and can contain letters, numbers,  "." (dot), "_" (underscore), "-" (dash), plus some other not recommended  characters.
  • Files with names starting with "." are normally not shown by the ls (list)  or dir commands. 
    • Think of these files as "hidden". Use ls -a (list with the option "all") to see these files.
  • "/" is an equivalent to DOS "\" (root directory, meaning the parent of all  other directories).
  • Under Linux, all directories appear under a single directory tree (there are  no DOS-style drive letters).
  • In a configuration file, a line starting with # is a comment.

Files

A simple description of the UNIX system, also applicable to Linux, is this:

"On a UNIX system, everything is a file; if something is not a file, it is a  process."

Sorts of files

Most files are just files, called regular files; they contain normal data,  for example text files, executable files or programs, input for or output from a  program and so on. While it is reasonably safe to suppose that everything you encounter on a  Linux system is a file, there are some exceptions.

  • Directories: files that are lists of other files.
  • Special files: the mechanism used for input and output. Most special files  are in /dev, we will discuss them later.
  • Links: a system to make a file or directory visible in multiple parts of the  system's file tree. We will talk about links in detail.
  • (Domain) sockets: a special file type, similar to TCP/IP sockets, providing  inter-process networking protected by the file system's access control.
  • Named pipes: act more or less like sockets and form a way for processes to  communicate with each other, without using network socket semantics.

File types in a long list

SymbolMeaning
-Regular file
dDirectory
lLink
cSpecial file
sSocket
pNamed pipe
bBlock device

FILE command

WHICH command

LOCATE command

FIND command (-name , -size +5000k) find . -name "*.tmp" -exec rm {} \; find  `/home/abhi.` -name *.mp3

GREP command grep -a find .bash_history grep penguin /usr/share/dict/words

chown / chmod / chgrp

wc


File protection with chmod Command Meaning chmod 400 file To protect a  file against accidental overwriting. chmod 500 directory To protect yourself  from accidentally removing, renaming or moving files from this directory. chmod  600 file A private file only changeable by the user who entered this command.  chmod 644 file A publicly readable file that can only be changed by the issuing  user. chmod 660 file Users belonging to your group can change this file, others  don't have any access to it at all. chmod 700 file Protects a file against any  access from other users, while the issuing user still has full access. chmod 755  directory For files that should be readable and executable by others, but only  changeable by the issuing user. chmod 775 file Standard file sharing mode for a  group. chmod 777 file Everybody can do everything to this file.

At the time a new file is created, it gets a free inode. In that inode is the  following information:


   *
     Owner and group owner of the file.

   *
     File type (regular, directory, ...)

   *
     Permissions on the file Section 3.4.1

   *
     Date and time of creation, last read and change.

   *
     Date and time this information has been changed in the inode.

   *
     Number of links to this file (see later in this chapter).

   *
     File size

   *
     An address defining the actual location of the file data.

The only information not included in an inode, is the file name and  directory. These are stored in the special directory files. By comparing file  names and inode numbers, the system can make up a tree-structure that the user  understands. Users can display inode numbers using the -i option to ls. The  inodes have their own separate space on the disk.

- Absolute and relative paths

Linux essential shortcuts and sanity commands:  <Ctrl><Alt><F1> Switch to the first text terminal. Under Linux  you can have several (6 in standard setup) terminals opened at the same time.

<Ctrl><Alt><Fn> (n=1..6) Switch to the nth text terminal.

tty Print the name of the terminal in which you are typing this command.

<Ctrl><Alt><F7> Switch to the first GUI terminal (if  X-windows is running on this terminal).

<Ctrl><Alt><Fn> (n=7..12)

Switch to the nth GUI terminal (if a GUI terminal is running on screen n-1).  On default, nothing is running on terminals 8 to 12, but you can run another  server there.


<Tab>

(In a text terminal) Autocomplete the command if there is only one option, or  else show all the available options. THIS SHORTCUT IS GREAT! It even works at  LILO prompt!


<ArrowUp>

Scroll and edit the command history. Press <Enter> to execute.


<Shift><PgUp>

Scroll terminal output up. Work also at the login prompt, so you can scroll  through your bootup messages.


<Shift><PgDown>

Scroll terminal output down.


<Ctrl><Alt><+>

(in X-windows) Change to the next X-server resolution (if you set up the  X-server to more than one resolution). For multiple resolutions on my standard  SVGA card/monitor, I have the following line in the file /etc/X11/XF86Config  (the first resolution starts on default, the largest determines the size of the  "virtual screen"): Modes "1024x768" "800x600" "640x480" "512x384" "480x300"  "400x300" "1152x864"

<Ctrl><Alt><-> (in X-windows) Change to the previous  X-server resolution.

<Ctrl><Alt><BkSpc> (in X-windows) Kill the current  X-windows server. Use if the X-windows server crushes and cannot be exited  normally.

<Ctrl><Alt><Del> Shut down the system and reboot. This is  the normal shutdown command for a user at the text-mode console. Don't just  press the "reset" button for shutdown!

<Ctrl>c Kill the current process (mostly in the text mode for small  applications).

<Ctrl>d Log out from the current terminal. See also the next command.

<Ctrl>d Send [End-of-File] to the current process. Don't press it twice  else you also log out (see the previous command).

<Ctrl>s Stop the transfer to the terminal.

<Ctrl>q Resume the transfer to the terminal. Try if your terminal  mysteriously stops responding.

<Ctrl>z Send the current process to the background

exit Logout. I can also use logout for the same effect. (If you have started  a second shell, e.g., using bash the second shell will be exited and you will be  back in the first shell, not logged out.)

reset Restore a screwed-up terminal (a terminal showing funny characters) to  default setting. Use if you tried to "cat" a binary file. You may not be able to  see the command as you type it.

<MiddleMouseButton> Paste the text which is currently highlighted  somewhere else. This is the normal "copy-paste" operation in Linux. It does work  in the text terminal if you enabled "gpm" service using "setup".) Best used with  a Linux-ready 3-button mouse (Logitech or similar) or else set "3-mouse button  emulation").

~ (tilde) My home directory (normally the directory /home/my_login_name). For  example, the command cd ~/my_dir will change my working directory to the  subdirectory "my_dir" under my home directory. Typing just "cd" alone is an  equivalent of the command "cd ~".

. (dot) Current directory. For example, ./my_program will attempt to execute  the file "my_program" located in your current working directory.

.. (two dots) Directory parent to the current one. For example, the command  cd .. will change my current working directory one one level up.

Key combinations in Bash

Key or key combination Function

Ctrl+A Move cursor to the beginning of the  command line.

Ctrl+C End a running program and return the prompt, see Chapter 4.

Ctrl+D Log out of the current shell session, equal to typing exit or logout.

Ctrl+E Move cursor to the end of the command line. Ctrl+H Generate backspace  character.

Ctrl+L Clear this terminal.

Ctrl+R Search command history, see  Section 3.3.3.4.

Ctrl+Z Suspend a program, see Chapter 4. ArrowLeft and  ArrowRight Move the cursor one place to the left or right on the command line,  so that you can insert characters at other places than just at the beginning and  the end. ArrowUp and ArrowDown Browse history. Go to the line that you want to  repeat, edit details if necessary, and press Enter to save time.

Shift+PageUp  and Shift+PageDown Browse terminal buffer (to see text that has "scrolled off"  the screen). Tab Command or filename completion; when multiple choices are  possible, the system will either signal with an audio or visual bell, or, if too  many choices are possible, ask you if you want to see them all. Tab Tab Shows  file or command completion possibilities.

Common Linux commands--

system info pwd Print working directory, i.e., display  the name of my current directory on the screen.

hostname Print the name of the local host (the machine on which you are  working). Use netconf (as root) to change the name of the machine.

whoami Print my login name.

id username Print user id (uid) and his/her group id (gid), effective id (if  different than the real id) and the supplementary groups.

date Print or change the operating system date and time. E.g., I could change  the date and time to 2000-12-31 23:57 using this command: date 123123572000 To  set the hardware (BIOS) clock from the system (Linux) clock,

use the command (as  root) setclock

time Determine the amount of time that it takes for a process to complete +  other info. Don't confuse it with the date command. E.g. I can find out how long  it takes to display a directory content using: time ls

who Determine the users logged on the machine.

rwho -a (=remote who) Determine all users logged on your network. The rwho  service must be enabled for this command to run. If it isn't, run setup as root  to enable "rwho".

finger user_name System info about a user. Try: finger root

last Show listing of users last logged-in on your system.

history | more Show the last (1000 or so) commands executed from the command  line on the current account. The "| more" causes the display to stop after each  screenful.

uptime Show the amount of time since the last reboot.

ps (=print status) List the processes currently run by the current user.

ps axu | more List all the processes currently running, even those without  the controlling terminal, together with the name of the user that owns each  process.

top Keep listing the currently running processes, sorted by cpu usage (top  users first). In KDE, you can get GUI-based Ktop from "K"menu under  "System"-"Task Manager" (or by executing "ktop" in an X-terminal).

uname -a (= Unix name with option "all") Info on your (local) server. I can  also use guname (in X-window terminal) to display the info more nicely.

free Memory info (in kilobytes).

df -h (=disk free) Print disk info about all the filesystems (in  human-readable form)

du / -bh | more (=disk usage) Print detailed disk usage for each subdirectory  starting at the "/" (root) directory (in human legible form).

cat /proc/cpuinfo Cpu info--it show the content of the file cpuinfo. Note  that the files in the /proc directory are not real files--they are hooks to look  at information available to the kernel.

cat /proc/interrupts List the interrupts in use.

cat /proc/version Linux version and other info

cat /proc/filesystems Show the types of filesystems currently in use.

cat /etc/printcap Show the setup of printers.

lsmod (As root. Use /sbin/lsmod to execute this command when you are a  non-root user.) Show the kernel modules currently loaded.

set|more Show the current user environment.

echo $PATH Show the content of the environment variable "PATH". This command  can be used to show other environment variables as well. Use "set" to see the  full environment.

dmesg | less Print kernel messages (the content of the so-called kernel ring  buffer). Press "q" to quit "less". Use less /var/log/dmesg to see what "dmesg"  dumped into this file right after the last system bootup.


Basic operations

any_command --help |more Display a brief help on a command (works with most  commands). "--help" works similar to DOS "/h" switch. The "more" pipe is needed  if the output is longer than one screen.

man topic Display the contents of the system manual pages (help) on the  topic. Try man man first. Press "q" to quit the viewer. The command info topic  works similar and may contain more up-to-date information. Manual pages can be  hard to read. Try any_command --help for short, easy to digest help on a  command. If more info needed, have a look to the directory /usr/doc. To display  manual page from a specific section, I may use something like in this example:  man 3 exit (this displays an info on the command exit from section 3 of the  manual pages).

apropos topic Give me the list of the commands that have something to to do  with my topic.

help command Display brief info on a bash (shell) build-in command.

ls List the content of the current directory. Under Linux, the command "dir"  is an alias to ls. Many users have "ls" to be an alias to "ls --color".

ls -al |more List the content of the current directory, all files (also those  starting with a dot), and in a long form. Pipe the output through the "more"  command, so that the display pauses after each screenful.

cd directory Change directory. Using "cd" without the directory name will  take you to your home directory. "cd -" will take you to your previous directory  and is a convenient way to toggle between two directories. "cd .." will take you  one directory up.

cp source destination Copy files. E.g., cp /home/stan/existing_file_name .  will copy a file to my current working directory. Use the "-r" option (for  recursive) to copy the contents of whole directories, e.g. , cp -r  my_existing/dir/ ~ will copy a subdirectory under my current working directory  to my home directory.

mcopy source destination Copy a file from/to a DOS filesystem (no mounting  necessary). E.g., mcopy a:\autoexec.bat ~/junk . See man mtools for related  commands: mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....

mv source destination Move or rename files. The same command is used for  moving and renaming files and directories.

ln source destination Create a hard link called destination to the file  called source. - The link appears as a copy of the original files, but in  reality only one copy of the file is kept, just two (or more) directory entries  point to it. - Any changes the file are automatically visible throughout. - When  one directory entry is removed, the other(s) stay(s) intact. - The limitation of  the hard links are: the files have to be on the same filesystem, hard links to  directories or special files are impossible.

ln -s source destination Create a symbolic (soft) link called "destination"  to the file called "source". - The symbolic link just specifies a path where to  look for the file. - In contradistinction to hard links, the source and  destination don't not have to tbe on the same filesystem. - In comparison to  hard links, the drawback of symbolic links are: > if the original file is  removed, the link is "broken". > symbolic links can also create circular  references (like circular references in spreadsheets or databases, e.g., "a"  points to "b" and "b" points back to "a").

rm files Remove (delete) files. - You must own the file in order to be able  to remove it. - On many systems, you will be asked or confirmation of deletion,  if you don't want this, use the "-f" (=force) option, - e.g., rm -f * will  remove all files in my current working directory, no questions asked.

mkdir directory Make a new directory.

rmdir directory Remove an empty directory.

rm -r files (recursive remove) Remove files, directories, and their  subdirectories.

- Careful with this command as root--you can easily remove all files on the system with such a command executed on the top of your directory tree,                 and there is no undelete in Linux (yet).   - But if you really wanted to do it (reconsider), here is how (as root): rm -rf /*

cat filename | more View the content of a text file called "filename", one  page a time. - The pipe makes the output stop after each screenful. - For long  files, it is sometimes convenient to use the commands head and tail that display  just the beginning and the end of the file. - If you happened to use "cat" a  binary file and your terminal displays funny characters afterwards, you can  restore it with the command "reset".

less filename Scroll through a content of a text file. Press q when done. -  "Less" is roughly equivalent to "more" , the command you know from DOS, although  very often "less" is more convenient than "more".

pico filename Edit a text file using the simple and standard text editor  called pico.

pico -w filename Edit a text file, while disabling the long line wrap. Handy  for editing configuration files, e.g. /etc/fstab.

find / -name "filename" Find the file called "filename" on your filesystem  starting the search from the root directory "/". The "filename" may contain  wildcards (*,?).

locate filename Find the file name of which contains the string "filename". -  Easier and faster than the previous command but depends on a database that  normally rebuilds at night.

./program_name Run an executable in the current directory, which is not on  your PATH.

touch filename Change the date/time stamp of the file filename to the current  time. - Create an empty file if the file does not exist.

xinit Start a barebone X-windows server (without a windows manager).

startx Start an X-windows server and the default windows manager. Works like  typing "win" under DOS with Win3.1

startx -- :1 Start another X-windows session on the display 1 (the default is  opened on display 0). You can have several GUI terminals running concurrently.  Switch between them using <Ctrl><Alt><F7>,  <Ctrl><Alt><F8>, etc.

xterm (in X terminal) Run a simple X-windows terminal. Typing exit will close  it. There are other, more advanced "virtual" terminals for X-windows. I like the  popular ones: konsole and kvt (both come with kde) and gnome-terminal (comes  with gnome). If you need something really fancy-looking, try Eterm.

xboing (in X terminal). Very nice, old-fashioned game. Many small  games/programs are probably installed on your system. I also like xboard  (chess).

shutdown -h now (as root) Shut down the system to a halt. Mostly used for a  remote shutdown. Use <Ctrl><Alt><Del> for a shutdown at the  console (which can be done by any user).

halt reboot (as root, two commands) Halt or reboot the machine. Used for  remote shutdown, simpler to type than the previous command.

Network apps lynx file.html View an html file or browse the net from the text  mode.

pine A good text-mode mail reader. Another good and standard one is elm.

elm A good tex-mode mail reader. See the previous command.

mutt A really basic but extremlly useful and fast mail reader.

mail A basic operating system tool for e-mail. Look at the previous commands  for a better e-mail reader. - mail is good if you wanted to send an e-mail from  a shell script.


talk username1 Talk to another user currently logged on your machine (or  use "talk username1@machinename" to talk to a user on a different computer) . To  accept the invitation to the conversation, type the command "talk username2". If  somebody is trying to talk to you and it disrupts your work, your may use the  command "mesg n" to refuse accepting messages. You may want to use "who" or  "rwho" to determine the users who are currently     logged-in.

wall

mc Launch the "Midnight Commander" file manager (looks like "Norton  Commander" for Linux).

telnet server Connect to another machine using the TELNET protocol. - Use a  remote machine name or IP address. - You will be prompted for your login name  and password--you must have an account on the remote machine to login. - Telnet  will connect you to another machine and let you operate on it as if you were  sitting at its keyboard (almost). - Telnet is not very secure--everything you  type goes in open text, even your password!

rlogin server (=remote login) Connect to another machine. The login  name/password from your current session is used; if it fails you are prompted  for a password.

rsh / ssh server (=remote shell) Yet another way to connect to a remote  machine. - The login name/password from your current session is used; if it  fails you are prompted for a password.

ftp server Ftp another machine. (There is also ncftp which adds extra  features and gftp for GUI .) - Ftp is good for copying files to/from a remote  machine. - Try user "anonymous" if you don't have an account on the remote  server. - After connection, use "?" to see the list of available ftp commands. -  The essential ftp command are: ls (see the files on the remote system), ASCII,  binary (set the file transfer mode to either text or binary, important that you  select the proper one ), get (copy a file from the remote system to the local  system), mget (get many files at once), put (copy a file from the local system  to the remote system), mput (put many files at once), bye (disconnect). For  automation in a script, you may want to use ncftpput and ncftpget, for example:  ncftpput -u my_user_name -p my_password -a remote.host.domain remote_dir  *local.html

File (de)compression

tar -zxvf filename.tar.gz (=tape archiver) Untar a tarred and compressed  tarball (*.tar.gz or *.tgz) that you downloaded from the Internet.

tar -xvf filename.tar Untar a tarred but uncompressed tarball (*.tar).

gunzip filename.gz Decompress a zipped file (*.gz" or *.z). Use gzip (also  zip or compress) if you wanted to compress files to this file format.

bunzip2 filename.bz2 (=big unzip) Decompress a file (*.bz2) zipped with bzip2  compression utility. Used for big files.

unzip filename.zip Decompress a file (*.zip) zipped with a compression  utility compatible with PKZIP for DOS.

unarj e filename.arj Extract the content of an *.arj archive.

uudecode -o outputfile filename Decode a file encoded with uuencode.  uu-encoded files are typically used for transfer of non-text files in e-mail  (uuencode transforms any file into an ASCII file).


Process control

ps (=print status) Display the list of currently running processes with their  process IDs (PID) numbers. Use ps axu to see all processes currently running on  your system (also those of other users or without a controlling terminal), each  with the name of the owner. Use "top" to keep listing the processes currently  running.

fg PID Bring a background or stopped process to the foreground.

bg PID Send the process to the background. Opposite to fg. The same can be  accomplished with <Ctrl>z. If you have stopped jobs, you have to type exit  twice in row to log out.

any_command& Run any command in the background (the symbol "&" means  "run the proceeding command in the background").

batch any_command Run any command (usually one that is going to take more  time) when the system load is low. I can logout, and the process will keep  running.

at 17:00 Execute a command at a specified time. You will be prompted for the  command(s) to run, until you press <Ctrl>d.

kill PID Force a process shutdown. First determine the PID of the process to  kill using ps.

killall program_name Kill program(s) by name.

xkill (in an xwindow terminal) Kill a GUI-based program with mouse. (Point  with your mouse cursor at the window of the process you want to kill and click.)

lpc (as root) Check and control the printer(s). Type "?" to see the list of  available commands.

lpq Show the content of the printer queue. Under KDE (X-Windows), you may use  GUI-based "Printer Queue" available from "K"menu-Utilities.

lprm job_number Remove a printing job "job_number" from the queue.

nice program_name Run program_name adjusting its priority. Since the priority  is not specified in this example, it will be adjusted by 10 (the process will  run slower), from the default value (usually 0). The lower the number (of  "niceness" to other users on the system), the higher the priority. The priority  value may be in the range -20 to 19. Only root may specify negative values. Use  "top" to display the priorities of the running processes.

renice -1 PID (as root) Change the priority of a running process to -1.  Normal users can only adjust processes they own, and only up from the current  value (make them run slower).

<Ctrl>c, <Ctrl>z, <Ctrl>s, and <Ctrl>q also belong to  this chapter but they were described previously. In short they mean: stop the  current command, send the current command to the background, stop the data  transfer, resume the data transfer.

Basic administration commands

printtool (as root in X-terminal) Configuration tool for your printer(s).  Settings go to the file /etc/printcap.

setup (as root) Configure mouse, soundcard, keyboard, X-windows, system  services. - There are many distibution-specific configuration utilities, setup  is the default on RedHat.

linuxconfig (as root, either in text or graphical mode). You can access and  change hundreds of setting from it. Very powerful--don't change too many things  at the same time, and be careful with changing entries you don't understand.

xvidtune (in X-terminal). Adjust the settings of the graphical display for  all resolutions so as to eliminate black bands, shift the display  right/left/up/down, etc. (First use the knobs on your monitor to fit your text  mode correctly on the screen.) To make the changes permanent, display the  frequencies on the screen and transfer them to the setup file  /etc/X11/XF86Config.

alias ls="ls --color=tty" Create an alias for the command "ls" to enhance its  format with color. In this example, the alias is also called "ls" and the  "color" option is only envoke when the output is done to a terminal (not to  files). Put the alias into the file /etc/bashrc if you would like the alias to  be always accessible to all users on the system. Type "alias" alone to see the  list of aliases on your system.

adduser user_name Create a new account (you must be root). E.g., adduser abhi  Don't forget to set up the password for the new user in the next step. The user  home directory is /home/user_name.

useradd user_name The same as the command " adduser user_name ".

userdel user_name Remove an account (you must be a root). The user's home  directory and the undelivered mail must be dealt with separately (manually  because you have to decide what to do with the files).

groupadd group_name Create a new group on your system. Non-essential but can  be handy even on a home machine with a small number of users.

passwd Change the password on your current account. If you are root, you can  change the password for any user using: passwd user_name

chmod perm filename (=change mode) Change the file access permission for the  files you own (unless you are root in which case you can change any file). - You  can make a file accessible in three modes: read (r), write (w), execute (x) to  three classes of users: owner (u), members of the same group as the owner (g),  others on the system (o).

Check the current access permissions using: ls -l filename

If the file is accessible to all users in all modes it will show: rwxrwxrwx

The first triplet shows the file permission for the owner of the file, the  second for his/her group, the third for others.

A "no" permission is shown as "-".

E.g., this command will add the permission to read the file "junk" to all  (=user+group+others): chmod a+r junk This command will remove the permission to  execute the file junk from others: chmod o-x junk Also try here for more info.  You can set the default file permissions for the new files that you create using  the command umask (see man umask).

chown new_ownername filename chgrp new_groupname filename Change the file  owner and group. You should use these two commands after you copy a file for use  by somebody else.

su (=substitute user id) Assume the superuser (=root) identity (you will be  prompted for the password). - Type "exit" to return you to your previous login.  Don't habitually work on your machine as root. - The root account is for  administration and the su command is to ease your access to the administration  account when you require it. - You can also use "su" to assume any other user  identity, e.g. su abhi will make me "abhi" (password required unless I am a  superuser).

kernelcfg (as root in X terminal). GUI to to add/remove kernel modules. You  can do the same from the command line using the command "insmod", but "insmode"  is less "newbie-friendly".

lsmod List currently loaded kernel modules. A module is like a device  driver--it provides operating system kernel support for a particular piece of  hardware or feature.

modprobe -l |more List all the modules available for your kernel. The  available modules are determined by how your Linux kernel was compliled. Every  possible module/feature can be compiled on linux as either "hard wired" (fast,  non-removable), "module" (maybe slower, but loaded/removable on demand), or "no"  (no support for this feature at all).

insmod parport insmod ppa (as root) Insert modules into the kernel (a module  is roughly an equivalent of a DOS device driver). This example shows how to  insert the modules for support of the external parallel port zip drive

rmmod module_name (as root, not essential). Remove the module module_name from  the kernel.

setserial /dev/cua0 port 0x03f8 irq 4 (as root) Set a serial port to a  non-standard setting. The example here shows the standard setting for the first  serial port (cua0 or ttyS0). The standard PC settings for the second serial port  (cua1or ttyS1) are: address of i/o port 0x02f8, irq 3. The third serial port  (cua2 or ttyS2): 0x03e8, irq 4. The forth serial port (cua3 or ttyS3): 0x02e8,  irq 3. Add your setting to /etc/rc.d/rc.local if you want it to be set at the  boot time. See man setserial for good a overview.

fdisk (as root) Linux hard drive partitioning utility (DOS has a utility with  the same name).

depmod -a (as root) Build the module dependency table for the kernel. This  can, for example, be useful after installing and booting a new kernel. Use  "modprobe -a" to load the modules.

ldconfig (as root) Re-create the bindings and the cache for the loader of  dynamic libraries ("ld"). You may want to run ldconfig after an installation of  new dynamically linked libraries on your system. (It is also re-run every time  you boot the computer, so if you reboot you don't have to run it manually.)


fsck -t ext2 /dev/hda2 (=file system check, as root) Check and repair a filesystem. The example uses the  partition hda2, filesystem type ext2.

dd if=/dev/fd0H1440 of=floppy_image dd if=floppy_image of=/dev/fd0H1440 (two  commands, dd="data duplicator") Create an image of a floppy to the file called  "floppy_image" in the current directory. Then copy floppy_image (file) to  another floppy disk. Works like DOS "DISKCOPY".


Program installation

rpm -ivh filename.rpm (=RedhatPackageManager, install, verbose, hashes  displayed to show progress, as root.) Install a content of RedHat rpm package(s)  and print info on what happened.

rpm -qpi filename.rpm (=RedhatPackageManager, query, package, list.) Read the  info on the content of a yet uninstalled package filename.rpm.

rpm -qpl filename.rpm (=RedhatPackageManager, query, package, information.)  List the files contained in a yet uninstalled package filename.rpm.

rpm -qf filename (=RedhatPackageManager, query, file.) Find out the name of  the *.rpm package to which the file filename (on your hardrive) belongs.

rpm -e packagename (=RedhatPackageManager, erase=uninstall.) Uninstall a  package pagckagename. Packagname is the same as the beginning of the *.rpm  package file but without the dash and version number.


Accessing drives/partitions mount

mount -t auto /dev/fd0 /mnt/floppy (as root) Mount the floppy. The directory  /mnt/floppy must exist, be empty and NOT be your current directory.

mount -t auto /dev/cdrom /mnt/cdrom (as root) Mount the CD. You may need to  create/modify the /dev/cdrom file depending where your CDROM is. The directory  /mnt/cdrom must exist, be empty and NOT be your current directory.

mount /mnt/floppy (as user or root) Mount a floppy as user. The file  /etc/fstab must be set up to do this. The directory /mnt/floppy must not be your  current directory.

mount /mnt/cdrom (as user or root) Mount a CD as user. The file /etc/fstab  must be set up to do this. The directory /mnt/cdrom must not be your current  directory.

umount /mnt/floppy Unmount the floppy. The directory /mnt/floppy must not be  your (or anybody else's) current working directory. Depending on your setup, you  might not be able to unmount a drive that you didn't mount.

Network administration tools

netconf (as root) A very good menu-driven setup of your network.

ping machine_name Check if you can contact another machine (give the  machine's name or IP), press <Ctrl>C when done (it keeps going).

route -n Show the kernel routing table.

nslookup host_to_find Query your default domain name server (DNS) for an  Internet name (or IP number) host_to_find. This way you can check if your DNS  works. You can also find out the name of the host of which you only know the IP  number.

traceroute host_to_trace Have a look how you messages trave to host_to_trace  (which is either a host name or IP number).

ipfwadm -F -p m (for RH5.2, seen next command for RH6.0) Set up the firewall  IP forwarding policy to masquerading. (Not very secure but simple.) Purpose: all  computers from your home network will appear to the outside world as one very  busy machine and, for example, you will be allowed to browse the Internet from  all computers at once.

echo 1 > /proc/sys/net/ipv4/ip_forward ipfwadm-wrapper -F -p deny  ipfwadm-wrapper -F -a m -S xxx.xxx.xxx.0/24 -D 0.0.0.0/0 (three commands,  RH6.0). Does the same as the previous command. Substitute the "x"s with digits  of your class "C" IP address that you assigned to your home network.


ifconfig (as root) Display info on the network interfaces currently  active (ethernet, ppp, etc). Your first ethernet should show up as eth0, second  as eth1, etc, first ppp over modem as ppp0, second as ppp1, etc. The "lo" is the  "loopback only" interface which should be always active. Use the options (see  ifconfig --help) to configure the interfaces.

ifup interface_name (/sbin/ifup to it run as a user) Startup a network  interface. E.g.: ifup eth0 ifup ppp0 Users can start up or shutdown the ppp  interface only when the right permission was checked during the ppp setup (using  netconf ). To start a ppp interface (dial-up connection), I normally use kppp  available under kde menu "internet".

ifdown interface_name (/sbin/ifdown to run it as a user). Shut down the  network interface. E.g.: ifdown ppp0 Also, see the previous command.

netstat | more Displays a lot (too much?) information on the status of your  network.


VI Basics: Basic operations

These are some popular vi commands:

* n dd will delete n lines starting from the current cursor position.

*n dw will delete n words at the right side of the cursor.
*x will delete the character on which the cursor is positioned
*:n moves to line n of the file.
*:w will save (write) the file
*:q will exit the editor.
*:q! forces the exit when you want to quit a file containing unsaved changes.
*:wq will save and exit
*:w newfile will save the text to newfile.
*:wq! overrides read-only permission (if you have the permission to override permissions, for instance when you are using the root account.
*/astring will search the string in the file and position the cursor on the first match below its position.
*/ will perform the same search again, moving the cursor to the next match.
*:1, $s/word/anotherword/g will replace word with anotherword throughout the file.
* yy will copy a block of text.
*n p will paste it n times.
:recover will recover a file after an unexpected interruption.


MISC

BOOT Process - MBR - Init - RC

chkconfig

nice

at and cron

redirection

> >> << < less --help | grep -i examine


who -r

Use clear to clear the command prompt

Use passwd to change your current password

pstree, list the processes in a tree format.

There are three types of I/O, which each have their own identifier,  called a file descriptor:

  *standard input: 0
  *standard output: 1
  *standard error: 2


In the following descriptions, if the file descriptor number is omitted, and  the first character of the redirection operator is <, the redirection refers  to the standard input (file descriptor 0). If the first character of the  redirection operator is >, the redirection refers to the standard output  (file descriptor 1).

Some practical examples will make this more clear:

ls > dirlist 2>&1

will direct both standard output and standard error to the file dirlist,  while the command

ls 2>&1 > dirlist

will only direct standard output to dirlist. This can be a useful option for  programmers.


echo $?


pgrep, instead of:

  1. ps -ef | egrep '^root ' | awk '{print $2}'

split, have a large file that you need to split into smaller chucks? A  mysqldump maybe? split is your command. Below I split a 250MB file into 2  megabyte chunks all starting with the prefix LF_.

  1. ls -lh largefile

-rw-r--r-- 1 root root 251M Feb 19 10:27 largefile

  1. split -b 2m largefile LF_
  2. ls -lh LF_* | head -n 5

-rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_aa -rw-r--r-- 1 root root 2.0M  Feb 19 10:29 LF_ab -rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_ac -rw-r--r-- 1  root root 2.0M Feb 19 10:29 LF_ad -rw-r--r-- 1 root root 2.0M Feb 19 10:29 LF_ae

  1. ls -lh LF_* | wc -l

126

  1. bcc.html:104:2: mismatched tag
  2. lsof lists open files. You can do all kinds of cool things with this. Like  find which ports are open:

  1. lsof | grep TCP

portmap 2587 rpc 4u IPv4 5544 TCP *:sunrpc (LISTEN) rpc.statd 2606 root 6u  IPv4 5585 TCP *:668 (LISTEN) sshd 2788 root 3u IPv6 5991 TCP *:ssh (LISTEN)  sendmail 2843 root 4u IPv4 6160 TCP badhd:smtp (LISTEN) vsftpd 9337 root 3u IPv4  34949 TCP *:ftp (LISTEN) cupsd 16459 root 0u IPv4 41061 TCP badhd:ipp (LISTEN)  sshd 16892 root 3u IPv6 61003 TCP  badhd.mshome.net:ssh->kontiki.mshome.net:4661 (ESTABLISHED)

Say you want to change your password, but you don't know the command to do  it. You can use the man command plus the keyword flag, -k, to search by keyword  password for relevant commands:

man -k password passwd passwd (1) - change login password pwck pwck (1m) -  password/group file checkers vipw vipw (1b) - edit the password file

If you really can't figure out the name of the command, but you know the name  of the package the program came in, try this to list the programs in a package:

rpm -ql packagename | grep bin

Q: What is a runlevel? A: A runlevel is a number which indicates what "mode"  you want to computer to boot into. For example, runlevel 5 is graphical mode,  where runlevel 3 is text-only mode. Runlevel 1 is "single-user" mode, used for  troubleshooting problems.


How do I run something when the computer starts?

  1. Check if a service is running:

service servicename status

  1. Starting a service:

service servicename start

  1. Stopping a service:

service servicename stop

  1. Have a service start automatically at boot:

      1. Open the ntsysv program:      ntsysv

     2. Find your service in the list and press space to enable it. Services marked with a * will start automatically at boot.

  1. Stop a service from starting automatically at boot:

          1. Open the ntsysv program:      ntsysv


Q: What is rescue mode and how do I boot into it? A: Rescue mode provides  the ability to boot a small Fedora environment entirely from a CD-ROM or USB  drive instead of the system's hard drive. As the name implies, rescue mode is  provided to rescue you from something. In rescue-mode you can mount and edit  your files, such as configuration files and by doing so solve your problems.

To boot into rescue mode, you must be able to boot the system using one of  the following methods:

1. By booting the system from an installation boot CD-ROM, or a boot image on a USB disk.

2. By booting the system from the Fedora CD-ROM #1.

Once you have booted using one of the described methods, enter the following  command at the installation boot prompt:

linux rescue


shutdown Shuts the system down. shutdown -h now Shuts the system down to halt  immediately. shutdown -r now Shuts the system down immediately and the system  reboots. whereis Show where the binary, source and manual page files are for a  command whereis ls Locates binaries and manual pages for the ls command.

Command Meaning bash GNU shell program. cat file(s) Send content of file(s) to  standard output. cd directory Enter directory. cd is a bash built-in command.  chgrp newgroup file(s) Change the group ownership of file(s) to newgroup chmod  mode file(s) Change access permissions on file(s) chown newowner[:[newgroup]]  file(s) Change file owner and group ownership. cp sourcefile targetfile Copy  sourcefile to targetfile. df file Reports on used disk space on the partition  containing file. echo string Display a line of text export Part of bash that  announces variables and their values to the system. file filename Determine file  type of filename. find path expression Find files in the file system hierarchy  grep PATTERN file Print lines in file containing the search pattern. head file  Send the first part of file to standard output id Prints real and effective user  name and groups. info command Read documentation about command. less file View  file with a powerful viewer. ln targetfile linkname Make a link with name  linkname to targetfile. locate searchstring Print all accessible files matching  the search pattern. ls file(s) Prints directory content. man command Format and  display online (system) manual pages for command. mkdir newdir Make a new empty  directory. mv oldfile newfile Rename or move oldfile. newgrp groupname Log in to  a new group. pwd Print the present or current working directory. quota Show disk  usage and limits. rm file Removes files and directories. rmdir file Removes  directories. tail file Print the last part of file. umask [value] Show or change  new file creation mode. wc file Counts lines, words and characters in file.  which command Shows the full path to command.

Controlling processes (part of) command Meaning regular_command Runs this  command in the foreground. command & Run this command in the background  (release the terminal) jobs Show commands running in the background. Ctrl+Z  Suspend (stop, but not quit) a process running in the foreground (suspend).  Ctrl+C Interrupt (terminate and quit) a process running in the foreground. %n  Every process running in the background gets a number assigned to it. By using  the % expression a job can be referred to using its number, for instance fg %2.  bg Reactivate a suspended program in the background. fg Puts the job back in the  foreground. kill End a process (also see Shell Builtin Commands in the Info  pages of bash)


Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: