Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
759
hpr_transcripts/hpr3423.txt
Normal file
759
hpr_transcripts/hpr3423.txt
Normal file
@@ -0,0 +1,759 @@
|
||||
Episode: 3423
|
||||
Title: HPR3423: "upg.sh" my "dump.txt" to "note.md"
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3423/hpr3423.mp3
|
||||
Transcribed: 2025-10-24 23:09:23
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 34234 Wednesday, 15 September 2021.
|
||||
Today's show is entitled Up.sh, MyDump.txt, ToNote.md.
|
||||
It is hosted by some guy on the internet and is about 38 minutes long and carries a clean flag.
|
||||
The summary is, I upgraded my scripts.
|
||||
This episode of HPR is brought to you by archive.org.
|
||||
Support universal access to all knowledge by heading over to archive.org forward slash Donate.
|
||||
Hello and welcome to another episode of Hacker Public Radio.
|
||||
I'm your host, some guy on the internet.
|
||||
Today's show title is called Upgrade MyDumpToNote.
|
||||
Now that's a play on words, those are actually three different scripts.
|
||||
I created the Upgrade script and the dump script.
|
||||
And they were very simple, small scripts and I turned the dump one into something called Note.
|
||||
So I just made a show name out of those scripts to have like a little play on words.
|
||||
So if you guys would remember, the Upgrade script was very short, simple and it did the job.
|
||||
It also just, you know, stored the Upgrade in plain text in a text file.
|
||||
And that was pretty good.
|
||||
But after listening to, I believe it was Dave Morris and Andrew McMillan,
|
||||
they did the making books on Linux show, shout out to Dave Morris and Andrew McMillan.
|
||||
By the way, that was a great episode.
|
||||
There was just one problem I had with that episode.
|
||||
I'm a complete new when it comes to programming languages.
|
||||
So a lot of that went over my head.
|
||||
I did a lot of research after listening to that show to try and, you know, figure out things
|
||||
because they were saying things like compiling a book using make, both the first show and the
|
||||
second show. They were, you know, going into details about the process.
|
||||
And some other wonderful things.
|
||||
Great show, by the way, is just that you got a low level user like myself.
|
||||
I need to level up to better understand these shows.
|
||||
But they're still great.
|
||||
Keep them coming. I mean, I have no problem when I get free time to just, you know,
|
||||
bring myself up the power.
|
||||
Also real quick.
|
||||
Another reason why I did this as well is I heard a Clat 2 show as well.
|
||||
That's why I actually created the note script separately.
|
||||
But Clat 2 did a show about using XML.
|
||||
And it was another thing in there called Doc Books or something like that.
|
||||
Wonderful show.
|
||||
Lots of good information.
|
||||
I didn't even know that these technologies existed.
|
||||
So, you know, it's introducing me to new software and new technology.
|
||||
And, you know, I got another way to make documentation if I wanted to use that.
|
||||
So that's fantastic.
|
||||
But, you know, I just wanted to say that I understand what he was doing at the end of the show,
|
||||
sort of giving people a bouncing off point to create another show.
|
||||
And I'm kind of doing that with this show as well.
|
||||
So I'm going to be using a lot of markdown here, improving Clat 2 wrong,
|
||||
that markdown is fantastic.
|
||||
And it's not just for people who don't want to write.
|
||||
It's, you got to think about it.
|
||||
A lot of us new guys here.
|
||||
We need tools as well.
|
||||
So something like markdown is simple and easy for us to be able to contribute.
|
||||
I know the rest of you guys can use Python and everything else and be just fine,
|
||||
but we need the tools more appropriate for our skill level.
|
||||
And we can still do nice things with them.
|
||||
I'm going to demonstrate in this show.
|
||||
So let's get right into it.
|
||||
First up, we got our upgrade script.
|
||||
Now, what you'll see here in the show notes is I'll have the full
|
||||
upgrade script just pasted right into the show notes there.
|
||||
And you can copy that, put it into a file, name the file upgrade.sh, you know,
|
||||
give it execution permission and, you know, you just change my granted execution and run it.
|
||||
And it'll be good to go.
|
||||
Now, obviously that's not all we're going to talk about here.
|
||||
I'm going to go through a breakdown of this script.
|
||||
For most of you guys, I got a feeling that you guys can look at this and
|
||||
instantly know what's going on and just kind of tell very easily what's happening here.
|
||||
But for the new users, let me explain as best as I can.
|
||||
And it took me a long time to get these, this show out,
|
||||
because I had to do a lot of research on how to use all this crap.
|
||||
I had never used variables or anything like that.
|
||||
So I had to learn a lot to be able to bring this script together.
|
||||
And then at the last minute, I kept trying to get something squeezed in at the back end.
|
||||
There was a script there.
|
||||
And I finally got it working, but not the way that I wanted.
|
||||
But we'll get into that a little bit later.
|
||||
Right now, let's go ahead and do the breakdown from the top.
|
||||
So from the top of the script, you'll see your shabang that's the pound symbol
|
||||
or hashtag what they call it today.
|
||||
Follow by the exclamation mark that's called a shabang.
|
||||
Then you tell the script where the shell is that you're going to be running it with
|
||||
and that's the slash band slash bash.
|
||||
Now that's specifically for the back shell.
|
||||
If you're using ZSH or a fish or whatever else,
|
||||
you know, if you're already using that, you know what to do.
|
||||
For new guys, you're probably already using bash.
|
||||
If you're using an Ubuntu based system, so you're good to go with that.
|
||||
Now I included some information in there about
|
||||
switching it to shabang slash band slash SH for Shell
|
||||
from the research that I found that's like the default unique shell or whatever.
|
||||
So it's more portable, but I just keep it as bash because it works.
|
||||
A lot of my research came from going online,
|
||||
finding different things over tons of sites,
|
||||
as well as the books that I have.
|
||||
I have tons of bash shell scripting books.
|
||||
And you know, I'm just going through them,
|
||||
just finding information and using it to create this.
|
||||
One of the things I learned through one of these resources,
|
||||
rather it was online or in the book,
|
||||
you can just, you know, store the name of your script
|
||||
in your script using the comment.
|
||||
And that was helpful for me because when I was creating
|
||||
more, you know, I was bouncing in between scripts,
|
||||
trying to make things work and figuring out,
|
||||
how did I do that one thing in the other script?
|
||||
And then just referencing one and the other,
|
||||
and I could just see the name of the script inside of it.
|
||||
I was using them to do all of this.
|
||||
I have gotten really good at using them.
|
||||
By the way, oh my god, I love it.
|
||||
It's, uh, it's really good.
|
||||
I had some issues with the copy and paste from the clipboard,
|
||||
but that's that we'll get into that later.
|
||||
Now following the name of the script,
|
||||
then we got our variable section,
|
||||
where I just put a couple of variables in there.
|
||||
And I like them right at the top,
|
||||
because if you ever want to change the location of where the script
|
||||
is going to be stored,
|
||||
or the file name of the script,
|
||||
it's nice to have your variables right at the top.
|
||||
Now, when I was making the script originally,
|
||||
before I started going through the books and everything,
|
||||
I used to just type out the actual path and file name
|
||||
right out into the script.
|
||||
And then I learned, well, you know, hey,
|
||||
if I just did it in a variable,
|
||||
I can put the variables everywhere,
|
||||
and you can still change the values of them
|
||||
from the very top of the script,
|
||||
where the variables are defined.
|
||||
And that's a much better way of doing it.
|
||||
It cuts down on the syntax,
|
||||
makes it a little bit more readable.
|
||||
Let's go ahead and jump down into the script here,
|
||||
step one, where I have the formatting
|
||||
of the actual markdown file,
|
||||
where the output of the upgrade will be placed.
|
||||
Now, now there's a lot of words there.
|
||||
Basically, we have echo,
|
||||
paste different words into the script,
|
||||
using a markdown formatting.
|
||||
So you see that very first echo right there?
|
||||
It'll have the hashtag,
|
||||
followed by the system upgrade,
|
||||
surrounded by asterisk.
|
||||
You know, that's going to give us that header with bold text,
|
||||
and it's followed by date.
|
||||
That's just to let you know the date
|
||||
that you actually performed the upgrade.
|
||||
One of the things I used to do
|
||||
when I was in my earlier scripts,
|
||||
sorry, if you can hear the police ironing background
|
||||
or fire truck, whatever that is,
|
||||
but one of the things I used to do
|
||||
is I used to have these long lines of commands
|
||||
going all the way out.
|
||||
And what I read was,
|
||||
it's a good idea not to go past,
|
||||
you know, in the books it said line 76,
|
||||
but on line it said line 80,
|
||||
you know, different places have a column,
|
||||
not line, excuse me, a column
|
||||
where your script should not go past.
|
||||
And I settled on 80.
|
||||
So in them, I learned to set up in my MRC,
|
||||
a nice little column margin
|
||||
that gives me visual representation of column 80
|
||||
so that I can try to limit my text from going beyond that.
|
||||
Also, I learned not to die on that hill.
|
||||
And you know, they were, that's part of the thing
|
||||
that took the most time
|
||||
because I didn't even know how to do that.
|
||||
I had to search around for examples
|
||||
on how do you actually break code,
|
||||
you know, how you just stop in the middle
|
||||
and make it go on the next line and keep working
|
||||
so that that was new to me.
|
||||
I had no idea how that works.
|
||||
And I get with bash is not exactly code,
|
||||
especially not the way I'm using it.
|
||||
But I mean, you know, still it's the same thing.
|
||||
I had to learn it.
|
||||
And what I learned was the backslash
|
||||
at the end of a command would,
|
||||
if you did a space at the end of the command
|
||||
and put a backslash there,
|
||||
you can then continue on the next line
|
||||
with the code.
|
||||
One of the other things I learned,
|
||||
this is from a book, I believe.
|
||||
One of those either was a bash cookbook
|
||||
or a shell scripting or something.
|
||||
One of these books I've got,
|
||||
they were saying to make sure you keep the important bits
|
||||
to the left.
|
||||
So when I first did it,
|
||||
I had like the pipe at the very end of the line.
|
||||
And then T would continue on the next line or whatever.
|
||||
I was like, no, it's actually a good idea.
|
||||
I actually put the pipe down there too.
|
||||
So you can see the redirect from the left
|
||||
versus try to figure out why you get what I'm saying.
|
||||
So I also took the time to add in some notes there
|
||||
on the right of these commands down here
|
||||
and a step-by-step breakdown
|
||||
to try and help new users
|
||||
who want to look at this and get a better visual representation.
|
||||
I try not to repeat it too much
|
||||
where it'll just become just a blast of just text on the right.
|
||||
But in the beginning, I labeled everything
|
||||
and then as we go further down,
|
||||
there will be less and less labels
|
||||
of the things that are already covered.
|
||||
Let's go ahead and move right on down in a step two.
|
||||
Now step two of our upgrade command
|
||||
is where we actually run our commands
|
||||
and then we add more formatting in
|
||||
where our commands are ran,
|
||||
but they're placed into marked down code block formats.
|
||||
So that way, you know, you separate the explanations,
|
||||
you know, the labels that are placed in the pile,
|
||||
you separate that from the actual standard output
|
||||
of the command when they're run.
|
||||
Now the commands we're talking about here
|
||||
are just pseudo-app, get update,
|
||||
and pseudo-app, get upgrade
|
||||
with the yes option added to upgrade.
|
||||
Now again, for the new users,
|
||||
you're looking to write over there
|
||||
and de-step-by-step breakdowns.
|
||||
That stuff on the right there with the little arrow
|
||||
and the two dashes followed by that text.
|
||||
That's not actual code over there.
|
||||
That's just a little bit of visual representation.
|
||||
And I figured in the actual script itself,
|
||||
one of the things I read is you don't want to put too many comments
|
||||
in there to where it's just a dot on the comments in your code.
|
||||
That's why these show notes,
|
||||
I'm treating the show notes like documentation.
|
||||
You'll have the script separate
|
||||
with just some basic, you know,
|
||||
shallow comments to help you out.
|
||||
But the show notes are very valuable
|
||||
because they're going to give you just a little bit more
|
||||
to go off of.
|
||||
All right, now let's move on into step three.
|
||||
This is the part that took me the longest
|
||||
because I had to actually go do a ton more research
|
||||
to get this working properly.
|
||||
So first off, we get a label going to let you know
|
||||
that the packages that are going to be upgraded,
|
||||
we're going to provide you some details of those packages.
|
||||
Now in the previous show, I discussed to you guys
|
||||
about how to find out which packages
|
||||
on your system needed to be upgraded,
|
||||
as well as how to, you know, sort of reveal that
|
||||
in different ways.
|
||||
I thought if I'm creating an upgrade script,
|
||||
it'd be a good idea just to kind of provide you
|
||||
some more of that in the script itself
|
||||
using the markdown format.
|
||||
So let's go ahead and discuss how I've done it.
|
||||
So as you can see there, we got a couple of echoes there
|
||||
for a label and the markdown formatting.
|
||||
Then let's move into the first variable there, the pkg list.
|
||||
That's where we used said to filter
|
||||
from the file that we're working on.
|
||||
We had to filter that file looking for a specific string
|
||||
and we used said to do that.
|
||||
Now we found the string that we wanted
|
||||
and then we had to find a second position
|
||||
in the file to stop the filtering.
|
||||
So a beginning point and an end point.
|
||||
That's what that said script that said command does
|
||||
inside of pkg list.
|
||||
After we found our beginning and end point,
|
||||
we wanted to keep all the information in between.
|
||||
So points one and two with all lines in between,
|
||||
we pulled that out of the file.
|
||||
We like printed a copy of that
|
||||
and we stored that copy inside of the variable pkg list.
|
||||
Now I got a thing I wanted,
|
||||
but I didn't want the first and last line,
|
||||
which were used to sort of govern the filter.
|
||||
So that's where we had to pipe it into the second said script,
|
||||
which is the one there was said,
|
||||
1D, a semicolon, $ind,
|
||||
what that script does is the 1D
|
||||
is to delete the first line in that variable.
|
||||
So you're treating the variable like a file
|
||||
as though it's just a text file.
|
||||
You're deleting the first line,
|
||||
which is the part that says the following packages
|
||||
will be upgraded.
|
||||
The dollar sign D is to delete the last line,
|
||||
which is the dot dot upgraded.
|
||||
Now let me talk to you about that dot dot.
|
||||
That in bash represents any character.
|
||||
And I use only two of them because I upgrade regularly.
|
||||
If you're one of the people that wait a long time
|
||||
and upgrade and say you might have a hundred or a thousand
|
||||
packages that need to be upgraded,
|
||||
you want to add a couple extra dots there.
|
||||
Again, because I update regularly,
|
||||
it's never any more than about 30 or 40 packages.
|
||||
That's why I only use two dots there.
|
||||
And I put the carrot that upward arrow
|
||||
at the beginning of the dots,
|
||||
because I wanted the said script the first one
|
||||
that filters the beginning and end point.
|
||||
I wanted it to start at the beginning of that line,
|
||||
looking for the two digits followed by the word upgraded.
|
||||
So now immediately after that second use of said,
|
||||
which deletes the first with the one D
|
||||
and the last line with the dollar sign D,
|
||||
we piped it into exorges,
|
||||
which is going to then take that all those lines,
|
||||
pump them through another use of said,
|
||||
which is going to filter out a few duplicate packages.
|
||||
Each line in that file represents a package.
|
||||
That's why it's called package list.
|
||||
Now when you get those packages,
|
||||
some of them will be duplicated except they'll have
|
||||
the tag at the end of them was a colon I386.
|
||||
So it'll be like Firefox and then Firefox colon I386
|
||||
is the same thing, but I guess coded for I386 or whatever.
|
||||
So I wanted to just remove those duplicate packages.
|
||||
So once all those uses of said and exorges are done,
|
||||
then you got the package list variable,
|
||||
which holds just a single list of packages within it.
|
||||
In the beginning, when I first made this,
|
||||
I dumped that into a file.
|
||||
I later learned that I can actually just store
|
||||
and use them from a variable.
|
||||
So I didn't have to constantly keep creating
|
||||
all these different files to get the value
|
||||
and use the value the way that I wanted to.
|
||||
Next variable, pkg, which is package cache.
|
||||
Now that's going to be the cache information.
|
||||
So what we did is we echoed the list
|
||||
that we just created using all those said scripts
|
||||
we discussed, we echoed the package list
|
||||
with a new line in between each item of the list
|
||||
into exorges one at a time.
|
||||
That's what the, when you use exorges
|
||||
with that hyphen N and then the one after it,
|
||||
it's going to take each item in that list
|
||||
and pump it individually into,
|
||||
and you see we have app cache search.
|
||||
So we pumped them one at a time into app cache search.
|
||||
Now in exorges, if you use the hyphen capital I,
|
||||
it'll give you sort of like a temporary variable.
|
||||
And you'll see here I'm using the underscore.
|
||||
I'm taking that underscore, storing those items
|
||||
that are being pumped through one at a time,
|
||||
each of those packages from the package list variable,
|
||||
putting it into app cache search.
|
||||
And then the search is being done for each and every package.
|
||||
Now one of the things you'll notice
|
||||
whenever you're doing an app cache search,
|
||||
it's going to pull up other related packages
|
||||
to the one you search.
|
||||
I didn't want all those additional packages
|
||||
that appeared.
|
||||
I only wanted the ones that are relevant
|
||||
to this upgrade, not the other related packages
|
||||
that are available into cache.
|
||||
Now, underneath this variable,
|
||||
I had to create a file of the package cache variable.
|
||||
So you see I echo the variable into a file.
|
||||
It's a text file called delete,
|
||||
because I don't want to keep it around,
|
||||
so I actually name it delete.
|
||||
We'll talk more about that in just a little bit.
|
||||
Let's go ahead and jump right down here.
|
||||
You see I'm using the package list variable once more.
|
||||
I'm putting it into exorgs.
|
||||
And remember, exorgs using the end
|
||||
that gives me the ability to pipe an item from that list
|
||||
one at a time using the end option.
|
||||
Then with the capital I,
|
||||
that gives me that temporary variable,
|
||||
that I'm going to put into echo
|
||||
to create multiple said commands.
|
||||
So if you're looking side that echo string there,
|
||||
you'll see I have in double quotation marks,
|
||||
I have the said using the end option,
|
||||
which basically means it's a print said script
|
||||
to begin with or said command.
|
||||
That's what the P is at the end of that said command
|
||||
for print.
|
||||
Now the end option with said is basically,
|
||||
you know, only print the things selected by said,
|
||||
the things that are going to be selected by said.
|
||||
If you look at the temporary variable there,
|
||||
the underscore, which is given by exorgs.
|
||||
And remember, exorgs is getting its information
|
||||
from the package list.
|
||||
So just an overview here,
|
||||
we're taking each item from the package list
|
||||
and making a said command out of it,
|
||||
a print said command.
|
||||
Now, whenever you're using said,
|
||||
you need a file to use said with.
|
||||
And I tried dozens of times to try to work
|
||||
with the variable package cache.
|
||||
And I could not get it to work, not with exorgs.
|
||||
So I had no choice.
|
||||
I had to create that file, the delete.txt file.
|
||||
And I stored the app cache search results,
|
||||
which is all the different results,
|
||||
including the packages that are going to be upgraded.
|
||||
Now, remember, we don't want all those different things
|
||||
from the cache.
|
||||
We only want the packages.
|
||||
That's why we use the package list
|
||||
to create a said print filter,
|
||||
which will print only the package list items
|
||||
from that massive list of items from the cache.
|
||||
That's why at the end of the said print command,
|
||||
you'll see in another set of double quotation marks,
|
||||
the directory variable followed by the actual file,
|
||||
which is the delete.txt file that we recently created
|
||||
with echo using the package cache variable.
|
||||
Now, we pipe all of that, all those said commands.
|
||||
Through that file, we run it into bash
|
||||
that way we can activate the said commands.
|
||||
Otherwise, it would just print said commands.
|
||||
So we want to actually activate them, run them
|
||||
as though they were in the command line being ran in bash.
|
||||
So we piped it into bash,
|
||||
and then right after we piped it in bash, bash, runs them,
|
||||
we piped that result into the markdown file.
|
||||
Yeah, that was a lot to say there.
|
||||
Then we just wrap it up with the rest of those markdown brackets
|
||||
there, and then go ahead and we use rm
|
||||
with the verbose option.
|
||||
That's the hyphen v verbose,
|
||||
and we remove the delete.txt file.
|
||||
Now, I added verbose there just so if you want to run it,
|
||||
you can see that it's actually going to do that.
|
||||
So we remove the delete.txt file,
|
||||
because we don't actually need the file.
|
||||
We just wanted our package list variable,
|
||||
not the variable.
|
||||
We just wanted our packages that are being upgraded,
|
||||
pulled from that list and displayed to us
|
||||
in a way that we wanted.
|
||||
That's all we wanted there.
|
||||
So we can delete that file.
|
||||
It's no longer of any use to us.
|
||||
If you don't want to use an rm in the script,
|
||||
you can actually comment that line out
|
||||
that rm hyphen v directory delete.txt.
|
||||
You can comment that out by putting a hashtag
|
||||
at the beginning of it,
|
||||
or just delete that line altogether.
|
||||
Following that, we can see where I have the variables,
|
||||
pkg list, package list, and pkg cache,
|
||||
which is package cache.
|
||||
Those two variables that we recently used,
|
||||
I empty the variables.
|
||||
I don't fully understand why I did that.
|
||||
I just did it just to empty all the value
|
||||
that was in them out.
|
||||
So I think that I did it correctly.
|
||||
It would just be blank variables now.
|
||||
I could have unset them as well.
|
||||
But as again, I don't want to go all that far.
|
||||
I just empty them.
|
||||
Now last but not least, at the bottom of the script,
|
||||
I read somewhere that putting eof or control d
|
||||
like the up arrow d, or the carrot d,
|
||||
whatever it's called, at the end of a file,
|
||||
tells whatever command that's running the file
|
||||
that is the end of the file.
|
||||
Like if you just put eof, capital eof, or whatever,
|
||||
certain commands that read for that will note to stop
|
||||
when it runs into eof.
|
||||
And I just thought it'd be a good idea to put that there.
|
||||
It's not necessary here,
|
||||
because it's a markdown file that we're creating.
|
||||
But I'll just go ahead and talk you through
|
||||
what we're doing here as well.
|
||||
We're using said to first look for an eof,
|
||||
which stands for end of a file.
|
||||
And if said finds an end of a file, it will delete it.
|
||||
Then we use echo immediately after that
|
||||
to place an end of a file.
|
||||
And the reason I did it in that order
|
||||
is because while testing the script,
|
||||
I was dumping multiple up system upgrades
|
||||
into the same file over and over again.
|
||||
And what would happen is there be tons of eof's
|
||||
at the end of each instance of the script running.
|
||||
So what I wanted to do is remove all the old ones
|
||||
and actually place one at the very bottom of the script.
|
||||
That's why this bit of, I don't know if you call it code,
|
||||
but whatever is in there.
|
||||
All right, let's go ahead and jump down here
|
||||
into the note.sh, which is another script that I wrote up.
|
||||
Remember I had the dump files,
|
||||
where I created that dump script or whatever
|
||||
to create the dump files, or no, everyone in the script,
|
||||
I think I just redirected the output into dump files.
|
||||
So I created a script that would just basically
|
||||
give you the exact same thing, but with markdown.
|
||||
So let me just go ahead and talk you through that
|
||||
really quickly here.
|
||||
This is a quick fast and a hurry one.
|
||||
We're not gonna be long here.
|
||||
So again, as you've seen in the previous script,
|
||||
we got our variables right at the top.
|
||||
You know about the Shabang with bash.
|
||||
So we got our variables.
|
||||
It's very familiar.
|
||||
I use the same file names.
|
||||
The only thing here is you'll see in the file name variable,
|
||||
I have that dollar sign two.
|
||||
That dollar sign two from my understanding
|
||||
is a shell built in variable,
|
||||
and it will accept user input.
|
||||
And I had to put the two there for a reason.
|
||||
Now in the script name,
|
||||
I have an example of how the script is to be ran.
|
||||
So I run the script by first typing the note dot SH,
|
||||
which will let it know that this is the note script
|
||||
that I'm running followed by a pair of double quotes.
|
||||
Now inside of that first pair of double quotes,
|
||||
I put the command that I'm actually running.
|
||||
And then I put a space after that
|
||||
and a second pair of double quotes
|
||||
where I then put the file name for this markdown file
|
||||
that's about to be created.
|
||||
Now you don't put an extension on it.
|
||||
You know the dot MD extension for markdown.
|
||||
No extension because that's handled by the script.
|
||||
Just the file name what you wanted to be called.
|
||||
So let's go ahead and run through this real quickly
|
||||
and I'll talk you through how that's all being done.
|
||||
So we already talked about the number two there
|
||||
and the file name that shell variable.
|
||||
That number two corresponds to the second bit of input
|
||||
that you're gonna be putting where I just talked about
|
||||
the note dot SH.
|
||||
So the first part and the first pair of double quotes
|
||||
would be the command later on you're gonna see
|
||||
a dollar sign one.
|
||||
So the part where the file name goes,
|
||||
that's where the dollar sign two is.
|
||||
That's where dollar sign two corresponds to.
|
||||
So now you'll see the variable,
|
||||
which has the dollar sign two plus the date dot MD.
|
||||
That's gonna be your file name,
|
||||
whatever you type in that second set of quotations.
|
||||
Now we got our directory which is well, you know, about that.
|
||||
Let's scroll down here, dry mouth,
|
||||
and get a drink real quick.
|
||||
So if you look down here you'll see the echo command
|
||||
with the number one in there.
|
||||
That's gonna correspond to that first set of quotation marks
|
||||
the command that you're running.
|
||||
So it's basically gonna give you a label
|
||||
with the word command using the markdown format
|
||||
and the markdown header number one,
|
||||
using that hashtag right there.
|
||||
Then it's gonna give you a nice little breakdown label
|
||||
and then it's gonna go into that next echo,
|
||||
which has the number one, the dollar sign one there.
|
||||
This is where the command you typed in
|
||||
gets broken down and formatted into, I guess sections
|
||||
that you can edit and provide details for.
|
||||
I use this to create show notes whenever I'm exploring commands
|
||||
for like say the apps,
|
||||
plonking episodes that I've been doing
|
||||
as I'm going through app and exploring packages
|
||||
and finding things that are cool and unique.
|
||||
I can just go ahead and make notes of them
|
||||
and have it automatically, you know,
|
||||
spelled out in markdown making my show notes
|
||||
a little bit easier to create with uniformed formatting.
|
||||
Yeah, I ran through a number of rabbit holes
|
||||
trying to get this done.
|
||||
And when Clad 2 said what he said is like yeah,
|
||||
I'm gonna definitely make sure I get something going
|
||||
to definitely talk to him about that.
|
||||
But yeah, you see the echo with the dollar sign one
|
||||
that you're command.
|
||||
Then we use TR to look for any spaces in the command
|
||||
so let's just use an LS command just for a second.
|
||||
Use LS, then you put a space
|
||||
and then the options you wish to run with LS.
|
||||
So LS, space, and then you do a hyphen L for long
|
||||
and put a H there for human readable, right?
|
||||
So what that TR is gonna do is find that space
|
||||
in between the LS and make it a new line.
|
||||
Then you see it gets piped into arc
|
||||
where we do a bit more formatting
|
||||
and we set up a nice little mark down section format
|
||||
that takes those different sections,
|
||||
spell them out with the word info after them.
|
||||
And that you just, when you wanna go back
|
||||
and edit up your show notes or whatever
|
||||
for these different packages that you're exploring,
|
||||
you can just delete the word info and type in
|
||||
what you wanna put there.
|
||||
I just put something there so that I can have a marker
|
||||
to know where I'm gonna be putting my information.
|
||||
Now step two of this command is super simple.
|
||||
We're basically just creating more mark down
|
||||
formatting the code blocks or whatever.
|
||||
And then we're taking the output of that command
|
||||
and storing it inside of those mark down code blocks.
|
||||
So you'll see down in there again,
|
||||
you see that echo with the dollar sign number one
|
||||
being piped into bash, meaning the command you just ran
|
||||
with note script will get piped into bash,
|
||||
ran in between that formatting so that it auto formats
|
||||
has marked down and it gives you a date in there as well.
|
||||
So that way when you go back through there to see,
|
||||
you know, when you last created this note,
|
||||
it will have a date there for you.
|
||||
Just a bit of a convenience and section three
|
||||
as you remember end of five.
|
||||
Oh man, there's nothing else after this point.
|
||||
Now I created that because when I'm doing notes,
|
||||
especially say for instance, I'm doing HPR episode eight.
|
||||
I've got several notes created for that show.
|
||||
I can store every single one of those notes
|
||||
in the same file called HPR episode eight
|
||||
and that end of file will get moved to the bottom of the file
|
||||
with every single note that gets added.
|
||||
So I do an LS command first followed by whatever else command
|
||||
like a X args command or something like that.
|
||||
Now you need to be careful here as well.
|
||||
Some commands, I think I give an example here with ARC.
|
||||
When you're using ARC, there's a lot of spaces in ARC
|
||||
and remember that TR commands are gonna take those spaces
|
||||
and turn them into new lines.
|
||||
So you'll see and some of the notes to the right
|
||||
of the command in step one.
|
||||
You'll see there a given example of ARC
|
||||
with the print command for ARC.
|
||||
Yeah, there's got a lot of spaces in it
|
||||
and each one of those spaces will turn those sections
|
||||
into a new element that requires information in the markdown.
|
||||
Now of course, you can go and just manually clean it up.
|
||||
So only commands like that will become something interesting.
|
||||
Outside of that, most commands will work out just fine with this
|
||||
and it's a very simple script, easy to read.
|
||||
I learned a lot in making it, working with variables
|
||||
and I wanted to do more with F statements and things
|
||||
of that nature, but they weren't necessary
|
||||
for such a simple script.
|
||||
I'll practice F statements a little bit later.
|
||||
When I'm done with this and I got my handle on bash
|
||||
because this is the end of the scripts here.
|
||||
When I'm done learning more about bash
|
||||
and getting very fluent with this learning,
|
||||
how to use F statements in case and the other things like that.
|
||||
I'm going to move into Python
|
||||
because I'm going to figure out how they made these books
|
||||
using Python and with ARL, I need to do.
|
||||
Because it sounded very good, but I just don't know how to use it.
|
||||
Plus Python will be good for other things as well.
|
||||
So I'm hoping to eventually learn that language
|
||||
and become proficient with it.
|
||||
I hope these show notes work out
|
||||
and I hope that you guys leave some comments down below
|
||||
telling Class 2 who's wrong, Markdown's awesome,
|
||||
especially for us new guys, we need it, love it.
|
||||
And even if you're not new, Markdown's still great.
|
||||
It's simple, it's not meant to replace anything.
|
||||
Just a wonderful format for doing very simple tasks
|
||||
and when used like this with scripts,
|
||||
you can just make your everyday upgrade
|
||||
just a little bit more pretty.
|
||||
You know what I'm saying?
|
||||
Get a nice Markdown layout of your output
|
||||
and it's just nice to have.
|
||||
Now, if you guys got some tips on different resources out there
|
||||
for learning more about bash scripting or whatever,
|
||||
definitely leave a comment or do a show responding.
|
||||
That'd be great for not only myself,
|
||||
but other new users getting into it.
|
||||
Definitely recommend this show and the notes
|
||||
as a nice resource.
|
||||
What I'm going to also do is try to link a Markdown file
|
||||
from my Google Drive.
|
||||
I figure since all my notes and everything
|
||||
is going to be CCBYSA, you know, Creative Commons,
|
||||
it'll be fine to put in a Google Drive
|
||||
and then just throw a link in there
|
||||
where people can download the actual Markdown files
|
||||
and just do whatever they want with it.
|
||||
I'll try to get that in there, hopefully it works
|
||||
because I don't know if you can get Markdown
|
||||
from hacker public radio, right?
|
||||
Like it'll just be the page, not the actual Markdown itself.
|
||||
I don't know, but I mean, either way,
|
||||
I'll try to put it in there and I'll put a link somewhere
|
||||
in here where hopefully you can get that
|
||||
if I've done it right.
|
||||
That's it for this show, ladies and gentlemen.
|
||||
Oh, yeah, one last thing.
|
||||
Mr. Fallon, I still owe you that other show
|
||||
and I am working on that as well.
|
||||
I bumped into Mr. Fallon over on, was it mastered on?
|
||||
I'm some guy on the internet,
|
||||
so I'm usually walking around on the internet
|
||||
just bumping into people.
|
||||
And I bumped into Mr. Fallon at Mastodon
|
||||
and we had some words about a thing.
|
||||
He may not remember because my name on Mastodon
|
||||
is not the same as hacker public radio,
|
||||
but we had a little conversation
|
||||
and if there are any Naruto fans out here,
|
||||
Mr. Fallon has the Fallon gone
|
||||
from, you remember Naruto had the sharring gone,
|
||||
the OGF family.
|
||||
Yeah, he's got the Fallon gone.
|
||||
When I bumped into him, he hit me with the Fallon gone
|
||||
and now I owe him a show.
|
||||
So when he hypnotized me, I gotta make a show for him now.
|
||||
And he sent me into like the HPR Sukuyome
|
||||
and Dave Morris was there too.
|
||||
And Dave Morris was there in the background saying,
|
||||
make sure you release your show every other week.
|
||||
And Ken was there constantly going, do a show.
|
||||
All right, guys, I'm some guy on the internet.
|
||||
I'll catch you guys in the next episode.
|
||||
Take it easy.
|
||||
You've been listening to Hacker Public Radio
|
||||
at HackerPublicRadio.org.
|
||||
We are a community podcast network
|
||||
that releases shows every weekday, Monday through Friday.
|
||||
Today's show, like all our shows,
|
||||
was contributed by an HPR listener like yourself.
|
||||
If you ever thought of recording a podcast
|
||||
and click on our contributing
|
||||
to find out how easy it really is.
|
||||
Hacker Public Radio was founded by the digital dog pound
|
||||
and the infonomicum computer club
|
||||
and is part of the binary revolution at binrev.com.
|
||||
If you have comments on today's show,
|
||||
please email the host directly.
|
||||
Leave a comment on the website
|
||||
or record a follow-up episode yourself.
|
||||
Unless otherwise stated, today's show is released
|
||||
under Creative Commons, Attribution,
|
||||
share a live 3.0 license.
|
||||
Reference in New Issue
Block a user