Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Advanced Bash-Scripting Guide (tldp.org)
42 points by ekiauhce on June 28, 2024 | hide | past | favorite | 15 comments


There are many foot-guns to be found in bash scripting.

I highly recommend the Wooledge wiki for any and all bash knowledge, it points every place you can go wrong, especially when using advanced features.

https://mywiki.wooledge.org/FullBashGuide

http://mywiki.wooledge.org/BashFAQ



Really great resource. If you want more of a book format, I also highly recommend The Linux Command Line by William Shotts: https://linuxcommand.org/tlcl.php


Mandatory comment every time the subject comes up: shellcheck is really helpful when writing Bash scripts.

shellcheck itself is not written in Bash (it's written in Haskell) but it gives really good hints and find lots of bugs. If you disagree with some of its warnings, you can choose which ones you want to turn off.

I use it from within Emacs and it works fine. Set that thing once, years ago, and it's been helping me ever since.

Also: shellcheck probably ships with your Linux distro.


last update 2014

that being said, it think 10 years later, linux should pick a data oriented shell (powershell or nushell) and go full in on it

on windows, almost all services have some Powershell support

i understand that on linux, command line support is always there, so unlike windows adding command line support is not really news, but still i think the move to a data oriented shell, is better


On Windows,

    mv s:\src d:\dest
Works as you expect. Now on some unimportant directory try:

    mv s:\src
I have to think hard about an equivalently-stressful typo on another interactive shell.


well this is a critic of this one command, but how is it a critic of data oriented shells?


I'm probably just cranky. Moving files is a universal use-case, i.e. xargs predates Bourne. Maybe PowerShell hasn't arrived at the amount of reliability testing we expect from a data utility. If I saw it being used as such, I would ask for many assertions for both data manipulation and filesystem traversal.


for the record

  mv C:/folder 
will only delete if folder is empty


I suppose in POSIX:

    sudo ifdown ens1 ; ifup ens1
But this one is easier to understand.


I think POSIX mv is terrifying enough. I've found it to be much more dangerous than dd or rm.


There are so many things that can go wrong when scripting in the shell. If you don't sit down and play with it, trying to understand what's going on, then no guide will save you.

    : "${foo:=bar}"


I used to read this cover to cover when I first learnt bash. But I later found that its advice can be subpar from time to time. There are better resources in learning bash.


And those are?


Sorry, not going to go into details here. But I think the statement is not controversial. There’s probably well written criticism on it somewhere.

But then it wasn’t a bad starting point. I don’t have a better book to recommend. There are wikis with better info. But not in the form of a book which is also free I think.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: