I'm trying to get watch to work correct with commands that contain quotes, and the watch man page isn't very detailed about how quotes work. To give a concrete example, how can I run the following command inside of watch:

ps -ef | awk -F' ' '{print $2}'

I've tried:

watch "ps -ef | awk -F' ' '{print $2}'"


watch 'ps -ef | awk -F\' \' \'{print $2}\''

but neither of these works correctly.

3 Answers 3


I guess you have to escape the $ sign:

watch "ps -ef | awk -F' ' '{print \$2}'"

otherwise it would be interpreted by the shell which would result in an empty string ("") - i.e. awk would print the whole line.


You could always put your command in a shell script, then "watch" the script.


I just met a similar problem. After reading the watch Man Page, I found a solution that could work, which is to concatenate strings in bash. The final command looked weird, such as:

watch "ps -ef | awk -F' ' '"'{print $2}'"'"


watch 'ps -ef | awk -F'"' ' '"'{print $2}'"'"

You must log in to answer this question.

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