======A start: the question asked====== An insightful conversation (featuring "H" and "K", two unix pilgrims on their journey towards enlightenment) on the way to pctX-starting clarity... NOTE: because this was done in the context of the "unix" class, if you are doing this for a //different// class, be sure to substitute in the appropriate course designation (cprog, c4eng, data, discrete, etc.) =====from the depths of uncertainty, a vergence of intent manifests (the question)===== H: I’m going to be honest I’m a bit confused with pct1 wedge: Oh? Where are you- just trying to start? wedge: Or hit a wall? wedge: What is long division? wedge: What are numbers? K: I cant even get into the directory wedge: @K what do you mean: you can't get into the directory? It is on lab46 H: I just don’t know how to access the puzzle wedge: ah, ok! Two birds with one stone K: It says the pctX directory wedge: but it also says to substitute the X with whatever pct# project you are working on K: aha! wedge: step the one: log onto lab46 via ssh/mosh H: check =====the public directory, locating it, and going there===== wedge: it then has you navigating into the UNIX public directory. wedge: that information (the public directory) has been provided to you on the info table near the top of the syllabus. Can you locate it? (the public directory path, near the top of the syllabus/course homepage) K: I see it now H: Me too, took me a sec... Ooooh wedge: that is a directory path wedge: meaning (if you've been reading the Mages book), you'll have to change directory to there wedge: any issues with that? K: So we would type cd then the public directory? wedge: yes, exactly H: You would do cd and only a / for var wedge: well: cd PATH wedge: so you take that whole public directory path you found on the syllabus lab46:~$ cd /the/public/directory/path lab46:/the/public/directory/path$ wedge: ... and you should see your prompt change accordingly if you typed it in correctly wedge: yes? =====a look at the prompt as a guide on our journey===== H: It hasn’t changed my prompt, mine is just showing lab46: /var/public/fall2020/unix$ wedge: It DID change your prompt wedge: Notice how it put the path you just cd'ed to INTO your prompt wedge: your prompt always attempts to tell you 2 important pieces of information: wedge: 1. the system you are on (lab46 vs. your pi) wedge: 2. WHERE you are wedge: if you are in your home directory, instead of seeing "lab46:/home/username$" it uses the '~' as a shortcut to represent home directory wedge: if you were to "cd" into your "public_html" directory, it would show: lab46:~/public_html$ wedge: ... because that is INSIDE your home directory wedge: where as the public directory: is external to your home wedge: so, it shows the ENTIRE path, what is known as an "absolute path" =====at the waypoint, now glancing further toward the intended destination===== wedge: now, if you are there, IN the UNIX public directory, let us take a look around. wedge: How do we see what is there, in the public directory? K: hg status? wedge: that's for your repository. We're nowhere near it wedge: we are in a directory. Directories contain files. wedge: How do we see the files contained within a directory? (again, Mages book stuff) K: find? H: less and more command? wedge: those CAN be used, but are by no means the most convenient nor direct way to do so wedge: less/more are used commonly WITH other commands, or to view inside text files wedge: we have a directory here, which is NOT a text file (although, it may contain text files) wedge: other names for the action may include "listing" the files K: ls? wedge: yes. K: ls -a? wedge: no need for '-a' in this setting, JUST "ls" wedge: what happens when you run "ls"? K: It shows some files H: I see files, including pct1 and pct2 wedge: yes. And they're blue, correct? H: yes wedge: that means they are directories wedge: hey, directories... you know something about dealing with directories... wedge: how would you go into the pct1 directory? H: cd =====a deeper dive on paths (absolute vs. relative)===== K: cd /pct1 wedge: no leading '/' needed here; the '/' means "from the base of the system" K: okay wedge: var is at the base of the system, so we prefix '/' to var wedge: when we are doing short hops like this (known as a relative path), we just specify the name wedge: your prompt should change (pct1 should append to the end) K: I'm already learning a lot lol wedge: all it took was asking a question H: What was the path called with /, I know it starts with an 'a' wedge: an "absolute" path H: Ah yes wedge: an "absolute" path is like your street address. A universal address for a place (123 fourth street, city, state, zip). wedge: whereas a "relative" path refers to your current position (the bathroom? Down the hall, 2nd door on the left). wedge: an "absolute" path works from ANYWHERE on the system. A "relative" path only works from a certain location. wedge: a common clue is that absolute paths will start with '/', whereas relative paths do not. K: Woah so if I ls I see everyones account and the files wedge: yep wedge: any files of particular interest? H: I’m only half way through the mage book and there is so much info in it wedge: hey, you're already well on your way wedge: considering the semester hasn't even started yet wedge: EVERYONE will need to go through what you are experiencing now... making those essential connections wedge: you stand to have a much easier time, because we have so much time (a week out from the due date) K: So say I wanted to be in the same place I am right now on my pi; is that possible? wedge: that directory (and the contents that drew you to it) would have to exist on your pi (by default, it does not) wedge: but don't worry, when we're done you should have //your// puzzle on //your// pi H: Now I see puzzle, this is making a lot more sense wedge: sometimes it just takes a question to be asked K: I only see "MANIFEST" H: You’ll need to go into the directory named as your username wedge: yep K: Got it wedge: so you wander into your respective "username" directory. What is there? K: a file called "puzzle" H: when I run "ls" from within the "username" directory (under pct1), it outputs "puzzle" wedge: yes, you should see a single (gray/white) file called 'puzzle' wedge: files that are coloured gray/white are "regular" files... which includes things like text files wedge: how could we view this file, assuming it was a text file? (there are MANY ways) wedge: and you both have mentioned things that could be made to accomplish this task H: Do we use the more and less commands with this one? wedge: yes- "less" or "more" can do the job wedge: and so can a text editor, such as "nano" wedge: but, I'll give you one simpler wedge: the command known as "cat" wedge: cat filename wedge: "cat" is like a straight up file viewer; it displays the contents to your screen and returns to the prompt (unlike nano or more/less, cat is NON-INTERACTIVE, meaning it just does its thing, without any further interaction from the user) wedge: if you cat your 'puzzle' file, you should see the puzzle. Yes? H: Yes, so should we work on paper then just add it on nano? wedge: yes, although, we're not quite done yet (going to add it to your repository) K: Mine seems like its solved wedge: @K it isn't solved, you need to figure out the numeric identity of the letters K: OHHHH okay =====Adding your puzzle into your lab46 repository===== wedge: I'll now show you how to copy that puzzle file INTO your repository, into a pct1 directory of your own. wedge: now, for this next step, you will need to have set up your repository on lab46: K: Yes, did that today H: I have done it on lab46 wedge: good. ok wedge: ok, getting our puzzle into our repository wedge: first, it might be a good idea to set up a structure, so all are class data is organized K: So do we make the directory on the pi with mkdir wedge: @K nope, we're going to make mercurial do it K: okay wedge: but we ARE going to run mkdir on lab46: wedge: run the following (from where-ever you currently are, on lab46): mkdir -p ~/src/unix/pct1 wedge: can you then tell me, WHERE is that? wedge: I mentioned the '~' symbol before. It means something to the computer, a shortcut we can use wedge: what is it? H: Nothing seemed to happen for me wedge: correct, mkdir did what was requested of it K: It made it but we arent in it so now we go into it wedge: if you just get your prompt back, you were successful wedge: UNIX is "user friendly" like that... it doesn't go and say "SUCCESS! YOU DID THE THING. ARE YOU SURE?" wedge: it assumes you know what you are doing K: We have to copy the puzzle file to the new directory we just made wedge: we just made a new directory, INSIDE our home directory (~), under src (created when you set up your repo on lab46) wedge: actually it also created a "unix" subdirectory (if it didn't already exist), and inside that, "pct1" wedge: we can now copy our puzzle file here, INTO that "~/src/unix/pct1" directory wedge: any ideas how we might do that? K: cp file name H: cp? wedge: more generically, cp "source" "destination" wedge: here we are in the public directory... pct1... our "puzzle" file is here wedge: so "puzzle" (in the current directory) will be our source K: cp pct1 wedge: and the destination? K: dang K: cp pct1 /src/unix/pct1 wedge: careful, src is not at the base of the filesystem... it is in our home directory (~) H: How do we get the puzzle in there though, do we use the name puzzle? wedge: cp puzzle ~/src/unix/pct1 H: Oh, okay K: I was so close dang wedge: "puzzle" is the source (what we want to copy) wedge: "~/src/unix/pct1" is the destination (where we want to put that copy) wedge: again, you should get your prompt back if you did it correctly wedge: yes? K: Yes wedge: now, CHANGE DIRECTORY to that destination (that path) K: done wedge: your prompt should change to: lab46:~/src/unix/pct1$ wedge: yes? H: Got it wedge: ok. an 'ls' should confirm our file is there H: Yes K: Yup wedge: a 'cat' should confirm that the contents are still there K: yes H: yes wedge: and now, as anything under ~/src/ is trackable by mercurial, in our repository wedge: we go and ADD puzzle to your repository (that hg thing): lab46:~/src/unix/pct1$ hg add puzzle K: So it worked? wedge: actually, run "hg status" wedge: it should also show 'puzzle', with a green capital A to the left of it K: A unix/pct/puzzle wedge: "hg status" shows us the state of the current snapshot wedge: yes, that's it H: Sweet got it wedge: okay, now to COMMIT it (aka take a snapshot of it): lab46:~/src/unix/pct1$ hg commit -m "adding my pct1 puzzle" H: What does committing it do? wedge: takes a snapshot K: Like a log? Of what's happening wedge: the current state of all the files listed in 'hg status' wedge: like it saves the current instance of the file wedge: like a sort? Sort of. There is a log. K: So should we hg push? wedge: yes, after you've committed, you want to push the snapshot to the server. "hg push" does that. wedge: which for the purposes of getting it on the pi, definitely something we want wedge: so do that. =====Retrieving your puzzle on your pi===== wedge: now, we switch over to the pi. If you haven't set up your lab46 respository yet on your pi you will need to do that first. wedge: but in general, for this to work, you will have needed to have added, committed, and pushed it (on lab46) H: In the future do we work more on the pi or lab 46? wedge: the intent is, yes, that you do the bulk of the work on the pi wedge: as for lab46: mainly getting files from and putting finished files to submit back on lab46 wedge: you can switch over to your pi, go into your ~/src directory on your pi K: in your ~/src on your pi? wedge: Yes wedge: now, run "hg pull" wedge: followed by, "hg update" wedge: as a bonus, if you'd like to see the log, you can now do "hg log" (if it doesn't let you out, 'q' to get out) wedge: then, when back at a prompt, do an "ls" K: a directory called "unix" shows up, that wasn't there before! wedge: go in there, and run "ls" K: directories! "ntr0" and "pct1" wedge: go into the "pct1" directory, and run "ls" K: Hey, my "puzzle" file is there wedge: there you go =====The reverse, sending from pi to lab46===== wedge: now, to get things from your pi back to lab46-- do any add/commit/push commands on the pi wedge: then, back on lab46 (in ~/src), do your pull, update in hg (in that order: pull, followed by update) wedge: back and forth, whichever way you need at the moment K: Yeah I had to do that with ntr0 wedge: so there you go: I hope that helped clarify things somewhat H: Thank you for all your help! wedge: no problem! Thank you for asking questions