sudo: Executing Commands with Elevated Privileges
Most of the following commands will need to be prefaced with the
sudo
command. This elevates privileges to the root-user administrative level
temporarily, which is necessary when working with directories or files
not owned by your user account. When using sudo you will be prompted for
your password. Only users with sudo (administrative) privileges will be
able to use this command. You should
never use normal sudo to start graphical applications as root. (Please see
RootSudo for more information on using sudo correctly.)
File & Directory Commands
The tilde (~) symbol stands for your home directory. If you are user, then the tilde (~) stands for /home/user
pwd: The pwd command will allow you to know in which directory you're located (pwd stands for "print working directory"). Example: "pwd"
in the Desktop directory will show "~/Desktop". Note that the GNOME
Terminal also displays this information in the title bar of its window. A
useful gnemonic is "present working directory."
ls: The ls
command will show you ('list') the files in your current directory.
Used with certain options, you can see sizes of files, when files were
made, and permissions of files. Example: "ls ~" will show you the files that are in your home directory.
cd: The cd
command will allow you to change directories. When you open a terminal
you will be in your home directory. To move around the file system you
will use cd. Examples:
To navigate into the root directory, use "cd /"
To navigate to your home directory, use "cd" or "cd ~"
To navigate up one directory level, use "cd .."
To navigate to the previous directory (or back), use "cd -"
To
navigate through multiple levels of directory at once, specify the full
directory path that you want to go to. For example, use, "cd /var/www" to go directly to the /www subdirectory of /var/. As another example, "cd ~/Desktop" will move you to the Desktop subdirectory inside your home directory.
cp: The cp command will make a copy of a file for you. Example: "cp file foo"
will make an exact copy of "file" and name it "foo", but the file
"file" will still be there. If you are copying a directory, you must use
"cp -r directory foo" (copy recursively). (To
understand what "recursively" means, think of it this way: to copy the
directory and all its files and subdirectories and all their files a
and subdirectories of the subdirectories and all their files, and on and on, "recursively")
mv: The mv command will move a file to a different location or will rename a file. Examples are as follows: "mv file foo" will rename the file "file" to "foo". "mv foo ~/Desktop"
will move the file "foo" to your Desktop directory, but it will not
rename it. You must specify a new file name to rename a file.
- To save on typing, you can substitute '~' in place of the home directory.
Note that if you are using mv with sudo
you can use the ~ shortcut, because the terminal expands the ~ to your
home directory. However, when you open a root shell with sudo -i or sudo -s, ~ will refer to the root account's home directory, not your own.
rm: Use this command to remove or delete a file in your directory.
rmdir: The rmdir command will delete an empty directory. To delete a directory and all of its contents recursively, use rm -r instead.
mkdir: The mkdir command will allow you to create directories. Example: "mkdir music" will create a directory called "music".
man: The man command is used to show you the manual of other commands. Try "man man" to get the man page for man itself. See the "Man & Getting Help" section down the page for more information.
sudo: The
sudo command is used to perform file operations on files that the
Root User
would only be allowed to change. An example would be trying to move one
of your documents that another user accidentally moved to
/ back to your
documents directory. Normally, to move the file, you would type
mv /mydoc.odt ~/Documents/mydoc.odt, but you are not allowed to modify files outside of your home directory. To get around this, you would type
sudo mv /mydoc.odt ~/Documents/mydoc.odt. This will successfully move the file back to its correct location, provided that you are not a
standard user, who has less (administrative) ability than an
administrator. Be aware, though, that by using the
sudo command, you need to be
extra careful. It is easier to
damage your system by using the
sudo command. For more information about the
sudo command, click
here.
Running a File Within a Directory
So you've decided to run a file using the command-line? Well... there's a command for that too!
./filename.extension
After
navigating to the file's directory, this command will enable any Ubuntu
user to run files compiled via GCC or any other programming language.
Although the example above indicates a file name extension, please
notice that, differently from some other operating systems, Ubuntu (and
other Linux-based systems) do not care about file extensions (they can
be anything, or nothing).
Keep in mind that the 'extension' will
vary depending upon the language the source code is written in. Also,
it is not possible, for compiled languages (like C and C++) to run the
source code directly -- the file must be compiled first, which means it will be translated from a human-readable programming language to something the computer can understand.
Some possible extensions: ".c" for C source, ".cpp" for C++, ".rb" for
Ruby, ".py" for Python, etc. Also, remember that (in the case of
interpreted languages like Ruby & Python)
you must have a version of that language installed on Ubuntu before trying to run files written with it.
Finally, the file will only be executed if the file permissions are correct -- please see the
FilePermissions help page for details.
df: The df command displays filesystem disk space usage for all mounted partitions. "df -h" is probably the most useful - it uses megabytes (M) and gigabytes (G) instead of blocks to report. (-h means "human-readable")
du: The du
command displays the disk usage for a directory. It can either display
the space used for all subdirectories or the total for the directory you
run it on. Example:
user@users-desktop:~$ du /media/floppy
1032 /media/floppy/files
1036 /media/floppy/
user@users-desktop:~$ du -sh /media/floppy
1.1M /media/floppy/
free: The free command displays the amount of free and used memory in the system. "free -m" will give the information using megabytes, which is probably most useful for current computers.
top: The top
('table of processes') command displays information on your Linux
system, running processes and system resources, including CPU, RAM &
swap usage and total number of tasks being run. To exit top, press "q".
uname -a: The uname command with the -a
option prints all system information, including machine name, kernel
name & version, and a few other details. Most useful for checking
which kernel you're using.
lsb_release -a: The lsb_release command with the -a option prints version information for the Linux release you're running, for example:
user@computer:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.10
Release: 11.10
Codename: oneiric
ip addr reports on your system's network interfaces.
Adding A New User
Options
The default behaviour for a command may usually be modified by adding a --option to the command. The ls command for example has an -s option so that "ls -s" will include file sizes in the listing. There is also a -h option to get those sizes in a "human readable" format.
Options can be grouped in clusters so "ls -sh" is exactly the same command as "ls -s -h". Most options have a long version, prefixed with two dashes instead of one, so even "ls --size --human-readable" is the same command.
"Man" and getting help
man command,
info command and
command --help are the most important tools at the command line.
Nearly every command and application in Linux will have a man (manual) file, so finding them is as simple as typing "man "command"" to bring up a longer manual entry for the specified command. For example, "man mv" will bring up the mv (move) manual.
Move up and down the man file with the arrow keys, and quit back to the command prompt with "q".
"man man" will bring up the manual entry for the man command, which is a good place to start!
"man intro"
is especially useful - it displays the "Introduction to user commands"
which is a well-written, fairly brief introduction to the Linux command
line.
There are also info pages, which are generally more in-depth than man pages. Try "info info" for the introduction to info pages.
Some software developers prefer info to man (for instance, GNU developers), so if you find a very widely used command or app that doesn't have a man page, it's worth checking for an info page.
Virtually all commands understand the -h (or --help)
option which will produce a short usage description of the command and
it's options, then exit back to the command prompt. Try "man -h" or "man --help" to see this in action.
Caveat: It's possible (but rare) that a program doesn't understand the -h option to mean help. For this reason, check for a man or info page first, and try the long option --help before -h.
Searching for man files
If you aren't sure which command or application you need to use, you can try searching the man files.
man -k foo will search the man files for foo. Try "man -k nautilus" to see how this works.
man -f foo searches only the titles of your system's man files. Try "man -f gnome", for example.