Here is a useful bash shell script which uses a menu driven user input and will display the following info :
- Your computer name
- List of users who have logged in
- Total disk space usage
- List of files and folders in your home directory.
Think of it as the automated response system (press 1 for A, press 2 for B and so on).
Here is the code (script is named as info.sh) :
# A simple menu driven script for user and system info
# Demonstrated for fun by guys at ihaveapc.com
# User menu with choices
echo " Please select your choice number from below or hit Ctrl-C to exit:"
echo "--------------------------------------------------------------------"
echo "Press 1 to find out your system name"
echo "Press 2 to find out your disk space usage"
echo "Press 3 to see who is currently logged in"
echo "Press 4 to list the contents of your home directory"
# Read the choice from user and store in variable named choice
read choice
#Use case to match the variable value and do appropriate stuff
case $choice in
1)
echo "Your computer name is :"
echo "-----------------------"
hostname;;
2)
echo "Disk space usage is"
echo "-------------------------"
df -h;;
3)
echo "Currently logged in users are"
echo "-----------------------------"
who;;
4)
echo "Hi $USER, the contents of your home directory are :"
ls -ltr /home/$USER;;
*) echo "Please rerun the script and enter a valid choice between 1 to 4";;
esac
Make it executable (sudo chmod a+x info.sh) and run it (./info.sh) to have fun.
It uses the case statement to evaluate user choices and run appropriate commands. (You can try to refine it by bringing the main menu back once a valid choice is executed.)
Here are the outputs :
If you enter an invalid choice, your system will shut down and you will lose your unsaved work (that was a joke but you can do it 😉 ) :
Cheers.
[ For understanding the basics of shell scripting primer, start from here. ]
[…] to the one before which listed computer name, list of logged in users and so on. Check it out here. As always, the cool thing about Linux shell scripts is that various commands can be neatly […]