1

I am writing a script. What is the difference between the following two lines?

grep . || echo something

and

grep "^\." || echo something

1 Answer 1

1

Grep uses regular expressions; there, a single full stop . matches any single character. To match a literal full stop/period, you need to escape it with a backwards-slash like so: \.. ^ means 'the beginning of the line'.

So, grep . will match anything that contains a single character (so I suppose it wouldn't match empty lines). On the other hand, grep "^\." matches any line that starts with a literal .

In bash, || means 'or'; grep "^\." || echo something will echo something if the grep doesn't turn up any lines (so it evaluates to false). && is used for 'and' in bash.

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .