If you find, you can't use erase-buffer and shows text is read only.
You can use following replace function.
(defun eshell/clear ()
"Hi, you will clear the eshell buffer."
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)
(message "erase eshell buffer")))