Код для создания Bash menu в Linux

Пример кода работает под Root


print_header() {
clear
echo "========================================"
echo " NETWORK FIX "
echo "========================================"
}
#manu show
print_menu () {
local highlighted=$1
options=("Exit" "Ethernet Speed Check" "DHCP restart" "Service network restart" "Mount -a" "Exit")
for i in "${!options[@]}"; do
if [ $i -eq $highlighted ]; then
tput setaf 2; tput bold; echo "> ${options[$i]}"; tput sgr0
else
echo " ${options[$i]}"
fi
done
}
#main cycle
highlighted=0
options_count=6
while true; do
print_header
print_menu $highlighted
#read user input
read -rsn1 key
case $key in
$'\x1b') # ESC turns
read -rsn2 -t 0.1 key
if [ "$key" == "[A" ]; then
((highlighted--))
if [ $highlighted -lt 0 ]; then highlighted=$((options_count - 1)); fi
elif [ "$key" == "[B" ]; then
((highlighted++))
if [ $highlighted -ge $options_count ]; then highlighted=0; fi
fi
;;
"") #check ENTER data
case $highlighted in
0) clear; exit 0 ;;
1) clear; echo ""; echo "========================================"; ethtool eth0 | grep Speed; echo "========================================"; echo ""; echo "Press any key to continue"; echo ""; read -n1 ; sleep 1 ;;
2) clear; dhclient eth0 -v ; sleep 3 ;;
3) clear; service network restart ; echo ""; echo "Press any key to continue"; echo ""; read -n1 ; sleep 1 ;;
4) clear; mount -a ; echo "OK"; echo "Press any key to continue"; echo ""; read -n1 ; sleep 1 ;;
5) clear; exit 0 ;;
esac
sleep 1
;;
esac
done

Сравнение двух файлов в Linux

Если нужно найти разницу в двух практически идентичный файлах есть волшебная команда:

diff -y file1 file2 

выводит данные в 2 столбца разница будет выделена значком

|

если пакет diffutils не установлен (что очень маловероятно) ставится он командой:

sudo apt install diffutils