next up previous contents
Next: About this document ... Up: Linux Newbie Administrator Guide Previous: Before Linux Installation   Contents

Subsections

Linux Shortcuts and Commands (Highly recommended)

Maybe this should have come first. A practical selection of Linux shortcuts and commands in a concise form. Perhaps this is everything that a computer-literate newbie Linuxer really needs. Highly recommended. This is a practical selection of the commands we use most often, find useful, and which came on most Linux distribution CD/DVDs. Press <Tab> on the empty command line to see the listing of all available commands (on your PATH). On my small home system, it says there are 3786 executables on my PATH. Many of these "commands" can be accessed from your favourite GUI front-end (probably KDE or Gnome) by clicking appropriate menu, icon, or button. They can all be run from the command line (unless you didn't install the package, but they all came on my Linux CDs). Programs that require GUI have to be run from under the X11, for example from a terminal opened in kde or gnome (e.g., konsole or xterm).

Notes for the UNIX Clueless

  1. LINUX IS CASE-SENSITIVE. For example: Mozilla, MOZILLA, mOzilla, and mozilla would be four different commands (but of the four, only mozilla is available on my system). 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.)
  2. Filenames can be up to 256 characters long and can contain letters, numbers, ``.'' (dots), ``_'' (underscores), ``-'' (dashes), plus some other non-recommended characters.
  3. Files with names starting with "." are normally not shown by the ls (list) or dir command. Think of these ``dot'' files as ``hidden''. Use ls -a (list with the option "all") to see these files.
  4. ``/'' is an equivalent to DOS `` '' (root directory, meaning the parent of all other directories, or a separator between a directory name and a subdirectory or filename). For example, try cd /usr/doc.
  5. Under Linux, all directories appear under a single directory tree (there are no DOS-style drive letters). This means directories and files from all physical devices (plus network filesystems) are merged into this single-view tree.
  6. In a configuration file, a line starting with ``#'' is a comment. When changing a configuration file, don't delete old settings-comment out the original lines with ``#''. Always insert a short comment describing what you have done (for your own benefit!).
  7. Linux is inherently multi-user. Your personal settings (and all other personal files) are in your home directory which is /home/your_user_login_name. Many settings are kept in files with names starting with a dot "."so as to keep them out of your way (see point 3 above). You have to login to do anything.
  8. System-wide settings are kept in the directory /etc.
  9. Under Linux, as in any multiuser operating system, directories and files have an owner and a set of permissions. You will typically be allowed to write only to your home directory which is /home/your_user_login_name. Learn to use the file permissions else you will be constantly annoyed with Linux.
  10. Command options are introduced by a dash, "-", followed by a single letter (or - when the option is more than one letter). Thus "-" is an equivalent of DOS's switch "/". For example, try rm -help.
  11. Type command & (the command name followed by an &) to start a command in the background. This is usually the preferred way of starting a program from the X-window terminal.

Linux Essential Keyboard Shortcuts and Sanity Commands

Moving around your Linux computer

Shortcuts and commands to help you get around your computer like a pro.

<Ctrl><Alt><F1>

Switch to the first text terminals. Under Linux you can have several (6 in standard setup) terminals opened at the same time. This is a keyboard shortcut, which means: "press the control key and the alt key, hold them. Now press <F1>. Release all keys."

<Ctrl><Alt><Fn> (n=1..6)

Switch to the nth text terminal. (The same could be accomplished with the rarely used command chvt n. "chvt" stands for "change virtual terminal"). In text terminal (outside X), you can also use <Alt><Fn> (the key <Ctrl> is not needed).

tty

Print the name of the terminal in which you are typing this command. If you prefer the number of the active terminal (instead of its name), it can be printed using the command fgconsole (="foreground console").

<Ctrl><Alt><F7>

Switch to the first GUI terminal (if X-windows is running on the 7th terminal, where it typcially is).

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

Switch to the nth GUI terminal (if a GUI terminal is running on screen n-1). On default, the first X server is running on terminal 7. On default, nothing is running on terminals 8 to 12-you can start subsequent X server there.

Command-line Shortcuts

Command-line shortcuts and commands. Behold the power of the console.

. (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.

(tilde character)

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 . I keep all my files in my home directory.

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, but it still will work.

exit

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

<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!

<Tab>

Autocomplete the command if there is only one option, or else show all the available options. On newer systems you may need to press <Tab><Tab>. THIS SHORTCUT IS GREAT, it can truly save you lots of time.

<ArrowUp>

Scroll and edit the command history. Press <Enter> to execute a historical command (to save on typing). <ArrowDown> scrolls back.

<Shift><PgUp>

Scroll terminal output up. This works also at the login prompt, so you can scroll through your bootup messages. The amount/usage of your video memory determines how far back you can scroll the display. <Shift><PgDown> scrolls the terminal output down.

<Ctrl>c

Kill the current process (works mostly with small text-mode applications).

<Ctrl>d

(pressed at the beginning of an empty line) 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. See the previous command.

<Ctrl>z

Send the current process to the background.

<MiddleMouseButton>

Paste the text which is currently highlighted somewhere else. This is the normal "copy-paste" operation in Linux. It a fast and powerful supplement to the widely-known GUI "copy-paste" menu-based operation. (It works in the text terminal if you enabled "gpm" service using "setup". It also works inside any dialog boxes, etc.-really convenient!) It is best used with a Linux-ready 3-button mouse (Logitech or similar) or else set "3-mouse button emulation". The <MiddleMouseButton> is normally emulated on a 2-button mouse by pressing both mouse buttons simultaneously.

X11 (graphical-interface) Shortcuts

Shortcuts and commands than can be used when running the X-window system.

<Ctrl><Alt><+>

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 resolution determines the size of the "virtual screen"):

Modes "1024x768" "800x600" "640x480" "512x384" "480x300" "400x300" "1152x864"

Of course, first I had to configure the X server, either by using xorgconfig, xorgcfg, or manually by edition the file /etc/X11/xorg.conf, so that it supports the above resolutions (mostly the matter of uncommenting the line that defines my video chipset, and specifying the synchronization frequencies my monitor supports). See also the commands xvidtune and xvidgen.

<Ctrl><Alt><->

Change to the previous X-server resolution.

<Ctrl><Alt><Esc>

Kill the window I am going to click with my mouse pointer (the pointer changes to something like a death symbol). Similar result can be obtained with the command xkill (typed in X-terminal). Useful when an X-window program does not want to close (hangs?).

<Ctrl><Alt><BkSpc>

Kill the current X-windows server. Use if the X-windows server cannot be exited normally.

<Ctrl><Alt><d>

Toggle hide/show the desktop (great to hide the Solitaire game when your boss walks in).

<MiddleMouseButton>

Paste the text which is currently highlighted somewhere else. This is the normal "copy-paste" operation in Linux. It a fast and powerful supplement to the widely-known GUI "copy-paste" menu-based operation. (It works in the text terminal if you enabled "gpm" service using "setup". It also works inside any dialog boxes, etc.-really convenient!) It is best used with a Linux-ready 3-button mouse (Logitech or similar) or else set "3-mouse button emulation". The <MiddleMouseButton> is normally emulated on a 2-button mouse by pressing both mouse buttons simultaneously.

Non-Essential Shortcuts

This is a group of key combinations implemented at the Linux kernel level (a low level). It means, chances are these key combinations will work most of the time. The combinations are meant for debugging purposes and in an emergency (mostly developers); you should try other, safer solutions first. The key <SysRq> is also knows on PC as <PrintScreen>. The combinations can be enabled/disabled by setting the relevant kernel variable to "1" or "0", e.g. : echo "1" > /proc/sys/kernel/sysrq

<Alt><SysRq><k>

Kill all processes (including X) which are running on the currently active virtual console. This key combination is know as "secure access key" (SAK).

<Alt><SysRq><e>

Send the TERM signal to all running processes except init, asking them to exit.

<Alt><SysRq><i>

Send the KILL signal to all running processes except init. This may be more successful in killing runaway processes than the previous key combination, but it may cause some of them to exit abnormally.

<Alt><SysRq><l>

Send the KILL signal to all processes, including init. The system will not be functional.

<Alt><SysRq><s>

Run an emergency sync (cache write) on all mounted filesystems. This can prevent data loss.

<Alt><SysRq><u>

Remount all mounted filesystems as read-only. This has the same effect as the sync combination above, but with one important benefit: if the operation is successful, fsck won't have to check all filesystems after a computer hardware reset.

<Alt><SysRq><r>

Turn off keyboard raw mode. This can be useful when your X session hangs. After issueing this command you may be able to use <CTRL><ALT><DEL>.

<Alt><SysRq><b>

Reboot immediately without syncing or unmounting your disks. Your will likely end up with filesystem errors.

<Alt><SysRq><o>

Shut the system off (if configured and supported).

<Alt><SysRq><p>

Dump the current registers and flags to your console.

<Alt><SysRq><t>

Dump a list of current tasks and their information to your console.

<Alt><SysRq><m>

Dump memory info to your console.

<Alt>SysRq><digit>

The digit is '0' to '9'. Set the console log level, controlling which kernel messages will be printed to your console. For example, '0' will cause only emergency messages like PANICs or OOPSes displayed on your console.

<Alt><SysRq><h>

Display help. Also, any other unsupported <Alt><SysRq><key> combination will display the same help.

Help Commands

A simple list of commands that can give you help when you are trying to do something.

any_command -help |more

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

man topic

Display the contents of the system manual pages (help) on the topic. Press "q" to quit the viewer. Try man man if you need any advanced options. The command info topic works similar to man topic, yet it may contain more up-to-date information. Manual pages can be hard to read-they were written for UNIX programmers. Try any_command -help for a brief, easier to digest help on a command. Some programs also come with README or other info files-have a look to the directory /usr/share/doc. To display manual page from a specific section, I may use something like: man 3 exit (this displays an info on the command exit from section 3 of the manual pages) or man -a exit (this displays man pages for exit from all sections).

The man sections are:

To print a manual page, I use: man topic | col -b | lpr (the option col -b removes any backspace or other characters that could make the printed manpage difficult to read).

info topic

Display the contents of the info on a particular command. info is a replacement for man pages so it contains the most recent updates to the system documentation. Use <Space> and <BkSpace> to move around or you may get confused. Press "q" to quit. A replacement for the somewhat confusing info browsing system might be pinfo - try if you like it any better.

apropos topic

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

whatis topic

Give me a short list of commands matching my topic. whatis is similar to apropos (see the command above)-they both use the same database. But whatis searches keywords, while apropos also searches the descriptions of the keywords.

help command

Display brief info on a bash (shell) built-in command. Using help with no command prints the list of all bash built-in commands. The shortest list of bash built-in commands would probably include: alias, bg, cd, echo, exit, export, fg, help, history, jobs, kill, logout, pwd, set, source, ulimit, umask, unalias, unset.

kdehelpcenter &

(in X-terminal). Browse the whole system help using the graphical KDE help navigator. Normally, KDE help is invoked by pressing the appropriate icon on the KDE control panel. Use gnome-help-browser for the GNOME equivalent. (The older KDE versions used kdehelp& instead of kdehelpcenter&).

System Info

Commands that let you determine what is going on with your system.

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 I am 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 the operating system current date, time and timezone. For an ISO standard format, I have to use date -Iseconds. I can change the date and time to 2000-12-31 23:57 using the command date 123123572000 or using these two commands (easier to remember):

date -set 2000-12-31
date -set 23:57:00

To set the hardware (BIOS) clock from the system (Linux) clock, I can use the command (as root) setclock. The international (ISO 8601) standard format for all-numeric date/time has the form: 2001-01-31 (as in Linux default "C" localization). You can be more precise if you wish using, for example: 2001-01-31 23:59:59.999-05:00 (representing I millisecond before February 2001, in a timezone which is 5 hours behind the Universal Coordinated Time (UTC)) . The most "kosher" representation of the same point in time could be: 20010131T235959,999-0500. See the standard at ftp://ftp.qsl.net/pub/g1smd/8601v03.pdf.

time

Determine the amount of time that it takes for a process to complete + other process accounting. Don't confuse it with the date command (see previous entry). E.g. I can find out how long it takes to display a directory content using: time ls. Or I can test the time function with time sleep 10 (time the commands the does nothing for 10 seconds).

clock and hwclock

(two commands, use either). Obtain date/time from the computer hardware (real time, battery-powered) clock. You can also use one of this commands to set the hardware clock, but setclock may be simplier (see command above). Example: hwclock -systohc -utc sets the hardware clock (in UTC) from the system clock.

who

Determine the users logged on the machine.

w

Determine who is logged on the system, find out what they are doing, their processor ussage, etc. Handy security command.

rwho -a

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

finger user_name

System info about a user. Try: finger root . One can use finger with any networked computer that exposes the finger service to the world, e.g., I can do (try): finger @finger.kernel.org

last

Show listing of users last logged-in on your system. Really good idea to check it from time to time as a security measure on your system.

lastb

("=last bad") Show the last bad (unsuccessful) login attempts on my system. It did not work on my system, so got it started with: touch /var/log/btmp

"There's a good reason why /var/log/btmp isn't available on any sane set-up - it's a world-readable file containing login mistakes. Since one of the most common login mistakes is to type the password instead of the username, /var/log/btmp is a gift to crackers." (Thanks to Bruce Richardson). It appears the problem can be solved by changing the file permissions so only root can use "lastb":

chmod o-r /var/log/btmp

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 screen-full. To see what another user was doing on your system, login as "root" and inspect his/her "history". The history is kept in the file .bash_history in the user home directory (so yes, it can be modified or erased).

comman

Run the most recent command from my bash history commands that starts with the string "comman". This is usefull for re-running often the same, command which may be complicated to type. For example, I use the following:

so

and this is automatically expanded to

sol -variation freecell &

and a solitaire game with a special option is lunched for me.

uptime

Show the amount of time since the last reboot.

ps

(="print status" or "process 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 on my computer, sorted by cpu usage (top processes first). Press <Ctrl>c when done.

gtop, ktop and htop

(in X terminal) Three GUI choices for top. My favourite is gtop (comes with gnome). In KDE, ktop is also available from the "K"menu under "System"-"Task Manager".

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.

Xorg -version

Show me the version of X windows I have on my system.

cat /etc/issue

Check what distribution you are using. You can put your own message in this text file - it's displayed on login. It is more common to put your site-specific login message to the file /etc/motd ("motd"="message of the day").

free

Memory info (in kilobytes). "Shared" memory is the memory that can be shared between processes (e.g., executable code is "shared"). "Buffered" and "cashed" memory is the part that keeps parts of recently accessed files - it can be shrunk if more memory is needed by processes.

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 - shows 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. May need to find out before setting up new hardware.

cat /proc/version

Linux version and other info.

cat /proc/filesystems

Show the types of filesystems currently in use.

cat /etc/printcap |more

Show the setup of printers.

lsmod

(= "list modules". 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 (in full). Normally too much to bother.

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 (see the previous command).

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.

chage -l my_login_name

See my password expiry information.

quota

See my disk quota (the limits of disk usage).

sysctl -a |more

Display all the configurable Linux kernel parameters.

runlevel

Print the previous and current runlevel. The output "N5" means: "no previous runlevel" and "5 is the current runlevel". To change the runlevel, use "init", e.g., init 1 switches the system to a single user mode.

Runlevel is the mode of operation of Linux. Runlevel can be switched "on the fly" using the command init. For example, init 3 (as root) will switch me to runlevel 3. The following runlevels are standard:

The system default runlevel is set in the file: /etc/inittab.

sar

View information extracted the system activity log file (/var/log/sarxx where xx is the current day number). sar can extract many kinds of system statistics including CPU load averages, i/o statistics, and network trafic statistics for the current day and (usually) several days backs.


next up previous contents
Next: About this document ... Up: Linux Newbie Administrator Guide Previous: Before Linux Installation   Contents
2009-11-22