Why 0 is true but false is 1 in the shell?

It’s a convention, but a particularly useful one when you think about it. In general, if a program succeeds that’s all you need to know. If it fails, however, you might need to know all kinds of information about the failure – why it happened, how to fix it, etc. Having zero mean ‘success’ and … Read more

How to insert a newline in front of a pattern?

This works in bash and zsh, tested on Linux and OS X: sed ‘s/regexp/\’$’\n/g’ In general, for $ followed by a string literal in single quotes bash performs C-style backslash substitution, e.g. $’\t’ is translated to a literal tab. Plus, sed wants your newline literal to be escaped with a backslash, hence the \ before … Read more

How to select lines between two marker patterns which may occur multiple times with awk/sed

Use awk with a flag to trigger the print when necessary: $ awk ‘/abc/{flag=1;next}/mno/{flag=0}flag’ file def1 ghi1 jkl1 def2 ghi2 jkl2 How does this work? /abc/ matches lines having this text, as well as /mno/ does. /abc/{flag=1;next} sets the flag when the text abc is found. Then, it skips the line. /mno/{flag=0} unsets the flag … Read more

What does $$ mean in the shell?

$$ is the process ID (PID) in bash. Using $$ is a bad idea, because it will usually create a race condition, and allow your shell-script to be subverted by an attacker. See, for example, all these people who created insecure temporary files and had to issue security advisories. Instead, use mktemp. The Linux man … Read more

Rearrange columns using cut

For the cut(1) man page: Use one, and only one of -b, -c or -f. Each LIST is made up of one range, or many ranges separated by commas. Selected input is written in the same order that it is read, and is written exactly once. It reaches field 1 first, so that is printed, … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)