online exam for software development tools (course material attached, with 2 hours allocated for the assessment). Would be wanting approximately 30 minutes prior to get set up with the expert to avoid wasting time, 2.5 hours work in total.
I will be using my own computer to sign in so would be looking to do a screenshare through something like Webex or Zoom on my phone or another laptop to send questions through efficiently
There is a two day window in which the exam must be completed, so another suitable time within the "CSC2408 online exam time" screenshot would also be acceptable so long as it works for both of us and is prior to the final deadline of 2:30PM AEST (GMT+10)
the expert will need to be fluent in English need a stable internet connection to ensure there are no issues during the timed exam
CSC2408 Software Development Tools Practicals_ Prac 01 - Command Line and the Shell.pdf 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 1/12 CSC2408 Software Development Tools Practicals This Moodle Book contains the practicals for the course. 1. Prac 01 - Command Line and the Shell 1.1 What is the Shell? The shell is a program that takes keyboard commands and passes them to the operating system to carry out. Almost all Linux distributions supply a shell program from the GNU Project called bash. When using a graphic user interface (GUI), we need another program to interact with the shell. This is called a terminal emulator, as it emulates in software the way a physical terminal would communicate in the past. There are many graphical desktop environments available on Linux, including MATE, GNOME, KDE etc. The CSC2408 Course VM uses MATE. As their terminal emulators, KDE uses konsole, MATE uses MATE Terminal, and GNOME uses gnome-terminal. A number of other terminal emulators are available for Linux, even within a single Desktop Environment, but they all do basically the same things: give us access to the shell. USQStudyDesk: Dashboard / My courses / CSC2408_2021_1 / CSC2408 Software Development Tools Practicals Software Development Tools https://www.usq.edu.au/ https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353&chapterid=167777 https://usqstudydesk.usq.edu.au/m2/my/ https://usqstudydesk.usq.edu.au/m2/course/view.php?id=20507 https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 2/12 While a shell manages to look both old-fashioned and modern-hacker-wizard tool at the same time, it is difficult to overstate the importance of typing in commands rather than pointing a mouse and clicking on widgets. But as with most things in life, it is not a black- or-white situation: both approaches have strengths and weaknesses. Suffice it to note that most systems now offer both, with Microsoft Windows having developed its PowerShell to offer the same power as the traditional Linux shell. 1.2 Why use the shell in this course? The shell is also called Command Line Interface (CLI) between users and the Kernel. For Unix users, CLI might have been the only interface to interact with the kernel; although Linux does provide users with many GUI interfaces. Some downsides of GUIs are that they are inefficient, bad at automation, often inconsistent and transient, and utilise CPU and memory that could be used elsewhere. Additionally, in today's world a system administrator working remotely may only have access to a CLI. 1.3 Log-in and launch the terminal emulator Log in to your Course Virtual Machine via labs.azure.com. Alternatively you can use one of the USQ Linux lab machines on campus, or use a local computer with Linux (standalone or as a local VM). http://labs.azure.com/ 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 3/12 Follow the instructions on the Sciences VM Portal StudyDesk page. For most exercises a simple text-only SSH connection is sufficient, but if you want to use a graphical desktop terminal emulator (as shown in the screenshot above) then you'll need to follow the instructions on using X2Go Client to connect. In this course, when you see a command like this: $ date the $ represents the command line prompt. The prompt is a piece of text which indicates the shell is waiting for input. Your command line prompt may be more complicated, and show more information. You do not type the command line prompt (the $), just the command. Try some simple commands and see what they do: $ date $ df $ cal $ free Try the exceptionally useful man command. For example, do $ man df The man (for 'manual') pages can be very long and complicated, but they provide detailed help with any command that can be used in the shell. Use the space bar to step through the man page. 1.4 Commands, options and arguments Commands are often followed by one or more options that modify their behavior and further, by one or more arguments, the items upon which the command acts. Let's take a look at the ls command. Have a look at is manual page $ man ls Note that the ls command takes options and arguments, but also can be run without options or arguments. Give the following a try. https://usqstudydesk.usq.edu.au/m2/course/view.php?id=21784 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 4/12 $ ls $ ls -l $ ls /usr/bin $ ls -l /usr/bin 1.5 Commands to navigate the filesystem There are some commands which are commonly used to 'move around' in the filesystem. There is a concepts of being 'in' a directory. What this means is that by default a command will act upon objects (files) that are located in the directory you are 'in' (the current working directory). Look at the man pages for the following and find what they do (we've seen ls already!) $ man pwd $ man cd $ man ls The pwd command tells you the current working directory - I like to think of is as present working directory. The cd command allows you to change directory. And ls lists the contents of a directory. Try the following commands, and explain what they are doing: $ pwd $ ls $ ls /usr/bin $ cd /usr/bin $ pwd $ ls $ cd Note how the ls command (with no arguments) lists contents of the current working directory. Also, what does cd do when you give it no arguments as in the last command? Exercise: change to the directory /etc and list all the programs in the long listing format 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 5/12 1.7 Looking at text files First of all, we are going to download a text file from the following link to the playground directory. You can use the browser in a GUI to save it there by following the link: GNU General Public License Or, you can use the wget command line utility. If you have a Debian virtual machine, or another which uses apt to manage packages, you can install wget if you don't have it by: $ sudo apt update $ sudo apt install wget Then you can download the file: $ cd ~/playground $ pwd $ wget https://www.gnu.org/licenses/gpl-3.0.txt $ ls We can use various commands to examine our file. Exercise: Use the following commands to see what they do. Then take a look at the man pages for each of the commands more, less, cat, head and tail. Note that once you run more or less, us the space bar to show the next page. $ more gpl-3.0.txt $ less gpl-3.0.txt $ cat gpl-3.0.txt $ head gpl-3.0.txt $ tail gpl-3.0.txt What is the difference between each of these five ways of viewing text files? Exercise: How can I see more or less lines when using head or tail? Look in the manual page. 1.8 Edit an existing text file In the exercises below, we use vim (or vi) as the default text editor. However, other CLI text editors exist (e.g. nano) and may be used instead. Just make sure you know the essentials of vi as sometimes that is the only text editor available on a machine. First, we can open the file: https://www.gnu.org/licenses/gpl-3.0.txt 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 6/12 $ vi gpl-3.0.txt You can use the arrow keys to move around. Following the diagram in the lecture notes, we can edit the file. Move the cursor to a location and press i To enter insert mode. Type some characters. Note that while in insert mode you can move around, enter and delete text. To exit the insert mode, press the Esc key. To save and quit, We enter the last line mode. Note you must be in the command mode first, then type : This should appear in the last line. Then type wq and press Enter. w writes (saves) the file, and q quits. 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 7/12 Exercise: Use vi practice editing the file. Try following the lecture notes to exit without making changes. Exercise: At the prompt, use the command 'vimtutor' to start the vi tutorial. Complete the first three pages in the tutorial. 1.9 EXTRA (preview for next week) Building directories and manipulating files In next week's lecture we will look at the Filesystem. The below exercises are a preview on that. You can attempt them now, or do them next week. The following commands make directories, and copy, move, rename and delete files. Take a look at the manual pages for the following commands: mkdir cp mv rm (Note there is no prompt! Do not run the commands, look at their manual pages). mkdir is used to make directories. cp is used to copy files from one place to another. mv is used to move (or rename) files. And finally rm is used to remove (delete) files. All of these commands require arguments. mkdir and rm require at least one (the name of the directory you are making and the file you wish to remove respectively). However, cp and mv require two arguments, a source and a destination - this makes sense you are copying or moving something from a place to another place. Let's use these commands to build some directories and then move and copy some files. We are going to make this directory structure 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 8/12 So, start in your home directory: $ cd or $ cd ~ Create the playground directory $ mkdir playground Or, if you want to explicitly make this a relative path from here: $ mkdir ./playground Or, specify it is one level down from your home directory: $ mkdir ~/playground Or, you could specify the absolute path of the directory you wish to create $ mkdir /home/path/to/myhome/playground As you can see there are many ways to achieve the same result. After you've done the command to create the directory, always use ls to make sure it has done what you expect! 5/10/2021 CSC2408 Software Development Tools Practicals: Prac 01 - Command Line and the Shell https://usqstudydesk.usq.edu.au/m2/mod/book/view.php?id=1724353 9/12 $ ls Exercise: Now change the current working directory to the playground directory (hint: use cd and an appropriate argument) and create the dir1 and dir2 sub-directories. Remember to check that it worked. Exercise: Explain how you could create the dir1 and dir2 sub-directories without changing your current working directory as in the previous exercise! Exercise: You should still have your current working directory as the playground directory.