Page 1 of 2 12 LastLast
Results 1 to 10 of 13

Thread: Learning Unix, how much is too much?

  1. #1
    Join Date
    Jun 2010
    Beans
    Hidden!
    Distro
    Ubuntu 11.04 Natty Narwhal

    Learning Unix, how much is too much?

    A little more than half a year ago, I installed Ubuntu on my computer. The method I used for learning to use it was 'Try out all menus, if all fails, Google it.' It generally worked fine, especially with the GUI and all, and there are plenty of help sites online. However, the more I use it, the more I get interested in it. And sometimes, solutions on some websites make me feel left out; Even though they worked, I didn't really understand what they did. And these little cryptic one-liner sh/sed/awk/perl/etc commands have some kind of magic in them; Magic I couldn't fully appreciate, and couldn't modify to suit my needs.

    So, at some point, I decided to learn the Unix part of Ubuntu (Yes, I know Linux isn't real UNIX™. But for my intents and purposes, it's Unix enough.) But before I start learning, I needed to know what and how to learn. After some extensive (well, sort of) research, I decided to start from the bottom; I would learn Unix the way it was meant to be, Version 7 Unix! I got two books, The Unix Programming Environment by Brian W. Kernighan and Rob Pike, and Unix Programmer's Manual, the manual for Version 7 Unix. The latter contains two volumes, the first is the man pages of V7 and the second is a collection of papers, essays, and tutorials. It's also available for free online. I also found a PDP-11 emulator and a running copy of Unix V7.

    Now, I started reading the books and learning, and it has been an enjoyable experience. Suprisingly, not much has changed in over 30 years; Most commands work just like they did on V7. However, while almost nothing was removed, a lot has been added, some as standard additions (added to POSIX,) and some as non-standard extensions. As an example, the sh man page in V7 contains about 3000 words (the biggest man page in V7), the bash man page has 41025. That's over 13 times bigger, and that's without counting the texinfo manual of bash! What's more, I found out that zsh is even more advanced than bash, and has even more features. That is just one example, other commands also had their share of additions and there are also many new commands.

    I am facing a dilemma here, I don't know what to learn or where to stop. I have two solutions (plus the gray area in between.) The first solution is to stick with just the basics. The problem with that approach is that I will miss many features that could make my life much easier. Also, I risk not understanding some commands/scripts that other people write, which is the reason I started learning in the first place.

    The other solution is knowing no limit, learning every command, reading about every option, trying every feature, exploring every nook and cranny, and maybe even learning perl(which, if the Internet is any indication, is simultaneously the best AND worst solution of any problem.) This is obviously impossible, as it will take an unlimited amount of time. I will also have a problem if I ever had to use a system that doesn't have some of these extensions. Also, if I ever try to help someone, they might not have them (for example, giving a command that works in zsh and not in bash.)

    Naturally, a reasonable person would suggest starting with the basic set, and learning the extras gradually as I need them. But even that has problems. First, if I don't know something exists, how can I learn to use it? And second, no manual page or book tells you "this feature is available in bash but not in dash, and zsh does it but using different syntax." Which is really the same problem as with the previous appraoch; When helping others or trying to write portable code, how do I know what works where?

    I understand this problem is universal, and it would happen even if I picked up a 'modern' book about Unix in general, Linux, or Ubuntu. So, I am hoping you share your own experiences, how do you manage it? How do you learn about these features? How do you know when to stop learning about one command and its extensions and move on to the next one? And do you have any other suggestions for me? Maybe recommend a good book or website?

    Note: in case I wasn't clear enough, I'm not just talking about the different shells. Even though my examples were mainly about shells, I also have problems with additions to other programs, awk has been extended, sed has been extended, ed has been extended, even cat has been extended, and the list goes on and on.

  2. #2
    Join Date
    Jan 2010
    Location
    /usr/share/your_fridge
    Beans
    1,564
    Distro
    Xubuntu 10.04 Lucid Lynx

    Re: Learning Unix, how much is too much?

    Suggestion? Seeing OSX ]is UNIX, you might want to try reading on the Apple OSX's CLI.
    "Meddle not with roos; thou art crunchy and grasshopper-like" ※The SABRFL※

    Last edited by ubunterooster; 1 Minute ago

  3. #3
    Join Date
    Nov 2009
    Location
    /dev/null
    Beans
    74

    Re: Learning Unix, how much is too much?

    it depends on what you do with Unix. Unless you are making living with deeply dealing with Unix, knowing basic stuffs is enough. I have been on Unix for 20 years, but I have never bothered to learn all the commands or features. As long as I know enough of it, learning the rest on the occasion when I need is easy.
    Regarding the difference in shell, stick to the shell you like. I ditched Bourne Shell long time ago and I only know csh/tcsh variants and have no problem.

  4. #4
    Join Date
    May 2008
    Beans
    1,427
    Distro
    Ubuntu Development Release

    Re: Learning Unix, how much is too much?

    Quote Originally Posted by ubunterooster View Post
    Suggestion? Seeing OSX ]is UNIX, you might want to try reading on the Apple OSX's CLI.
    I use OS X. It uses "GNU Bash". Exact same as Linux.

    I wouldn't call it "true UNIX". OpenSolaris or *BSD are closer imo.

  5. #5
    Join Date
    Apr 2010
    Beans
    49
    Distro
    Xubuntu 11.04 Natty Narwhal

    Re: Learning Unix, how much is too much?

    Quote Originally Posted by lostinxlation View Post
    Regarding the difference in shell, stick to the shell you like. I ditched Bourne Shell long time ago and I only know csh/tcsh variants and have no problem.
    I only use Bash and haven't dabbled in other shells out of the fear that if I'm on a computer that's not my own and am asked to do something and installing my preferred shell isn't' an option. I'll have to know Bash anyway, since that's what almost every Unix-like OS ships with.

    Of course, you could make that same argument as to why someone should never learn anything except Windows. I don't use 95% of the things that Bash offers though. But I may in the future since I'm going to school to learn about network administration.
    The only thing I know for certain is that I know nothing at all, for certain.

  6. #6
    Join Date
    Mar 2009
    Beans
    927
    Distro
    Ubuntu 12.04 Precise Pangolin

    Re: Learning Unix, how much is too much?

    Learn one programming language at a time (good starting languages are bash or python) and once you've got the hang of that, move to another. The more languages you already know, the easier it will be to learn another one.

  7. #7
    Join Date
    Apr 2009
    Location
    Michigan
    Beans
    249
    Distro
    Ubuntu 14.04 Trusty Tahr

    Re: Learning Unix, how much is too much?

    In college this year, in a computer science class on Java programming, we had to learn the Unix/Linux command line (on Fedora Linux). A lot of people in the class didn't like it. I thought it was great.

    If you are looking for a place to start, you can start with this -

    Attached are the notes that I took in that class. Not all of these are "commands" per-say, for example "^C" (Ctrl-C) is simply entered and it executes.

    My note-taking skills are terrible, so I'd suggest you Google the command and/or check the man page for a better understanding. However, if you learn this list you will have a start on learning the Unix/Linux command line.

    Don't forget to learn about the power of piping as well...

    EDIT: Ugh, I forgot how bad I was at taking notes. I just read this over for the first time in a few months and I have no idea how I used this to study! My apologies...
    Attached Files Attached Files
    Last edited by chessnerd; July 1st, 2010 at 08:52 AM.
    My Laptop: Gateway T-6330u, 2.0 GHz Pentium Dual-Core, 3 GB RAM, 250 GB HDD - Ubuntu 14.04
    My Desktop: Lenovo IdeaCentre K450, 3.2 GHz Core i5, 8 GB RAM, 2.5 TB HDD - Windows 8.1, Ubuntu 14.04 in VM

  8. #8
    Join Date
    Jun 2010
    Beans
    Hidden!
    Distro
    Ubuntu 11.04 Natty Narwhal

    Re: Learning Unix, how much is too much?

    Quote Originally Posted by lostinxlation View Post
    it depends on what you do with Unix. Unless you are making living with deeply dealing with Unix, knowing basic stuffs is enough. I have been on Unix for 20 years, but I have never bothered to learn all the commands or features. As long as I know enough of it, learning the rest on the occasion when I need is easy.
    I agree. And since I'm learning it mostly for my own use, I suppose the basics are enough. But there is still the problem, how do I know what to learn if I don't know it exists?


    Quote Originally Posted by NMFTM View Post
    I only use Bash and haven't dabbled in other shells out of the fear that if I'm on a computer that's not my own and am asked to do something and installing my preferred shell isn't' an option. I'll have to know Bash anyway, since that's what almost every Unix-like OS ships with.
    I do have the same fear. I think that after learning the basics, I will only learn the extensions that I can live without. For example, use Bash's ctrl-r history search, which is a great convenience but not really necessary. But not use Bash's arrays, which are not supported by simpler shells.


    Quote Originally Posted by Penguin Guy View Post
    Learn one programming language at a time (good starting languages are bash or python) and once you've got the hang of that, move to another. The more languages you already know, the easier it will be to learn another one.
    Well, I know some programming, mainly in Java. But this whole out-of-IDE experience(excuse the bad pun ) and the dynamic/scripting nature of the shell is somewhat foreign to me.


    Quote Originally Posted by chessnerd View Post
    If you are looking for a place to start, you can start with this -

    Attached are the notes that I took in that class. Not all of these are "commands" per-say, for example "^C" (Ctrl-C) is simply entered and it executes.
    That list would've been useful when I just started. But now I know quite a bit after reading the books I got (Even though I haven't finished them yet.) But thanks anyway.

    Also, the last one is wrong.
    Code:
    (command; command)      runs two commands at once
    should be
    Code:
    command & command

  9. #9
    Join Date
    Feb 2008
    Location
    United States
    Beans
    328
    Distro
    Lubuntu 18.04 Bionic Beaver

    Re: Learning Unix, how much is too much?

    My advice:
    Learn the basic syntax of the commands you will use frequently.(cd, cp, rm, chmod)
    Learn directory structure, and environmental variables (~,.,..)
    Know how to reference the things you don't use often.

    No expert worth his salt tries to commit everything to memory.

  10. #10
    Join Date
    Nov 2005
    Location
    Sendai, Japan
    Beans
    11,296
    Distro
    Kubuntu

    Re: Learning Unix, how much is too much?

    Quote Originally Posted by kaldor View Post
    I use OS X. It uses "GNU Bash". Exact same as Linux.

    I wouldn't call it "true UNIX". OpenSolaris or *BSD are closer imo.
    Well, the fact that you wouldn't call it UNIX is irrelevant, as is your opinion. The Open Group knows better than you, and has certified Leopard and Snow Leopard as UNIX.
    「明後日の夕方には帰ってるからね。」


Page 1 of 2 12 LastLast

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •