wiki:cypress/BasicLinuxComands

Version 8 (modified by cmaggio, 9 years ago) ( diff )

Linux Commands

Basic Linux Commands

Here are a few of the most common Linux commands you will use. These commands will allow you to navigate the clusters as well as create, destroy, and manipulate files and directories.

man

Display online manual pages. Most Linux commands have a manual page with detailed instructions on use. Replace <command name> below with command you would like information on.

[tulaneID@cypress1 ~]$ man <command name>

pwd

On a *nix system, directories are containers for files and objects. The pwd command lists the present working directory. This is the "where am I?" command.

[tulaneID@cypress1 ~]$ pwd
/home/tulaneID

cd

The cd command changes directory.

[tulaneID@cypress1 ~]$ cd NextDirectoryDown
[tulaneID@cypress1 ~]$ pwd
/home/tulaneID/NextDirectoryDown

As you can see, NextDirectoryDown is a subdirectory of tulaneID. And tulaneID is itself a subdirectory of home, which is a subdirectory of the root directory (/). Thus, the directories form a downward facing tree with all directories stemming from the root directory. You can move on level up in the try by typing cd ..

[tulaneID@cypress1 ~]$ pwd
/home/tulaneID/NextDirectoryDown
[tulaneID@cypress1 ~]$ cd ..
[tulaneID@cypress1 ~]$ pwd
/home/tulaneID

And you can navigate using either relative or absolute paths. That is, you can enter directory paths relative to your current location, or you can entire the entire path starting with the root directory.

[tulaneID@cypress1 ~]$ pwd
/home
[tulaneID@cypress1 ~]$ cd tulaneID/NextDirectoryDown
[tulaneID@cypress1 ~]$ pwd
/home/tulaneID/NextDirectoryDown
[tulaneID@cypress1 ~]$ cd /home
[tulaneID@cypress1 ~]$ pwd
/home

Lastly, if you ever get lost you can use the tilde (~) to return to your HOME directory.

[tulaneID@cypress1 ~]$ cd ~
[tulaneID@cypress1 ~]$ pwd
/home/tulaneID

ls

The ls command will list files in the current directory.

[tulaneID@cypress1 ~]$ ls
a.out  code.c  Makefile

Setting the -l flag will display files along with their permissions and ownership.

[tulaneID@cypress1 ~]$ ls -l
total 0
-rw-r--r-- 1 tulaneID MyGroup 0 Aug 14 10:57 a.out
-rw-r--r-- 1 tulaneID MyGroup 0 Aug 14 10:57 code.c
-rw-r--r-- 1 tulaneID MyGroup 0 Aug 14 10:57 Makefile

mkdir

Create new directory.

[tulaneID@cypress1 ~]$ cd testdir
-bash: cd: testdir: No such file or directory
[tulaneID@cypress1 ~]$ mkdir testdir
[tulaneID@cypress1 ~]$ cd testdir
[tulaneID@cypress1 ~]$ pwd
/home/tulaneID/testdir

rm

Remove files and directories. CAUTION: THERE IS NO UNDOING THIS COMMAND.

[tulaneID@cypress1 ~]$ rm testfile

If you would like to remove a directory and all of its contents use the following command:

[tulaneID@cypress1 ~]$ rm -ri testdir
rm: descend into directory `testdir'? y
rm: remove regular empty file `testdir/Makefile'? y
rm: remove regular empty file `testdir/code.c'? y
rm: remove regular empty file `testdir/a.out'? y
rm: remove directory `testdir'? y
[tulaneID@cypress1 ~]$ 

The r flag specifies to remove files/directories recursively. i specifies to prompt before deleting each file.

If you are confident with the command line and your understanding of file locations you can use the f flag instead of i to force deletion of all files without prompting:

[tulaneID@cypress1 ~]$ rm -rf testdir
[tulaneID@cypress1 ~]$ ls testdir
ls: cannot access testdir: No such file or directory

cp

Copy file to new location.

In the example below file1 already exists, and file2 will become the copy.

[tulaneID@cypress1 ~]$ cp file1 file2

To copy a directory and all of its contents:

[tulaneID@cypress1 ~]$ cp -r dir1 dir2

mv

Move a file to a new location.

[tulaneID@cypress1 ~]$ mv file1 file2
[tulaneID@cypress1 ~]$ ls file1
ls: cannot access file1: No such file or directory
[tulaneID@cypress1 ~]$ ls file2
file2

Unlike cp, the mv command does not create a second instance of the file or directory.

cat

Print the entire contents of a file (short for conCATenate).

[tulaneID@cypress1 ~]$ cat daysofweek.txt
monday
tuesday
wednesday
thursday
friday
saturday
sunday

tail

Displays lines from the end of a file. Useful for viewing recent results in an output file.

[tulaneID@cypress1 ~]$ cat animals
dog
Dog
cat
Racoon
DOG
bullfrog
Little Doggie

[tulaneID@cypress1 ~]$ tail -3 animals
DOG
bullfrog
Little Doggie

The -f flag can be used to tail a file interactively. New additions to the end of the file will be printed to your screen.

head is much like tail, except it prints from the top of a file.

[tulaneID@cypress1 ~]$ head -2 animals
dog
Dog

more

more is like cat, except it prints the file one page at a time. The spacebar is used to continue on to the next page.

Basic Linux Commands Exercise

Lets take a break from lecture to practice some of the commands we've just learned

Basic Commands Exercise

Intermediate Linux Commands

ls again

The behavior of the ls command can be modified by the addition of option flags. By default ls does not list any "hidden" files and subdirectories. To display all files and subdirectories one must add the -a flag.

[tulaneID@cypress1 ~]$ ls -l
total 4
drwxr-xr-x 2 tuhpc002 workshop 4096 Aug 18 16:17 NextDirectoryDown
[tulaneID@cypress1 ~]$ ls -al
total 56
drwx------ 6 tuhpc002 workshop 4096 Aug 18 20:03 .
drwxr-xr-x 5 root     root     4096 Aug 12 13:00 ..
-rw------- 1 tuhpc002 workshop  107 Aug 18 16:59 .bash_history
-rw-r--r-- 1 tuhpc002 workshop   18 Jul 18  2013 .bash_logout
-rw-r--r-- 1 tuhpc002 workshop  176 Jul 18  2013 .bash_profile
-rw-r--r-- 1 tuhpc002 workshop  124 Sep 30  2014 .bashrc
-rw-r--r-- 1 tuhpc002 workshop  500 May  7  2013 .emacs
drwxr-xr-x 2 tuhpc002 workshop 4096 Nov 11  2010 .gnome2
-rw-r--r-- 1 tuhpc002 workshop  171 Aug  6  2014 .kshrc
drwxr-xr-x 4 tuhpc002 workshop 4096 Aug  6  2014 .mozilla
drwxr-xr-x 2 tuhpc002 workshop 4096 Aug 18 16:17 NextDirectoryDown
drwx------ 2 tuhpc002 workshop 4096 Aug 13 16:18 .ssh
-rw------- 1 tuhpc002 workshop 1786 Aug 18 20:03 .viminfo
-rw------- 1 tuhpc002 workshop   54 Aug 13 16:18 .Xauthority
[tulaneID@cypress1 ~]$ 

quota

Display disk quotas.

The '-s' flag translates the output into a readable format. If your blocks column is equal to or greater than the quota column, you have exceeded your available disk space.

[tulaneID@cypress1 ~]$quota -s
Disk quotas for user tulaneID (uid 12345): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
master.10ge.cluster:/home
                  6459M  10000M  10000M           23260    250k    250k        
master.10ge.cluster:/share/apps
                  6459M  10000M  10000M           23260    250k    250k      

grep

Find text in a file. grep will return every line in the file that matches your search term.

[tulaneID@cypress1 ~]$ cat animals
dog
Dog
cat
Racoon
DOG
bullfrog
Little Doggie

[tulaneID@cypress1 ~]$ grep dog animals
dog

Use the -v flag to print out every line excluding those containing the search term. Notice that "dog" (lowercase) is missing from the results.

[tulaneID@cypress1 ~]$ grep -v dog animals
Dog
cat
Racoon
DOG
bullfrog
Little Doggie

The -i flag will search without case-sensitivity.

[tulaneID@cypress1 ~]$ grep -i dog animals
dog
Dog
DOG
Little Doggie

The -i and -v flag can be combined to exclude all lines containing the search term regardless of capitalization.

[tulaneID@cypress1 ~]$ grep -iv dog animals
cat
Racoon
bullfrog

Advanced Linux Commands

sed

sed is a powerful text stream editor. There are many uses of this program, but the most common is its search and replace function. Combined with regular expressions, this command can be used to seek out complex strings in your code and replace them with modifications. Please visit Sed - An Introduction and Tutorial for more information.

[tulaneID@cypress1 ~]$ cat animals
dog
Dog
cat
Racoon
DOG
bullfrog
Little Doggie

[tulaneID@cypress1 ~]$ sed 's/dog/bird/g' animals
bird
Dog
cat
Racoon
DOG
bullfrog
Little Doggie

awk

awk is a programming language used to modify files. One common use of awk is printing specific columns of a text stream or file.

[tulaneID@cypress1 ~]$ cat sample.data
0.3 0.22 1.8
3.1 2.34 3.0
0.2 1.0 3.2

[tulaneID@cypress1 ~]$ awk '{print $1 " " $3}'
0.3 1.8
3.1 3.0
0.2 3.2

The above command printed out the 1st and 3rd columns of the sample.data file. For more information on awk please visit Awk - A Tutorial and Introduction.

Note: See TracWiki for help on using the wiki.