Goals: Introduction to the Linux File System, its structure and how to navigate around it, as well as creating, moving and copying files and folders.
What the file system is, and a typical organization / hierarchy.
Some high-level comparison to that of Windows.
Absolute vs relative paths.
Commands:
pwd
,cd
,ls
,mv
,cp
,mkdir
,rmdir
,rm
History:
history
File Ownership and Permissions.
Some high-level comparison to that of Windows
| Windows | Linux |
Structure | Uses (data) drives C:, D:, E:… | Uses a tree hierarchy starting at “ Known as the root directory. |
|
|
|
Syntax | Uses the back slash: “\” | Uses the forward slash: “/” |
Home folder |
|
|
Application Install |
|
|
Folder and Filenames | Case insensitive: FoLdEr = FOLDER | Case sensitive: FoLdEr ≠ FOLDER |
|
| Wherever you are within the hierarchy is known as your current working directory (cwd) |
Linux OS General Structure
Linux Hierarchical Structure: Example
Absolute Path: /home/arcc-t05/
Path starts with a “/”
Absolute Path: /home/arcc-t05/workshop/projects/p01/etc/
Relative Path: workshop/projects/p01/etc/
Path does not start with a “/”
Relative Path: p01/etc/
Ex: Starting at / (root), what is the absolute path to the bits folder?
Answer:
Ex: Starting in the home folder what is the relative path to the Jan folder?
Answer:
If you are following along as part of a scheduled training or bootcamp, please replace the arccanetrain directory with the project directory you’ve been provided for your specific training/bootcamp. If you are training independently, please use your own project folder, but contact arcc-help@uwyo.edu if you would like a copy of the files and directories used in our examples.
Commands:
Used to perform certain operating system tasks through the Command Line Interface, as directed by the interpreter (as opposed to a Graphical Interface Interpreter we would usually use).
<command --help>
Command | Description |
pwd | pwd: pwd [-LP] Print the name of the current working directory. |
cd | cd: cd [-L|[-P [-e]] [-@]] [dir] Change the shell working directory. |
ls | Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default) |
mkdir | Usage: mkdir [OPTION]... DIRECTORY... Create the DIRECTORY(ies), if they do not already exist. |
mv | Usage: mv [OPTION]... [-T] SOURCE DEST or: mv [OPTION]... SOURCE... DIRECTORY or: mv [OPTION]... -t DIRECTORY SOURCE... Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY |
Commands: <command --help>
Command | Description |
cp | Usage: cp [OPTION]... [-T] SOURCE DEST or: cp [OPTION]... SOURCE... DIRECTORY or: cp [OPTION]... -t DIRECTORY SOURCE... Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. |
rmdir | Usage: rmdir [OPTION]... DIRECTORY... Remove the DIRECTORY(ies), if they are empty. |
rm | Usage: rm [OPTION]... [FILE]... Remove (unlink) the FILE(s). |
pwd: Print the name of the current working directory
If you get lost, then you can jump back to the home folder.
[arcc-t05@blog1 ???]$ cd [arcc-t05@blog1 ~]$
The ~
“tilda” character represents your home directory.
Use the pwd
to confirm your current working directory, which after the above command will be home.
[arcc-t05@blog1 ~]$ pwd /home/arcc-t05
cd: Change the shell working directory
Start by navigating back to home.
[arcc-t05@blog1 ???]$ cd [arcc-t05@blog1 ~]$
Move up one level, into the current folder’s parent.
[arcc-t05@blog1 ~]$ cd .. [arcc-t05@blog1 ~]$ pwd /home
Move up another level into the root folder.
[arcc-t05@blog1 home]$ cd .. [arcc-t05@blog1 /]$ pwd /
cd: Change working directory (cont)
Navigate into the opt
folder.
[arcc-t05@blog1 /]$ cd opt [arcc-t05@blog1 opt]$ pwd /opt
Question: Did we define an an absolute or relative path?
Answer:
Did we define an an absolute or relative path?
cd: Change the shell working directory
First reset back to home.
[arcc-t05@blog1 opt]$ cd [arcc-t05@blog1 ~]$
Navigate into the /usr/include/asm
folder.
[arcc-t05@blog1 ~]$ cd /usr/include/asm [arcc-t05@blog1 asm]$ pwd /usr/include/asm
Question: Did we define an absolute or relative path?
Answer:
Navigate up two levels:
[arcc-t05@blog1 asm]$ cd ../.. [arcc-t05@blog1 usr]$ pwd /usr
Navigate back home:
[arcc-t05@blog1 usr]$ cd [arcc-t05@blog1 ~]
ls: List information about the FILEs (cwd by default)
Take a look at the ls
command and some of the options it provides.
List files in the user’s home folder.
[arcc-t05@blog1 ~]$ ls
List long format that includes ownership and permission details.
[arcc-t05@blog1 ~]$ ls -l
List all files, including hidden files and folders start with “.”.
Notice how ‘short-name’ options are grouped.
[arcc-t05@blog1 ~]$ ls –a
List all files with long format.
[arcc-t05@blog1 ~]$ ls –al
List all files with long format, in reverse order.
[arcc-t05@blog1 ~]$ ls –alr
List all files with long format, in reverse order, in human readable form.
arcc-t05@blog1 ~]$ ls –alrh
Note how we can use multiple options together.
Demonstrate how to ls
to a folder outside cwd using an absolute path.
# Demonstrate how to ‘ls’ to a folder outside cwd [~]$ ls /project/arccanetrain/arcc-t01 folder01 myfile.txt
mkdir: Create the DIRECTORY(ies), if they do not already exist
$ cd [~]$ ls Desktop Documents Downloads [~]$ mkdir folder01 [~]$ ls Desktop Documents Downloads folder01 [~]$ mkdir folder01 mkdir: cannot create directory ‘folder01’: File exists [~]$ cd folder01/ [folder01]$ pwd /home/arcc-t05/folder01
If a folder already exists, you can not make it again.
mkdir: Create the DIRECTORY(ies), if they do not already exist
[folder01]$ mkdir folder02 folder03 [folder01]$ ls folder02 folder03 [folder01]$ cd folder02/ [folder02]$ pwd /home/arcc-t05/folder01/folder02 [folder02]$ cd ../.. [~]$ pwd /home/arcc-t05
mv: Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY
$ cd # Create an empty file. [~]$ touch myfil.txt [~]$ ls Desktop Documents Downloads folder01 myfil.txt # Rename the file ‘myfil.txt’ to ‘myfile.txt’: [~]$ mv myfil.txt myfile.txt [~]$ ls Desktop Documents Downloads folder01 myfile.txt
Notice how we have moved the file from one name to a new name - essentially renaming it.
mv: Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY
# Move the file ‘myfile.txt’ into the directory ‘folder01’ [~]$ mv myfile.txt folder01/ [~]$ ls Desktop Documents Downloads folder01 # Demonstrate how to ‘ls’ what is in a relative folder. [~]$ ls folder01/ folder02 myfile.txt
cp: Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY
# Navigate back to home: $ cd # Use the touch command to create an empty file. [~]$ touch myfile02.txt [~]$ ls Desktop Documents Downloads folder01 myfile02.txt # Copy (duplicate) a file. [~]$ cp myfile02.txt myfile02b.txt [~]$ ls Desktop Documents Downloads folder01 myfile02b.txt myfile02.txt # Copy a file into an existing folder. [~]$ cp myfile02b.txt folder01/ [~]$ ls folder01/ folder02 myfile02b.txt myfile.txt
cp: folders
[~]$ cp folder01 cp: missing destination file operand after 'folder01' Try 'cp --help' for more information. [~]$ ls folder01 folder02 myfile02b.txt myfile.txt [~]$ cp folder01 folder03 cp: -r not specified; omitting directory 'folder01’
You can not use the cp
command with no options to copy a folder that has files within it.
Look at the options available. cp -h
In this specifically -r
that recursively copy a folder and all its contents.
[~]$ cp –r folder01 folder03 [~]$ ls Desktop Documents Downloads folder01 folder03 myfile02b.txt myfile02.txt [~]$ ls folder03 folder02 myfile02b.txt myfile.txt
rmdir: Remove the DIRECTORY(ies), if they are empty
[~]$ ls Desktop Documents Downloads folder01 folder03 myfile02b.txt myfile02.txt [~]$ mkdir folder04 [~]$ ls Desktop Documents Downloads folder01 folder03 folder04 myfile02b.txt myfile02.txt # Can remove folder04 since it is empty. [~]$ rmdir folder04 [~]$ ls Desktop Documents Downloads folder01 folder03 myfile02b.txt myfile02.txt [~]$ rmdir folder03/ rmdir: failed to remove 'folder03/': Directory not empty
You can not use rmdir
to remove a directory that has files still within it. The folder must be empty.
rm: Remove (unlink) the FILE(s)
[~]$ cd [~]$ cd folder03 [folder03]$ ls folder02 myfile02b.txt myfile.txt [folder03]$ ls folder02/ [folder03]$ # ‘folder02’ is empty. [folder03]$ rmdir folder02/ [folder03]$ ls myfile02b.txt myfile.txt [folder03]$ rm myfile.txt [folder03]$ ls myfile02b.txt [folder03]$ rm myfile02b.txt
rm: Remove (unlink) the FILE(s)
[folder03]$ ls [folder03]$ # ‘folder03’ is now empty. [folder03]$ cd .. [~]$ rmdir folder03/ [~]$ ls Desktop Documents Downloads folder01 myfile02b.txt myfile02.txt # This has taken a lot of individual steps. # Can we do this quicker?
rm: folders and file(s)
[~]$ cd [~]$ rm folder01/ rm: cannot remove 'folder01/': Is a directory
You can not use the rm
command with no options to remove a folder.
[~]$ rm --help Usage: rm [OPTION]... [FILE]... Remove (unlink) the FILE(s). ... -r, -R, --recursive remove directories and their contents recursively ...
Using help we found we can use the -r
option to remove a folder and all its contents.
[~]$ rm -r folder01/ [~]$ ls Desktop Documents Downloads myfile02b.txt myfile02.txt # Can remove multiple files. [~]$ rm myfile02b.txt myfile02.txt [~]$ ls Desktop Documents Downloads # Alternatively we could have removed above 2 files with: rm myfile* # * is a wildcard, so the rm myfile* will remove all starting with the characters "myfile"
rm: WARNING
From the command-line there is NO trash bin.
Using rm
/rmdir
is FINAL!
history
[~]$ history --help history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] Display or manipulate the history list. ... [~]$ history ... 219 rm -f folder01/ 220 rm -r folder01/ 221 ls 222 rm myfile02b.txt myfile02.txt 223 ls 224 history # Repeat command ‘223’ [arcc-t05@blog1 ~]$ !223 ls Desktop Documents Downloads
Exercises
Questions:
How can you return to your home folder?
What command do you use if you’ve forgotten where you are in the folder hierarchy?
How can you list what is in a folder as well as any subfolders?
Go back through the command related slides are try for yourself.
Answers
1: How can you return to your home folder?
2: What command do you use if you’ve forgotten where you are in the folder hierarchy?
3: How can you list what is a folder as well as any subfolders?
File Ownership and Permissions
What does the output of ls –l
mean?
[arcc-t05@blog1 ~]$ cd /project/arccanetrain/intro_to_linux [arcc-t05@blog1 intro_to_linux]$ ls -al total 54 drwxrwsr-x 4 salexan5 arccanetrain 4096 Oct 6 08:09 . drwxrws--- 40 root arccanetrain 4096 Oct 6 08:09 .. drwxrwsr-x 2 salexan5 arccanetrain 4096 Oct 5 11:19 clusters drwxrwsr-x 6 salexan5 arccanetrain 4096 Oct 5 14:56 data -rw-rw-r-- 1 salexan5 arccanetrain 874 Oct 5 15:30 fruits.txt -rw-rw-r-- 1 salexan5 arccanetrain 34472 Oct 5 10:57 software.csv -rw-rw-r-- 1 salexan5 arccanetrain 1603 Oct 6 08:08 vegatables.txt -rw-rw-r-- 1 arcc-t05 arccanetrain 26 Oct 5 07:20 workshop_all.txt -rw------- 1 arcc-t05 arccanetrain 23 Oct 5 07:20 workshop_me.txt
The first character on the left indicates if it is a directory “d” or a file “-”.
drwxrwsr-x clusters # A folder. -rw-rw-r-- workshop_all.txt # A file.
File Ownership and Permissions
-rw-rw-r-- 1 arcc-t05 arccanetrain 26 Oct 5 07:20 workshop_all.txt
User: This is the owner of the file/folder. By default, the person who created it becomes its owner.
arcc-t05
is the owner
Group: A group is a collection of users. The primary purpose of the group is to define a set of privileges for a given resource that can be shared among the users within the group.
arccanetrain
is the group.All the
arcc-txx
users have been setup to be within this group.
Other: This is any other user who has access to the file/folder. This person has neither created the file, nor do they belong to a user group.
Permission Denied
This demonstrates how permissions work. Bare in mind this assumes you’re logged in as user arcc-t05
.
[]$ cd /project/arccanetrain/ []$ ls -al ... # drwxr-sr-x 2 arcc-t01 arccanetrain 4096 May 16 16:26 arcc-t01 ...
The middle set of permissions is “drwxr-sr-x” means no one other than arcc-t01
has permission to write within this folder.
[arccanetrain]$ cd arcc-t01/ # Can arcc-t05 create (write) a file within this folder? [arcc-t01]$ touch text.txt touch: cannot touch 'text.txt': Permission denied
No one, other than arcc-t01
can create (write) a file within this folder.
If we change directories, and go to /project/arccanetrain/intro_to_linux, what permissions do the contents of this directory have?
[arcc-t01]$ cd ../intro_to_linux [arcc-t01]$ ls -al # -rw-rw-r-- 1 arcc-t05 arccanetrain 26 Oct 5 07:20 workshop_all.txt
Any user within the arccanetrain
group can read/write the file workshop_all.txt
.
Everybody can read it. Do you want anyone outside of this project to be able to read this file?
[] ls -al # -rw------- 1 arcc-t05 arccanetrain 23 Oct 5 07:20 workshop_me.txt [intro_to_linux]$ cat workshop_me.txt cat: workshop_me.txt: Permission denied
Only user arcc-t05
can read/write this file. No one else, not even anyone within the arccanetrain
group, can view this file.
Exercise: Try it
[]$ cd /project/arccanetrain/ [arccanetrain]$ cd arcc-t05 [arcc-t05]$ touch test.txt # Do you get a “Permission denied”? # Navigate into the intro_to_linux folder. [arcc-t05]$ cd ../intro_to_linux [intro_to_linux]$ cat workshop_all.txt Everybody can read this. [intro_to_linux]$ cat workshop_me.txt # Do you get a “Permission denied”? # Can you cd into the /opt folder? # Justify your answer. # Can you cd into the /root folder? # Justify your answer.
Answers
Can you cd into the /opt
folder?
Can you cd into the /root folder?
Next Steps
Previous | Workshop Home | Next |