Ubuntu - 脚本编写
Ubuntu - Shell 脚本编程基础
Section titled “Ubuntu - Shell 脚本编程基础”在 Ubuntu 中进行 Shell 脚本编程,可以通过将一系列命令写入文件来实现任务自动化。这对于系统管理、自动化重复操作以及创建自定义工具来说非常有用。让我们创建一个简单的脚本来显示机器的主 IP 地址。
步骤 1 − 打开一个文本编辑器。对于命令行编辑,nano 是一个用户友好的选择。您也可以使用图形编辑器,如 Gedit(Text Editor)。要打开 Gedit,在您的应用程序菜单中搜索 ‘Text Editor’ 并启动它。在本例中,让我们在终端中使用 nano:
nano display_ip.sh此命令会打开 nano 并创建一个名为 display_ip.sh 的新文件。
步骤 2 − 在编辑器中输入以下文本。第一行 #!/bin/bash 被称为 ‘shebang’。它告诉系统此脚本应该使用 Bash 执行,Bash 是 Linux 中常见的 Shell。
#!/bin/bash
# Script to display the primary IP address
# Get the primary IP address (works for most common configurations)# hostname -I provides all IP addresses, awk '{print $1}' takes the first one.# 获取主 IP 地址(适用于大多数常见配置)# hostname -I 提供所有 IP 地址,awk '{print $1}' 取第一个。primary_ip=$(hostname -I | awk '{print $1}')
# Check if an IP address was found# 检查是否找到了 IP 地址if [ -n "$primary_ip" ]; then echo "This machine's primary IP address is: $primary_ip"else echo "Could not determine the primary IP address."fi让我们分解一下这个脚本:
#!/bin/bash: Shebang,指定解释器(interpreter)。# ...: 以 ’#’ 开头的行是注释(comments),会被解释器忽略。primary_ip=$(hostname -I | awk '{print $1}'): 此命令捕获输出。hostname -I列出所有网络接口(network interface)的 IP 地址。awk '{print $1}'从该列表中提取第一个 IP 地址。结果存储在变量primary_ip中。if [ -n "$primary_ip" ]; then ... else ... fi: 这是一个条件语句(conditional statement)。它检查变量primary_ip是否不为空(-n)。如果它有值,就打印 IP;否则,打印错误消息。echo "...": 此命令将文本打印到终端。
步骤 3 − 保存文件并退出编辑器。在 nano 中,按 Ctrl+O 写入(保存),按 Enter 确认文件名,然后按 Ctrl+X 退出。
如果您使用的是图形编辑器,如 Gedit,请将文件保存为您想要的目录中,例如您的主目录(home directory)或桌面(Desktop),文件名为 display_ip.sh。
步骤 4 − 在运行脚本之前,需要使其可执行。导航到您保存文件的目录(如果不在当前目录),并使用 chmod 命令:
chmod +x display_ip.shchmod +x 命令为所有用户添加文件的执行权限。您也可以使用 chmod u+x display_ip.sh 仅赋予文件所有者执行权限。
步骤 5 − 现在,执行脚本。如果您与脚本在同一目录中,使用以下命令运行它:
./display_ip.sh./ 告诉 Shell 在当前目录中查找脚本。
输出应该类似于:This machine's primary IP address is: 192.168.1.10(IP 地址会因您的网络配置而异)。如果找不到 IP,将显示错误消息。
这只是一个基本示例,但脚本可用于执行更复杂的任务,如备份、系统监控、软件部署等等。脚本中常用的工具包括 grep、sed、awk、find,以及控制结构如循环(for、while)和条件判断(if)。
常见陷阱:较旧的教程可能使用 ifconfig。在现代 Linux 系统中,ifconfig 命令已被弃用。ip 命令(ip addr)或 hostname -I 是获取网络信息的首选现代替代方案。