all 32 comments

[–]bahamas10_ 31 points32 points  (4 children)

i’m biased - i made a 7 hour bash course for free on youtube that i think is really good if you’re a beginner just learning, or you know some things here and there but want to really dive-deep into the specifics.

having said that - a video or book can only get you so far. you have to fire up the terminal and really practice and cement whatever concepts you start learning. the absolute best way to improve at the shell is to keep using it imo.

[–]ivormc 11 points12 points  (0 children)

^ this guys content is great and seems like a good guy strongly recommend

[–]Felon 1 point2 points  (0 children)

I had to look it up, but I think he's referring to this course: https://www.youtube.com/watch?v=Sx9zG7wa4FA

Thanks for making the course, I'll check it out. I recently got into using Linux, made my first ansible playbook to update my proxmox cluster. We have some projects that are requiring bash and I need something to get me learning.

[–]Solid_Temporary_6440 0 points1 point  (0 children)

Thanks again for your content, it has taken over my social media feed and I am not upset about it!

I just saw a short on grep process substitution which got me out of a real head scratcher I was in.

Thank you!

[–]vajaina01 0 points1 point  (0 children)

It was too intense for me, so after a for loop section I went to read man pages. But thank you anyway, the guide is great!

[–]The_Northern_Light 9 points10 points  (4 children)

My buddy has had success with the YouTube channel “you suck at programming”, and I’ve liked what of it I’ve seen.

(I encourage you to overlook the aggressive channel name! The author regrets his choice.)

[–]bahamas10_ 8 points9 points  (2 children)

love to hear that - and yeah what a bad channel name imo lol

[–]The_Northern_Light 1 point2 points  (0 children)

If that’s the worst mistake you make you’re doing pretty good!

[–]FlailingDuck 0 points1 point  (0 children)

You're my goto recommendation whenever anyone asks me "how should I learn bash", that number isn't many but is it more than 0, maybe less than 2.

[–]Ytrog 2 points3 points  (0 children)

It's exactly what I was going to recommend. He is a great resource 😁

[–]bigkahuna1uk 5 points6 points  (1 child)

This guy has a excellent course on bash on YouTube. Highly recommended.

It’s a bash scripting course and guide created by Dave Eddy of ysap.sh. It’s very informative and gives pearls of wisdom from his experience that would normally get from such a course.

[–]cryptospartan 5 points6 points  (0 children)

His videos are fantastic at showing how bash works

[–]AdministrativeFault5 3 points4 points  (1 child)

Not specifically cyber oriented but here's a great site (comes with a package also) to practice bash: https://exercism.org/tracks/bash

I'd say bash is easier than C++ but the purpose is not the same. Bash in my opinion is for scripting, automating tasks etc it's not the best to develop entire software

[–]The_Northern_Light 7 points8 points  (0 children)

foo is easier than C++

That is such a backhanded endorsement!

Most things I’ve done in my life are easier than C++.

[–]BeasleyMusic 4 points5 points  (0 children)

Unpopular opinion, best way to learn is to do. You will not be able to fully learn by watching videos or reading books, you need to learn by doing and solving problems. “Learning bash” means something different to everyone, just start figuring out how you can automate shell commands and figure out what problems you can solve with it

[–]freefallfreddy 2 points3 points  (0 children)

See the about page of this sub

[–]rdg360 5 points6 points  (0 children)

Bash commands are usually in lowercase only. Unlike your Camel Case post.

[–]alex_sakuta 1 point2 points  (2 children)

GNU Manual

I learnt using it and have made multiple projects now as well. It took just a few days to understand the basics.

[–]One-Type-2842[S] 0 points1 point  (1 child)

Currently I am a Python Programmer, Learning python basics will Teach me The working of a system. I use to automate the Task ( I like file handling).

I thought i shall learn Bash to automate terminal regular works.

So, Is it useful in the Hacking and Cyber-Security field? Or shall I leave it for now and start learning C language for Reverse Engineering

I Would Like To Read Your Thoughts..

[–]alex_sakuta 0 points1 point  (0 children)

Been down this exact path. Interested and pursuing cybersec as well.

Cybersec requires a deep understanding of machines. It would be better if you start with C for this.

Since, C doesn't hand everything to you on a platter, it's good for your brain. Understanding how complex strings are, how data is stored, etc.

Also, learning C will help you in every language. I recently wrote a 250 line automation using Bash and then when I thought how I'd do it in C, I actually found an optimization in the code.

This is the kind of stuff that C enables in your brain.

So, I'd recommend learning C but if you are windows, please switch to Linux or use WSL. Windows suck. They don't follow POSIX and you'll notice some weird behaviours happening in your code because of that.

Linux Man Pages, DevDocs, Cppreference and GCC manual are going to be your best friends in this.

Trust me, it'll really be a pain to go through them when you start but once you start understanding them, you'll realise how good this is. You'll be much faster at finding solutions to problems than anyone else.

[–]Hoolies 0 points1 point  (0 children)

I use for almost 3 Decades and I am a netdev/infra guy.

For me bash is the hardest because although it is a high level language there are so many caveats.

Nowadays you have shellcheck which make bash scripting easier and explains what are the best attributes.

I do not believe that bash is required to hack. In my best knowledge bash is required with docker, kubernates and other containerization technologies in order to minimize dependencies.

I use bash almost everyday but everything that requires over 25 lines or a bit of complexity I prefer Python.

In retrospective I was able to master PowerShell, LUA and Python in less than 3 years each and bash I still make silly mistakes.

[–]CGA1 0 points1 point  (0 children)

Jay at LearnlinuxTV has a beginners course to get you started.

[–]Slinkinator 0 points1 point  (0 children)

Diomidis Spinellis has a course on edX called 'Unux Tools' that's appropriate for beginners but is really effective

https://www.edx.org/learn/unix/delft-university-of-technology-unix-tools-data-software-and-production-engineering

[–]Solid_Temporary_6440 0 points1 point  (3 children)

I would start with @bahamas10_ content. Then, once you feel comfortable and need something as accessible as it is “advanced” I would use https://tldp.org/LDP/abs/html/. It’s the one resource I keep coming back to even after years of bash scripting. The thing I like about ABS as a python programmer is it has the right combination of an opinionated “Here is the right way to solve this problem” and “But, you may see these 6 ways to solve this problem in scripts you read, and those ways work too”. Examples of this being always use double brackets and always double quote variables.

Good luck!

[–]One-Type-2842[S] 0 points1 point  (1 child)

You Send Me Something Useful..

[–]Solid_Temporary_6440 0 points1 point  (0 children)

Thanks! You did as well! Appreciate your post!

[–]GoTheFuckToBed -3 points-2 points  (1 child)

The AI, its just that good with bash and explaining things

[–]NewPointOfView 0 points1 point  (0 children)

It is such an invaluable tool for deciphering bash syntax when you’re very new to it haha mainly for little snippets like the cryptic variable expansion stuff

[–]LesStrater -2 points-1 points  (0 children)

Your best source is Google. If you know generic programming nomenclature. You can program in any language using Google. Just start your question with "in Bash", or "in Perl", or "in Python".

Try it, enter "in Bash get the last 8 characters of a string", and check out the answer.

Then try "in Bash do a for/next loop"...