At the end of this project, you should be able to explain the following concepts without the help of Google:
-
RTFM:
- Understanding the meaning of RTFM.
-
Shebang:
- Knowing what a shebang is.
-
Shell:
- Understanding the concept of the shell.
-
Terminal vs. Shell:
- Distinguishing between a terminal and a shell.
-
Shell Prompt:
- Understanding the shell prompt and how to use the history (the basics).
-
Commands & Built-ins:
- Knowing what the commands or built-ins
cd
,pwd
,ls
do.
- Knowing what the commands or built-ins
-
Filesystem Navigation:
- Understanding how to navigate the filesystem.
-
Special Directories:
- Knowing the purpose of the
.
and..
directories.
- Knowing the purpose of the
-
Working Directory:
- Understanding the working directory, how to print it, and how to change it.
-
Root Directory:
- Knowing what the root directory is.
-
Home Directory:
- Understanding the home directory and how to navigate there.
-
Hidden Files:
- Knowing the characteristics of hidden files and how to list them.
-
cd -
Command:- Understanding what the
cd -
command does.
- Understanding what the
-
Commands:
- Understanding what the commands
ls
,less
,file
do.
- Understanding what the commands
-
Options and Arguments:
- Knowing how to use options and arguments with commands.
-
ls Long Format:
- Understanding the
ls
long format and how to display it.
- Understanding the
-
ln Command:
- Knowing what the
ln
command does.
- Knowing what the
-
Important Directories:
- Understanding the contents of the most common/important directories.
-
Symbolic Link vs. Hard Link:
- Knowing what a symbolic link and a hard link are.
-
Difference between Hard Link and Symbolic Link:
- Understanding the difference between a hard link and a symbolic link.
-
Commands:
- Knowing what the commands
cp
,mv
,rm
,mkdir
do.
- Knowing what the commands
-
Wildcards:
- Understanding what wildcards are and how they work.
-
Using Wildcards:
- Knowing how to use wildcards.
-
Commands:
- Understanding what the commands
type
,which
,help
,man
do.
- Understanding what the commands
-
Types of Commands:
- Knowing the different kinds of commands.
-
Alias:
- Understanding what an alias is.
-
help vs. man:
- Knowing when to use the command
help
instead ofman
.
- Knowing when to use the command
-
Reading a Man Page:
- Knowing how to read a man page.
-
Man Page Sections:
- Understanding man page sections.
-
Section Numbers:
- Knowing the section numbers for User commands, System calls, and Library functions.
- Common Shortcuts:
- Knowing common shortcuts for Bash.
- LTS:
- Understanding the meaning of LTS.
You are tasked to come up with solutions for the tasks below yourself to meet the above learning objectives. You will not be able to meet the objectives of this or any following project by copying and pasting someone else’s work. You are not allowed to publish any content of this project. Any form of plagiarism is strictly forbidden and will result in removal from the program.
-
Allowed Editors:
- vi, vim, emacs.
-
Testing Environment:
- All your scripts will be tested on Ubuntu 20.04 LTS.
-
Script Length:
- All your scripts should be exactly two lines long (
$ wc -l file
should print 2).
- All your scripts should be exactly two lines long (
-
File Ending:
- All your files should end with a new line.
-
First Line:
- The first line of all your files should be exactly
#!/bin/bash
.
- The first line of all your files should be exactly
-
README.md:
- A
README.md
file at the root of the repo, containing a description of the repository.
- A
-
README.md in Project Folder:
- A
README.md
file, at the root of the folder of this project, describing what each script is doing.
- A
-
Restrictions:
- You are not allowed to use backticks,
&&
,||
or;
.
- You are not allowed to use backticks,
-
Executable Scripts:
- All your scripts must be executable. To make your file executable, use the
chmod
command:chmod u+x file
.
- All your scripts must be executable. To make your file executable, use the
julien@ubuntu:/tmp$ wc -l 12-file_type
2 12-file_type
julien@ubuntu:/tmp$ head -n 1 12-file_type
#!/bin/bash
julien@ubuntu:/tmp$