If you look at the man page for grep you can see that -v reverses the matching, and therefore the return/status code. -E means it's a regular expression. the [\t ] in the regex (regular expression) means "tab or space". The following star makes it mean "tab or space 0 or more times". The trailing "$" means that it should match the end of the line. The final grep means that lines NOT ending in a ":", any number of tabs or spaces and then "charging" and the end of the line should make grep exit with status code 0. This means that grep will return 1 as long as the computer is charging. The if will execute it's first branch when the status code is 0, which means we are effectively negating the result of grep, since we exit 1 when grep exits 0 and exit 0 when grep exists non-zero.