Performance Checklist
In this lab, you will efficiently create, move, and remove files and directories by using the shell and a variety of file name matching techniques.
Outcomes
You should be able to:
Use wildcards to locate and manipulate files.
Log in to workstation as student using student as the password.
On workstation, run the lab files-review start command.
The command runs a start script that determines if the serverb machine is reachable on the network.
[student@workstation ~]$lab files-review start
Use the ssh command to log in to serverb as the student user.
The systems are configured to use SSH keys for authentication, and therefore a password is not required.
Before you create project files, use the mkdir command with brace expansion to create empty project planning documents in the /home/student/Documents/project_plans directory.
(Hint: if ~/Documents does not exist, the -p option for the mkdir command will create it.)
Create two empty files in the ~/Documents/project_plans directory: season1_project_plan.odf and season2_project_plan.odf.
[student@serverb ~]$mkdir -p ~/Documents/project_plans[student@serverb ~]$touch \~/Documents/project_plans/{season1,season2}_project_plan.odf[student@serverb ~]$ls -lR Documents/Documents/: total 0 drwxrwxr-x. 2 student student 70 Jan 31 18:20 project_plans Documents/project_plans: total 0 -rw-rw-r--. 1 student student 0 Jan 31 18:20 season1_project_plan.odf -rw-rw-r--. 1 student student 0 Jan 31 18:20 season2_project_plan.odf
Create sets of empty practice files to use in this lab. If you do not immediately recognize the intended shell expansion shortcut, use the solution to learn and practice. Use shell tab completion to locate file path names easily.
Create a total of 12 files with names tv_seasonX_episodeY.ogg.
Replace X with the season number and Y
with that season's episode, for two seasons of six episodes each.
[student@serverb ~]$touch tv_season{1..2}_episode{1..6}.ogg[student@serverb ~]$ls tv*tv_season1_episode1.ogg tv_season1_episode5.ogg tv_season2_episode3.ogg tv_season1_episode2.ogg tv_season1_episode6.ogg tv_season2_episode4.ogg tv_season1_episode3.ogg tv_season2_episode1.ogg tv_season2_episode5.ogg tv_season1_episode4.ogg tv_season2_episode2.ogg tv_season2_episode6.ogg
As the author of a successful series of mystery novels, your next bestseller's chapters are being edited for publishing.
Create a total of eight files with names mystery_chapterX.odf.
Replace X with the numbers 1 through 8.
Use a single command to create two subdirectories named season1 and season2 under the Videos directory, to organize the TV episodes.
Move the appropriate TV episodes into the season subdirectories. Use only two commands, specifying destinations using relative syntax.
[student@serverb ~]$mv tv_season1* Videos/season1[student@serverb ~]$mv tv_season2* Videos/season2[student@serverb ~]$ls -R VideosVideos: season1 season2 Videos/season1: tv_season1_episode1.ogg tv_season1_episode3.ogg tv_season1_episode5.ogg tv_season1_episode2.ogg tv_season1_episode4.ogg tv_season1_episode6.ogg Videos/season2: tv_season2_episode1.ogg tv_season2_episode3.ogg tv_season2_episode5.ogg tv_season2_episode2.ogg tv_season2_episode4.ogg tv_season2_episode6.ogg
Create a 2-level directory hierarchy with a single command to organize the mystery book chapters.
Create my_bestseller under the Documents directory, and chapters under the new my_bestseller directory.
Create three more subdirectories directly under the my_bestseller directory using a single command.
Name these subdirectories editor, changes, and vacation.
The -p option (create parents) is not needed because the my_bestseller parent directory already exists.
[student@serverb ~]$mkdir Documents/my_bestseller/{editor,changes,vacation}[student@serverb ~]$ls -R DocumentsDocuments: my_bestseller project_plans Documents/my_bestseller: changes chapters editor vacation Documents/my_bestseller/changes: Documents/my_bestseller/chapters: Documents/my_bestseller/editor: Documents/my_bestseller/vacation: Documents/project_plans: season1_project_plan.odf season2_project_plan.odf
Change to the chapters directory.
Using the tilde (~) home directory shortcut to specify the source files, move all book chapters to the chapters directory, which is now your current directory.
What is the simplest syntax to specify the destination directory?
[student@serverb ~]$cd Documents/my_bestseller/chapters[student@serverb chapters]$mv ~/mystery_chapter* .[student@serverb chapters]$lsmystery_chapter1.odf mystery_chapter4.odf mystery_chapter7.odf mystery_chapter2.odf mystery_chapter5.odf mystery_chapter8.odf mystery_chapter3.odf mystery_chapter6.odf
You sent the first two chapters to the editor for review.
Move only those two chapters to the editor directory to avoid modifying them during the review.
Starting from the chapters subdirectory, use brace expansion with a range to specify the chapter file names to move and a relative path for the destination directory.
[student@serverb chapters]$mv mystery_chapter{1..2}.odf ../editor[student@serverb chapters]$lsmystery_chapter3.odf mystery_chapter5.odf mystery_chapter7.odf mystery_chapter4.odf mystery_chapter6.odf mystery_chapter8.odf[student@serverb chapters]$ls ../editormystery_chapter1.odf mystery_chapter2.odf
While on vacation you intend to write chapters 7 and 8.
Use a single command to move the files from the chapters directory to the vacation directory.
Specify the chapter file names using brace expansion with a list of strings and without using wildcard characters.
Change your working directory to ~/Videos/season2, and then copy the first episode of the season to the vacation directory.
Use a single cd command to change from your working directory to the ~/Documents/my_bestseller/vacation directory.
List its files.
Use the previous working directory argument to return to the season2 directory.
(This will succeed if the last directory change with the cd command was accomplished with one command rather than several cd commands.)
From the season2 directory, copy the episode 2 file into the vacation directory.
Use the shortcut again to return to the vacation directory.
[student@serverb season2]$cd ~/Documents/my_bestseller/vacation[student@serverb vacation]$lsmystery_chapter7.odf mystery_chapter8.odf tv_season2_episode1.ogg[student@serverb vacation]$cd -/home/ec2-user/Videos/season2[student@serverb season2]$cp *episode2.ogg ~/Documents/my_bestseller/vacation[student@serverb vacation]$cd -/home/ec2-user/Documents/my_bestseller/vacation[student@serverb vacation]$lsmystery_chapter7.odf tv_season2_episode1.ogg mystery_chapter8.odf tv_season2_episode2.ogg
The authors of chapters 5 and 6 want to experiment with possible changes.
Copy both files from the ~/Documents/my_bestseller/chapters directory to the ~/Documents/my_bestseller/changes directory to prevent these changes from modifying original files.
Navigate to the ~/Documents/my_bestseller directory.
Use square-bracket pattern matching to specify which chapter numbers to match in the filename argument of the cp command.
[student@serverb vacation]$cd ~/Documents/my_bestseller[student@serverb my_bestseller]$cp chapters/mystery_chapter[56].odf changes[student@serverb my_bestseller]$ls chaptersmystery_chapter3.odf mystery_chapter5.odf mystery_chapter4.odf mystery_chapter6.odf[student@serverb my_bestseller]$ls changesmystery_chapter5.odf mystery_chapter6.odf
Change your current directory to the changes directory.
Use the date +%F command with command substitution to copy mystery_chapter5.odf to a new file which includes the full date.
The name should have the form mystery_chapter5_YYYY-MM-DD.odf.
Make another copy of mystery_chapter5.odf, appending the current time stamp (as the number of seconds since the epoch, 1970-01-01 00:00 UTC) to ensure a unique file name.
Use command substitution with the date +%s command to accomplish this.
[student@serverb my_bestseller]$cd changes[student@serverb changes]$cp mystery_chapter5.odf \mystery_chapter5_$(date +%F).odf[student@serverb changes]$cp mystery_chapter5.odf \mystery_chapter5_$(date +%s).odf[student@serverb changes]$lsmystery_chapter5_1492545076.odf mystery_chapter5.odf mystery_chapter5_2017-04-18.odf mystery_chapter6.odf
After further review, you decide that the plot changes are not necessary.
Delete the changes directory.
If necessary, navigate to the changes directory and delete all the files within the directory.
You cannot delete a directory while it is the current working directory.
Change to the parent directory of the changes directory.
Try to delete the empty directory using the rm command without the -r recursive option.
This attempt should fail.
Finally, use the rmdir command to delete the empty directory, which will succeed.
When the vacation is over, the vacation directory is no longer needed.
Delete it using the rm command with the recursive option.
When finished, return to the student user's home directory.
Create a hard link to the ~/Documents/project_plans/season2_project_plan.odf file named ~/Documents/backups/season2_project_plan.odf.back.
A hard link will protect against accidental deletion of the original file and will keep the backup file updated as changes are made to the original.
Notice that the link count is 2 for both season2_project_plan.odf.back and season2_project_plan.odf files.
[student@serverb ~]$mkdir ~/Documents/backups[student@serverb ~]$ln ~/Documents/project_plans/season2_project_plan.odf \~/Documents/backups/season2_project_plan.odf.back[student@serverb ~]$ls -lR ~/Documents//home/student/Documents/: total 0 drwxrwxr-x. 2 student student 43 Jan 31 18:59 backups drwxrwxr-x. 4 student student 36 Jan 31 19:42 my_bestseller drwxrwxr-x. 2 student student 70 Jan 31 18:20 project_plans /home/student/Documents/backups: total 4-rw-rw-r--. 2 student student 0 Jan 31 19:05 season2_project_plan.odf.back/home/student/Documents/my_bestseller: total 0 drwxrwxr-x. 2 student student 118 Jan 31 19:39 chapters drwxrwxr-x. 2 student student 62 Jan 31 19:38 editor /home/student/Documents/my_bestseller/chapters: total 0 -rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter3.odf -rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter4.odf -rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter5.odf -rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter6.odf /home/student/Documents/my_bestseller/editor: total 0 -rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter1.odf -rw-rw-r--. 1 student student 0 Jan 31 19:18 mystery_chapter2.odf /home/student/Documents/project_plans: total 4 -rw-rw-r--. 1 student student 0 Jan 31 18:20 season1_project_plan.odf-rw-rw-r--. 2 student student 0 Jan 31 19:05 season2_project_plan.odf
Exit from serverb.
[student@serverb ~]$exitlogout Connection to serverb closed. [student@workstation ~]$