Best unix shell books according to redditors
We found 36 Reddit comments discussing the best unix shell books. We ranked the 10 resulting products by number of redditors who mentioned them. Here are the top 20.
We found 36 Reddit comments discussing the best unix shell books. We ranked the 10 resulting products by number of redditors who mentioned them. Here are the top 20.
Sorry for getting all dramatic, but for me you're asking a red pill/blue pill question. I applaud your curiosity and can only recommend you follow your gut and take the red pill. The truth is by asking the question you already know what to do next. Just keep going. However I'll give you a few ideas because you got me excited.
OSX Terminal
Underneath the shiny GUI surface of your mac you have an incredible unix style OS just waiting to be played with and mastered. A few tips to get you going.
Download iTerm 2. Press cmd-return, cmd-d and command-shift-d.
Congrats. you now have a hollywood hacker style computer
Copy and paste this line into your terminal and say yes to xcode.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Awesome you now have homebrew. A linux style package manager.
May as well get cask too.
brew install caskroom/cask/brew-cask
Now you can install programs by typing a couple of words.
try
brew cask install virtualbox
Get Linux ASAP
Linux is relatively easy to get up and running and awesome fun. try any of these options
If any of the above seems slightly daunting don't sweat it. Be confident and you may just surprise yourself at how much you can learn in such a short amount of time.
Learn the command line
The command line opens up the wonderfully powerful and creative world of unix. Push on.
Play, Play, Play
Do what gets you excited.
I got a big kick out of learning ssh and then pranking my friends with commands like
say hello friend, i am your computer. i think your friend two-gun is very handsome. Is he single?
or
open -a "Google Chrome" https://www.youtube.com/watch?v=X0uYvQ_aXKw
Do what you find fun. Oh and check out Richard Stallman. He's a good egg.
Enjoy.
edit-0
forgot iTerm link
edit-1
Wow! Gold! Ha! Thank you. This is so unexpected! I'd like to thank the academy, my agent, my mom...
macOS Support Essentials
Learning the bash Shell
Learning Unix for OS X
UNIX and Linux System Administration Handbook
What's New in macOS
(edit: ...if that's what you're going for)
I'm 43 and became specialized in a narrow range of products. on the one hand, if you need someone who knows about this stuff, I'm one of the most knowledgeable you can find.. on the other, I've become so specialized it's starting to hurt me career/ financially.
a friend of mine just got another startup going. he's a backend php developer and they needed more of a systems/ sysadmin person in a part time role to setup all the tools and the production environment. he asked if I'd be into it and I said yes - I was eager to learn new skills and aware I'd be blowing away cobwebs and kick starting brain cells etc. but dived in.
I've learned more in the last few months than I've learned in the last 5 years and it's been awesome. I read and really enjoyed [Code] (http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=sr_1_1?s=books&ie=UTF8&qid=1334526682&sr=1-1), I'm almost finished working through [learning the bash shell] (http://www.amazon.com/Learning-bash-Shell-2nd-Edition/dp/1565923472) and plan on working through [C programming] (http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628/ref=sr_1_1?s=books&ie=UTF8&qid=1334526363&sr=1-1) after that.
one thing, I used to be a Java programmer a decade ago. I read computer articles out of curiosity and will buy the occasional computer book for fun.
backing up - I've realized in the last few years that for me one very important skill is the skill of learning. getting your brain back into a state where it absorbs new information easily and likes it can be an uphill climb once you start back after a break of a decade or more.. but I'm resigned to always working on new stuff, deepening my technical knowledge, studying music, I want to do woodwork and organic gardening, learn piano, etc. after a while you start seeing deeper connections between areas of specialization - and that's pretty cool :)
The approach I took is to start with commands and languages using regular expressions: find, grep, sed, awk, python or perl, etc. These are very powerful and useful commands.
Two books I highly recommend are [Unix Shells by Example] (http://www.amazon.com/UNIX-Shells-Example-4th-Edition/dp/013147572X/ref=sr_1_1?ie=UTF8&qid=1374157897&sr=8-1&keywords=unix+shells) and [A Practical Guide to Linux] (http://www.amazon.com/Practical-Guide-Commands-Editors-Programming/dp/013308504X/ref=sr_1_1?s=books&ie=UTF8&qid=1374157979&sr=1-1&keywords=practical+guide+to+linux)
Also check out (PDF warning!) [Advanced Bash Guide] (www.tldp.org/LDP/abs/abs-guide.pdf)
These all are excellent, and very useful.
10000 limit again. Reserving this comment for the Programming section:
PROGRAMMING
Gray Hat Python: Python Programming for Hackers and Reverse Engineers
Beginning Python
The Python Standard Library by Example (Developer's Library)
Shell Scripting
Shell Scripting Recipes: A Problem-Solution Approach
Linux Command Line and Shell Scripting Bible, Second Edition
Wicked Cool Shell Scripts
sed & awk (2nd Edition)
The Ruby Programming Language
Beginning Ruby: From Novice to Professional
Ruby on Rails 3 Tutorial: Learn Rails by Example
Agile Web Development with Rails
Automating Microsoft Windows Server 2008 R2 with Windows PowerShell 2.0
Pragmatic Guide to Subversion
Programming Perl
C++ Primer Plus
The AWK Programming Language thanks sjhill
Modern Perl thanks three18ti
High-Order Perl thanks three18ti
The Art of Scalability thanks mr_chip
Scalability Rules thanks mr_chip
Continuous Delivery thanks mr_chip
The Varnish Book thanks mr_chip
The best thing you can do is read (at least that is the way I learn the most, the fastest)! That being said, there are tons of free videos on youtube that go over networking and how it works. Figure out ways to apply your knowledge by setting up a network of your own and making it rad.
I think learning unix/linux is the way to go if you are into servers, but that is my bias. I am not a fan of Windows. In reality, you end up doing a lot of the same tasks when adminning, regardless of platform. Servers are just computers that run services (like http, ftp, nntp, email, etc). You basically just have to learn how to install, configure and run those services and learn best practices about installing and configuring the OS to do what you want it to do the best.
I highly recommend going into linux/unix adminning. I am not a huge windows fan. That being said, there are jobs there and if you can tolerate working with windows, it might not be a bad route to go if you want to be an admin for the rest of your life. I think nix admins end up doing more development work in the long run (which is more fun imo). As far as learning nix, I highly recommend unix power tools. I am sure there are tons of tutorials as well, but this book gives you a good idea about how to interact with the command line and gives you a great introduction to many of the tools available to you and when to use them. Setting up servers just means installing some services and getting them running in a smart way. There is usually a lot of documentation available for the service you are downloading and about how to configure it.
Regarding programming, pick a language and start using it for everything you can! When you install a service, pick a program that is made in that language to run on it (i.e., install/configure apache and then run a program written in python on it!). I highly recommend starting out with python, but choose whatever you want. Python has a ton of free documentation and ton of well-written apps available. Its syntax rules will force you into writing better looking code, which will carry over to other languages you will learn in the future. Learn python the hard way, dive into python, MIT OCW, Khan Academy. Pick an open source project and start helping out any way you can! At first, it might just be updating documentation, then you might fix some small/easy bugs and soon you will be fixing things and helping direct the way you want to see the project go (or perhaps start your own project!).
If it gives you any hope - I have worked it helpdesk, sys admin jobs, run IT departments and now work as a programmer, all without (much) formal training. I have taken courses over the years, but I think you can a lot just by reading, watching videos and then finding ways to apply that knowledge!
edit: I don't know where you live, but if you can, find local user groups to participate in and talk to locals. You may be able to find a job in the field and have a real way to apply that knowledge on a daily basis.
If you have any questions or need ideas about projects to start, please feel free to ask.
For an intro to general Unix wizardry, I'd recommend Unix Power Tools. It covers all the basic Unix tools, and shows how they can be used together effectively.
To be a real Unix master, you should also learn Perl. If you want to go farther and master Perl you can't go wrong with that.
Once you know the basics of Perl, get the Perl Cookbook, which has many great recipes for doing things like in your list. In fact, if I recall, that very example might be in the book; if not, one very close to it is.
I always had a hard time learning from man pages. They're great for reference once you've already got your bearings, but in my opinion these books will serve you far better.
This is a pretty solid book for beginners that has gone under everyone's radar so far: https://www.amazon.com/Beginning-Modern-Unix-Comfortably-Environment/dp/1484235274/ref=mp_s_a_1_2?keywords=beginning+modern+unix&qid=1573610363&sr=8-2
In all honesty ... personally I always found that one of the nicest things about any BSD is that any old UNIX book still applies, at least for the most part.
Just because textbooks and reference books can be dry doesn't mean they're not creative.
Here's another and another. O'Reilly published books have a couple clever or "funny" ones.
Books that I find very useful:
Beginning Portable Shell Scripting: From Novice to Professional
From Bash to Z Shell: Conquering the Command Line
Unix Power Tools, Third Edition
The UNIX Programming Environment
Running Linux (mine is old, but still useful)
I have bought lots of other useful books from O'Reilly.
Anything written by Michael W Lucas.
I realize this has more than the OP was looking for (ie the other shells). but UNIX Shells By Example is by far my favourite book I've come across in terms of learning scripting, might want to check it out.
Unix Shell Programming (3rd Edition), by Stephen Kochan (old bell labs employee):
http://www.amazon.com/Unix-Shell-Programming-3rd-Edition/dp/0672324903
Read "The Linux Command Line" from cover to cover (it's free). You'll easily be a beginner shell scripter by then and probably a better Linux user overall. The book is also an easy read.
From there go into "Unix Shell Programming". If you reduce the gap between the 2 books, the 2nd book will also be an easy (yet somewhat dry) read.
Try to build some small projects while going thru the material. If you use it you'll be more apt to retain the info.
That's what I did. Took me 2 months of reading afterhours of my full time job. By the time the 2 months was up I surprisingly knew more shell scripting than most Linux Admins I've met since. (Admittedly, a lot of people in IT really don't know as much as they try to make it seem.) The only thing missing was experience and projects to use as practice.
Edit: You probably would do really well getting a LinuxAcademy subscription for a year and go thru as much as possible.
> unix power tools book
This?
You got your URL and link-text swapped, should go like this:
This is the book I normally point folks to
>What exactly do you mean by watching it to see CPU? I'm quite familiar with Top -u, but is there a way to view just that processes CPU? I kind of want to watch it through my computer while browsing and see what happens.
You need to get its PID first. My favorite way to do that is with System Status from the App Store, which lists running processes with PIDs (although you can't kill them or anything).
Then use:
top -pid PID
To see just that process's stats.
>Does that Jetslammed tweak have anything related to this or help this?
Jetslammed can change a launchdaemon's HighWaterMark RAM limit, the limit of sustained RAM usage at which Jetsam automatically kills the daemon.
http://newosxbook.com/articles/MemoryPressure.html
The HWM can also be changed manually, but, in the end, it doesn't really help that much unless a daemon is only dying due to exceeding its HWM.
It can still be killed for other reasons if the system is low on memory.
It doesn't actually keep discoveryd from EVER being killed, so it doesn't really solve the issue of very large hosts (>300 KB) files causing random website disconnects due to discoveryd dying, leading to DNS failure.
It really just fixes it so that you can have Wifried and a small ad blocking hosts file at the same time since Wifried + even a small hosts file (like Light UHB) will cause discoveryd to use about 9-10 MB, exceeding the 8 MB HWM limit for a long period of time, causing discoveryd to be automatically killed, causing Wifried to re-initialize Wifi, causing random Wifi disconnects, which is even more problematic than even a DNS failure.
Wifried with Jetslammed raises the HWM for discoveryd to 12 MB from 8 MB, preventing the HWM killing of discoveryd with Wifried + small ad blocking hosts file. A large hosts file will exceed even this new limit, but, in that case, where discoveryd uses 20 MB or more, it will be killed by the system anyway for other reasons not related to the HWM.
>So do I have the correct Light UHB? Is that the one you use? I guess I might try reinstalling and maybe see. Haven't had an issue since its crash and (haven't checked today) haven't seen it anywhere near the top when running "top".
I use Light Untrusted Hosts. I've watched discovery's PID for about a month now. It's not being jetsam killed anymore even if I load a LOT of tabs and really stress it out. It never goes over 8 MB (the HWM) for any sustained period of time (even 8 MB requires A LOT of DNS activity), and never reaches enough RAM usage that the system would think to kill it to free memory (10-20 MB). Gamed (the GameCenter daemon) uses more memory than discoveryd with Light UHB . . .
>-unrelated- I love learning about all this stuff and your fountain of knowledge so far. Mind if I asked where you learned so much? I've been learning a lot about daemons lately, especially locationd and backboardd. I'm just curious as to where I can learn more about this stuff, learn how to read crash logs as so far it's just from the little experience I have, etc. I just can't find any good resources..
I've used OS X since it was in beta, and iOS is secretly just OS X in disguise with a TouchUI, a few processes missing, and a few processes added.
This book has been helpful to me in understanding jailbreaking, although it is a bit dated:
http://www.amazon.com/iOS-Hackers-Handbook-Charlie-Miller/dp/1118204123
Also a bit dated, but you may like it if you have a Mac:
http://www.amazon.com/Learning-Unix-OS-Going-Terminal/dp/1449332315/ref=sr_1_1?s=books&ie=UTF8&qid=1418694791&sr=1-1&keywords=OS+X+unix
This wiki is also good. Many devs post on it:
https://theiphonewiki.com/wiki/Main_Page
This is the book I normally point folks to. It has, in my opinion, some of the best explanation for regular expressions that I've run across, and hits on basically all the behind the scenes stuff you'd want to know.
Edit: Unfucked my formatting.
I know I have to know bash but should I really take it serious ? , I mean should I read some books around it or some tutorials is enough before studying python-perl ..etc ?
what is your opinion about this book
http://www.amazon.com/Shell-Scripting-Recipes-Problem-Solution-Approach/product-reviews/1590594711/ref=cm_cr_dp_see_all_btm?ie=UTF8&showViewpoints=1&sortBy=recent
UNIX Shells by Example by Ellie Quigley is a great text to pick up shell scripting.
If you're looking for a book I highly recommend Unix Shells by Example:
http://www.amazon.com/UNIX-Shells-Example-4th-Edition/dp/013147572X/ref=la_B001H9RV1E_1_2?ie=UTF8&qid=1346897356&sr=1-2
I like it because it's light on the banter and explanation that's so common with tech books, and heavy on the examples. It's had a permanent spot on my work bookshelf for the last 10 years
UNIX Shells by Example by Ellie Quigley. Reviews here.
Beginning Unix
How Linux Works
So basically read the O'Reilly books: Learning the Unix... and Unix Power Tools.
I enjoy reading shell scripts. This was an interesting premise for a blog but a bit light.
I'd recommend:
http://www.tldp.org/LDP/abs/html/
http://www.amazon.com/Unix-Shell-Programming-Stephen-Kochan/dp/0672324903/ref=sr_1_16?s=books&ie=UTF8&qid=1376482562&sr=1-16&keywords=shell+script+programming
Buy this book: <https://www.amazon.com/Unix-Shell-Programming-Stephen-Kochan/dp/0672324903&gt; and learn how the POSIX shell can make your life easier.
I've been a web developer for two years and can tell you what I learned over time that led to me getting an internship at a software company. I didn't major in computer science but I did eventually go to a bootcamp.
I'll note that I'm not a huge fan of that flowchart, because it's backwards. You need to be familiar with what all those tools can accomplish, but I don't think anybody is capable of holding expert-level competence in so many areas at the same time. The key is getting to the point where you know or can figure out what tool will be required for any given task. For example, I don't really know much about Websockets, but I know that I'd probably need them if I wanted to build a chat application.
Anyway, here's my learning track in terms of programming
Pre-2011: Excel formulas
First programming I ever did for a bunch of random things, and at this time I didn't realize I wanted to be in software development yet.
2011-2013: SQL
Started with the DBA where I was working sending me a Word document with some common queries I could run in a SQL client so I could answer other people's questions and same him time. Over time I learned how to change the queries and then write my own. This book helped: https://www.amazon.com/SQL-Queries-Mere-Mortals-Hands/dp/0321444434/ref=sr_1_2?ie=UTF8&amp;qid=1494701750&amp;sr=8-2&amp;keywords=sql+queries+for+mere+mortals
2013-2014: Java, shell scripting, other unix/linux related things
Took a programming class using Java and a shell scripting class in a local university's online program. Used these books:
https://www.amazon.com/Java-Introduction-Problem-Solving-Programming/dp/0132162709/ref=sr_1_14?ie=UTF8&amp;qid=1494701761&amp;sr=8-14&amp;keywords=introduction+to+programming+with+java
https://www.amazon.com/Unix-Shell-Programming-Stephen-Kochan/dp/0672324903/ref=sr_1_6?ie=UTF8&amp;qid=1494701778&amp;sr=8-6&amp;keywords=unix+programming
I think Java is a very good first object oriented language to learn, even though most bootcamps want to do either Ruby or Javascript. Ruby (and Rails) have a little too much syntax sugar and other shortcuts that make it hard for a beginner to understand, and JavaScript is just plain weird (along with its ecosystem, which requires knowing a little history of the language and why it is the way it is).
2015: Ruby, Rails, a little JS. Attended a bootcamp and got my first job.
2016: ReactJS, actually understanding JS
2017: More JS, and now learning Elixir and the Phoenix framework.
As I mentioned before, these languages and frameworks are just tools. The way I've learned has been to do projects, figure out what tools would be necessary to accomplish all the functionality, and then slowly make progress on learning how to use those tools, eg, copy/pasting, modifying code other people have written, and then finally taking the training wheels off.
Here's the one I was thinking of: http://www.amazon.com/Unix-Power-Tools-Third-Edition/dp/0596003307
You don't need the book, but I like learning from practical examples and then using that as a jumping off point. If you like starting with examples for learning - this is the book for you.
It will teach you the semantics of the posix interface and introduce you to some canonical utilities. That information is relevant today (we still use sed, make, etc..). Given the choice, I'd probably opt for a book specific to linux, freebsd, etc.. kernels alongside something like unix power tools.
http://www.amazon.com/Power-Tools-Third-Shelley-Powers/dp/0596003307/ref=sr_1_1?ie=UTF8&amp;qid=1304099248&amp;sr=8-1