This can be done by using cli parser views which are a feature of role-based access control (RBAC)
Theier is a good article here that explains it for routers using SDM but the concept is the same for most Cisco IOS and NX-OS-based devices.
The key commands would be:
parser view view-name
commands exec include all show
enable view view-name
username [username] privilege [privilege-level] view view-name