Mininal skills

Brenda J. Butler bjb at sourcerer.ca
Fri Jun 5 06:22:22 UTC 2020


On Thu, Jun 04, 2020 at 03:14:51AM -0600, Brandon helsley wrote:

> Great advice from all of you!!! I really feel like I'm getting
> started. I'll check out your instructions and see where I stand with
> my understanding of the OS. I have been wanting to learn networking
> but my asperations are very limited when I have only one NIC. In the
> future ill make the formatting of my messages correct as well. At
> least I'll try.

The person who had the firewall suggestions has answered your "what I
should learn, and by the way I'm interested in networking" question
very well.

As for "what is shell programming" ... it's the same as regular programming
but written in a language that doesn't need to be compiled.  Often the
shell program calls on other programs to do the work.  So learning "shell
programming" is about more than learning the shell language - it is
also about learning enough of those other little utilities to be
able to do something useful in the shell.

Granted, as time goes by, there is more and more functionality built
right in to the shell - but there are a few utilities that are pretty
much indispensable.  There are the standards

    ls
    cat
    less
    date
    time
    seq
    sort
    uniq
    strings
    grep
    diff
    patch
    od
    dd
    cut
    tr

and suchlike, then there are other shells and script interpreters like

    sed
    awk
    perl
    python

A couple of those are both script interpreters and programming
languages.  The line between them can be a bit blurry.

The lists above are only short examples lists - really the quantity of
things to learn is astounding.  And while there is more stuff to learn
as time goes by (both more utilities, and more features in each
utility), at least most of what you have already learned in unix-world
is still applicable - truly a "build on the shoulders" situation
rather than a "throw out everything you ever knew and start all over",
"groundhog day" kind of situation.  So yes, I also recommend reading
the "old" Kernighan and Ritchie C book (I agree, 2nd edition is the
earliest edition you should get of that book).  It's not like math
becomes invalid because it gets old.  C++ is pretty much a superset of
C, so learning C by itself is not a "waste of time".  It's a stepping
stone to learning C++, as well as a useful end goal by itself.

Get familiar with the man pages for the above as well (I mean the
utilities - for the shells it is better to read tutorial style books)
and try out the commands.  Some man pages are longer than others : -)
Read the man page for man.  By the way: "man" stands for "manual".
And, you can read shorter man pages as a way to learn the utility, but
longer man pages are generally organized as references rather than
tutorials and are not great for learning from scratch.

To answer your questions about diff and patch - there was already a
good answer in this email thread.  But I also made a show about that
on hacker public radio.  The show notes repeat the show verbatim so
you don't have to listen to the show - all the info is in the notes.

    https://www.hackerpublicradio.org/eps.php?id=2619

I go into a lot of detail about the terminology of diff and patch, and
what they can be used for in a programming workflow - suitable for
beginners.  You probably only need to read the introduction unless you
want to read the bit after, about quilt, which is another utility for
managing patches.  I describe everything from first principles, esp in
the introduction which is the part you are probably most interested
in.

Another show I did talked at a beginner level about processes and how
processes communicate with each other in the shell.  This show was
talking about how virtualenv and virtualenvwrapper work.  But that
doesn't matter - have a look at the material and you will learn a bit
about processes, the process hierarchy and the different ways
information gets into and out of programs.  That second show is at:

    http://hackerpublicradio.org/eps.php?id=2322

I talk about Linux in those shows - but 9/10ths or even 99/100ths of
what I talk about is applicable to the BSDs.  The common thread is the
shared Unix heritage.

-----------

In case you are curious:

I use mutt for my MUA (aka mail reader) and within mutt I use emacs as
my text editor when actually composing emails.  Emacs has facilities
for reflowing the paragraphs (even when there are quote markers at the
left).

Contrary to what someone else said in this email thread, I recommend
learning vi (or the basic parts of vim).  Sooner or later you will be
on a machine that does not have any editor and you will have to use
vi.  Best to learn the basics of vi.  You can continue to master it,
or choose another editor for your main work environment, but you
should know a enough vi to edit config files or scritps, save them and
exit.

And keep asking questions!

bjb


More information about the freebsd-questions mailing list