You can clear the shell buffer like any other, if you get the cursor away from the current prompt, where its movement behavior is different. Here's one recipe, which feels intuitive to me but looks long when I write it down.
<Enter> to get a fresh prompt
C-b C-a moves the cursor to the beginning of the current line, to the left of your prompt
M-< to execute
C-x C-x to execute
exchange-point-and-mark, highlighting (nearly) everything in the buffer
C-w to execute
This gives you a shell buffer containing only (the final line of) the empty prompt you made at the start; you can put the cursor back in the usual place with
You can also trim outputs partially by using
C-c C-n and
C-c C-p to move through your command history from prompt to prompt, using
C-<Space> to toggle the mark while moving and selectively highlight command output you no longer need, and
C-w to kill highlighted regions.
This is convenient if you have some command history that you mostly want to keep, but you've accidentally run some verbose command whose output you're no longer interested in. More flexible than killing your entire history.
Unlike in console shells, your current method of
C-l C-l isn't actually clearing anything; it's running
recenter-top-bottom twice, which you can do in any shell or non-shell Emacs buffer.