Just getting started with UNIX programming and administration

Hi everyone,
I am new to this forum and this is my very first post, one i think i will look back at many years from now and have nothing to regret about.

This is simply because i recently installed Linux (Ubuntu) on my system and downloaded a book titled, The Unix Programming Environment. I most say its being keeping me awake all night studying and practicing.

I am humbled to be a member of this forum. I want to learn and meet new people.

Any word of encouragement on how to conduct myself and improve my motivation to learn more will be highly appreciated.

Thanks.

Hi despiragado,
Welcome to the UNIX & Linux Forums. And, welcome to the world of UNIX-like operating systems. It sounds like you are off to a great start.

If you get stuck, start a new thread and

  1. show us the inputs you have,
  2. the outputs you want,
  3. describe the logic that should be used to convert your inputs into your desired outputs,
  4. show us any code you have written to try to reach your goal,
  5. show us the output the code you have written produces, and
  6. show us any diagnostic messages produced while running your code.

Don't assume that everyone will have read this thread. Tell us each time you start a new thread what operating system and shell you're using. (The capabilities of some utilities vary considerably from system to system and you are much more likely to get useful suggestions if we know what programming environment you're using.)

We're here to help you learn how to use the tools that are available to you on your new system to do whatever you want to do.

Welcome.

3 Likes

Hi Don,
Thanks for you wise suggestions on the way forward for me. Also thanks for kindly moving my post to the right section. As a new user i was lost as to where to post my introduction.

That's OK. We are here to help you. If you are unsure about anything you can always ask a moderator or administrator (the people with the red names) for help.

You book, btw., is a great choice! It is one of the classics i think everyone working on UNIX should have read.

Here is my personal list of books i have found to be "all time classics" and of eternal value in the field of programming in UNIX environments. Most assume that you are already a seasoned programmer and discuss just how UNIX/Linux environments differ from other such environments and how proper UNIX programs should behave. But even if you are less seasoned than the authors expected their audience to be you will still profit greatly from them, IMHO.

  • Advanced Programming in the UNIX Environment (Stevens)
    Also called "APUE" or just "the Stevens".
  • The Art of Unix Programming (Raymond)
    All about how things ought to be done.
  • The Art of Computer Programming (Knuth)
    Affectionately known as the "TAOCP". All you ever wanted to know about programming in general. The book you use as material for lifelong learning.
  • Lions' Commentary on UNIX 6th Edition, with Source Code (Lions)
    An absolute must for every kernel expert. For a long time withheld from the market (for trade secrets) and perhaps the most photo-copied book in the world.
  • Modern Operating Systems (Tanenbaum)
    The man who taught Linux Torvalds how to write a kernel explains the rationale behind kernel design decisions in general and provides a teaching OS (Minix) in source code.
  • UNIX Network Programming (Stevens)
    The bible if you want to write client-server software. All about inter-process-communication, sockets and the like. I suggest "TCP/IP Illustrated" from the same author along with it.
  • Computer Networks (Tanenbaum)
    To understand why we ended with todays Ethernet/TCPIP-monoculture and what made this combination so extremely successful, this is about network architecture and -design in general.
  • Principles Compiler Design (Aho, Ullmann)
    The famous "(green) Dragon Book". Even if you never write a compiler knowing about parsing, lexical analysers and the theory behind it will enlighten your programming.

I hope this helps.

bakunin

2 Likes

Hi despiragado...

You are not alone, as an amateur I am learning too. Been here for a while now and the big guns have taught me a great deal about shell scripting. I still think I am a smart-a$$ but they keep me in my place... ;oD

If you try something out for yourself and have seriously attempted to get something working and researched the particular area you are struggling with these guys will "show you the way". They will often write code for you knowing that you have tried your best to understand and tell you why and how it works.

If however you _demand_ help as is so often occuring on here then expect a curt reply.

If you are polite the response is unreal, and I write from experience.

Eventually you will be helping others without even realising it...

Good luck and look forwards to seeing more from you...

Thanks for your reply. And the list of books to further my learning. There is one thing that bugs me as a new Linux user. When i look at how much reading and practicing i have to do to update my skill sets, I sometimes become discouraged.

I guess this is true not only to me alone. I believe everyone has encountered this in there journey as system administrators. How did you overcome such discouragement.

Well, first: you do not have to! And second: don't! ;-))

Here is the long version of the above: you do not "have to" read and know everything we wrote about above. It just helps you tremendously if you do. Like with picking up any skill you start out small and get better over time. You might want to know everything above if you want to be an expert, but you need next to nothing to start out.

You will notice that UNIX is very economical when it comes to learning something: the same concepts are used over and over. Say, network programming, *is* a complex task to understand, but having understood the concept of a "socket" and how to use it you will notice that it is used in so many places that you have in fact learned a whole lot of nominally different things at once. The same with "regexes": learn them and you will find out that what you have learned for sed helps you to use grep and that awk uses the same and ... .

Finally never forget that the people who are answering you here haver probably a 3-digit number of years of practice under their combined belts. I work in IT for about 35 years now and for the last 20 years i have done systems administration. I have no recollection of what my first steps looked like, but surely not any better than yours.

After that much encouragement i'd like to balance that with a disheartening notion, though: it will take time. You will have to learn it like any craft. If you want to become, say, a mason, you need to learn three years (here - maybe that is different in your country, but probably not far away from that) as an apprentice, then become journeyman, then learn another one to two years and become a "master". Do you think becoming a UNIX systems administrator is much easier than becoming a mason? I thought so! If you planned to start today, write your next client/server- killer app tomorrow and become rich and famous next week: get a lottery ticket. It offers better chances.

It *will* take time and it *will* take hard work on your part, but finally you might come to the understanding that what we do is a craft only at the *core*: in the long end it is an art! We might practice our craft skills like a sculptor is practicing his stone cutting skills - as a necessary fundament to practice his art. What sets apart the excellent from the mediocre UNIX expert is that the excellent one will (at least try to) achieve artistic value in his solutions. It is this artistic value that requires fundamental understanding of why things are done this way or the other and this understanding is taught in the books i recommended. You will not need them to create a user account, install a network connection or mount a filesystem. You will need them to get from knowing what you do to understanding what you do, though (and why they are done this way).

The UNIX toolset is like an orchestra, waiting for the conductor: it is your artistry alone that makes the difference between them sounding like crap or like the Vienna Philharmonic Orchestra.

I hope this helps.

bakunin

1 Like

Thank you Batunin for your comments and detailed explanation. I most say that i am humbled to here you speak this way. I have never received such help. The explanation you gave are really helpful and i believe has given me a reason to at least spend some more time with my computer learn.

This is because i have realized that there are no shortcuts to mastery. Like you said i should start out small, i strongly believe that is the right way to go about learning.

Well i plan to hang out more often here and learn from you all. Please pardon my poor vocabulary and paragraph composition. I strive daily to improve myself in the area of self expression in English language.

Once again thank you.