Live data from Hacker News

Ask HN: How can I get better at bash?

news.ycombinator.com

191–195 of 195 posts

Re: Ask HN: How can I get better at bash?

#192

Besides the obvious answers of just reading the manual, looking up howtos, and stackoverflow I can recommend some habits that might increase your uptake of bash. 1. If you are not running a unix as your default OS switch to one (ie Linux or Mac). 2. Create a bin (~/bin) directory in your home directory of all your shells scripts and source control it. Any script you ever write put in that directory. Even if its not b…

Little late here but do you have any links for #6?

I've not been able to find anything good on setting up a dev machine image with packer.

Re: Ask HN: How can I get better at bash?

#193

Earlier quoted context omitted.

Bash is unbeatable as a functional concept for chaining command-line tools together. Once you start getting functions or even a lot of if/while constructs, it's usually time to switch to Python/Perl.

I wrote a guide to the shell (posted elsewhere here). I concur with this statement wholeheartedly. Bash as a command language is exceptional, as a scripting language it is sub-par at best. I've been using Ruby a lot lately in command line scripting, little things like $ ls /*.orig | ruby -e 'while f = gets do ... end' It's not quite as easy as the shell tools for little things, but I feel like the crossover point whe…

I used to think of it in terms of "number of lines" but then I found a task that worked quite well in a longer bash script (creating a .deb file). In fact, it worked better than if it were a python script, because all the commands were right there.

Now my metric is, "if it needs a function, or even a complex while loop,switch to perl/ruby"

Re: Ask HN: How can I get better at bash?

#194

Earlier quoted context omitted.

I wrote a guide to the shell (posted elsewhere here). I concur with this statement wholeheartedly. Bash as a command language is exceptional, as a scripting language it is sub-par at best. I've been using Ruby a lot lately in command line scripting, little things like $ ls /*.orig | ruby -e 'while f = gets do ... end' It's not quite as easy as the shell tools for little things, but I feel like the crossover point whe…

I used to think of it in terms of "number of lines" but then I found a task that worked quite well in a longer bash script (creating a .deb file). In fact, it worked better than if it were a python script, because all the commands were right there. Now my metric is, "if it needs a function, or even a complex while loop,switch to perl/ruby"

I think that what I would tell new people would be "more than ten lines, OR using more than two variables, OR any flow control constructs". Bash can make even simple conditional statements difficult, and while my rule is absurdly restrictive, Bash can still be amazingly useful within those bounds. Probably mine is the lower bound for "anything less complex than this is fine to write in Bash" and yours is "anything more complex than this should definitely not be written in Bash", with the middle ground being "have a good reason why Bash is the best tool for the job".

Re: Ask HN: How can I get better at bash?

#195

Earlier quoted context omitted.

I wrote a guide to the shell (posted elsewhere here). I concur with this statement wholeheartedly. Bash as a command language is exceptional, as a scripting language it is sub-par at best. I've been using Ruby a lot lately in command line scripting, little things like $ ls /*.orig | ruby -e 'while f = gets do ... end' It's not quite as easy as the shell tools for little things, but I feel like the crossover point whe…

I used to think of it in terms of "number of lines" but then I found a task that worked quite well in a longer bash script (creating a .deb file). In fact, it worked better than if it were a python script, because all the commands were right there. Now my metric is, "if it needs a function, or even a complex while loop,switch to perl/ruby"

I think that what I would tell new people would be "more than ten lines, OR using more than two variables, OR any flow control constructs". Bash can make even simple conditional statements difficult, and while my rule is absurdly restrictive, Bash can still be amazingly useful within those bounds. Probably mine is the lower bound for "anything less complex than this is fine to write in Bash" and yours is "anything more complex than this should definitely not be written in Bash", with the middle ground being "have a good reason why Bash is the best tool for the job".
Post reply on HN