top | item 31832227

(no title)

pozol | 3 years ago

have you found any ways to get past that experience trough? I definitely feel like i’m there now

discuss

order

chasil|3 years ago

The author of the musl C library has a very poor opinion of the POSIX shell, and has published his "tricks" to force expected behavior.

This is very useful for those who are stumped by a failing script.

"I am a strong believer that Bourne-derived languages are extremely bad, on the same order of badness as Perl, for programming, and consider programming sh for any purpose other than as a super-portable, lowest-common-denominator platform for build or bootstrap scripts and the like, as an extremely misguided endeavor. As such you won’t see me spending many words on extensions particular to ksh, Bash, or whatever other shells may be popular."

https://www.etalabs.net/sh_tricks.html

woodruffw|3 years ago

For me, it helped to stop thinking of the shell as an efficient way to accomplish a task (it certainly is), but as a way to express my intent (the way I would in a normal programming language). That, combined with some automated tooling (shellcheck) and a handful of best practices (arrays over strings, avoiding the "cat pipe" pattern[1], etc.) has worked well for me. But I don't know how well that generalizes!

[1]: https://www.linuxjournal.com/content/put-down-pipe

jve|3 years ago

> avoiding the "cat pipe" pattern

For me, `cat | grep/sort` is easier to remember as it follows some unixy philosophy on how to do things.

I wonder why that article author is so obsessed with putting down cat/pipe. Maybe in scripts where you process large files and sort/grep it is less ineffective. But when writing shell commands, I see this as an empty argument to retrain my "muscle memory" and learn "different syntax".

In fact, when writing powershell I do the same: `gc something | sls something`. But I know it is less effective, but I'm lazy to look up proper syntax: `sls ?? something` - But if I ever will need that in a script to process non trivial amount of files-lines - I'll look it up.

nerdponx|3 years ago

I did it by blocking out time to read the manual pages. Yes, it is slow and tedious. But the manuals make a lot more sense once you already know how the tools work at a basic level.