答案1
我不知道每个选项在哪里例子请参阅。这里有一个实用教程 -如何创建具有类似菜单的脚本。
首先你需要安装dialog
。此应用程序提供了一种从 shell 脚本显示几种不同类型的对话框的方法:
sudo apt install dialog
然后创建可执行文件,我们称之为smenu
,并将其放入目录中/usr/local/bin/
,这样它将可以作为系统范围内的 shell 命令访问:
sudo touch /usr/local/bin/smenu
sudo chmod +x /usr/local/bin/smenu
sudo nano /usr/local/bin/smenu
脚本内容看起来应该是这样的:
#!/bin/bash
HEIGHT=18
CHOICE_HEIGHT=10
WIDTH=78
BACKTITLE="SYSTEM MENU"
TITLE="[ M A I N - M E N U ]"
MENU="Tasks:"
OPTIONS=(
Network/IP "IP Settings [sudo nano /etc/hosts ]"
Network/DNS "DNS Settings [sudo nano /etc/resolv.conf ]"
Network/IFCS "Network Interfaces [sudo nano /etc/network/interfaces ]"
Timezone "Set Time Zone [sudo dpkg-reconfigure tzdata ]"
Reboot "Reboot the System [sudo systemctl reboot ]"
Shutdown "Shutdown the System [sudo shutdown ]"
Logout/Exit "Logout the Session [logout ]"
Update "Update & Upgrade & autoRemove & autoClean [sudo apt ...]"
Edit "Edit this script [sudo nano /usr/local/bin/system-menu]"
Shell "Exit to Shell"
)
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
case $CHOICE in
Network/IP)
sudo nano /etc/hosts
;;
Network/DNS)
sudo nano /etc/resolv.conf
;;
Network/IFCS)
sudo nano /etc/network/interfaces
;;
Timezone)
sudo dpkg-reconfigure tzdata
;;
Reboot)
sudo systemctl reboot
;;
Shutdown)
sudo shutdown
;;
Exit)
logout
;;
Update)
sudo apt update && sudo apt upgrade && sudo apt autoremove && sudo apt autoclean
echo "**"
sudo uname -a
echo "**"
sudo lsb_release -a
echo "**"
[ -e /var/run/reboot-required* ] && echo "Reboot is required!" || echo "Reboot is not required."
;;
Edit)
sudo nano /usr/local/bin/smenu
;;
Shell)
exit
;;
esac
- 复制以上内容并使用
nano
:Shift+Insert粘贴;Ctrl+O和Enter保存;Ctrl+X退出。 - 脚本中使用的所有命令均可在 Ubuntu 16.04 中使用。
- 括号之间的内容
[...]
只是对将要执行的内容的提醒。
现在您将能够通过命令访问脚本smenu
。结果应该是:
如果您想在登录终端后打开此脚本,请将下一行附加到文件底部~/.bashrc
:
/usr/local/bin/smenu
dialog
可以使用工具来代替whiptail
,它提供与 相同的功能(和选项)dialog
,并且默认安装在大多数 Ubuntu 发行版中。为此,请使用上述脚本并按22
以下方式更改行:
CHOICE=$(whiptail --clear \
现在我们的脚本/命令的输出smenu
应该是这样的: