Linux Shell脚本:自动化命令执行与高效管理指南
引言
Shell 是一个命令行解释器,允许用户与系统进行交互。它负责接收用户的输入并显示输出结果。
Shell 脚本是按照执行顺序编写的一系列命令。这些脚本可以包含函数、循环、命令和变量。脚本有助于简化复杂的命令序列和重复的任务。
在本文中,您将学习如何在 Linux 命令行中创建和执行 Shell 脚本。
先决条件
完成本教程需要以下准备:
- 熟悉终端的使用。
- 熟悉文本编辑器的使用。
- 熟悉
chmod
、mkdir
和cd
等命令。
开始使用
Shell 脚本文件需要保存为 .sh
扩展名。
文件需以 Shebang 行(#!
)开头,以告知 Linux 系统用于运行该 Shell 脚本的解释器。
对于支持 Bash 的环境,请使用:
#!/bin/bash
如果环境支持 Shell,请使用:
#!/bin/sh
本教程假设您的环境支持 Bash。
Shell 脚本也可以添加注释来提高可读性。一个好的脚本总是包含有助于读者理解脚本功能和设计选择背后理由的注释。
创建并运行一个基本的 Shell 脚本
您可以使用 vi
编辑器、cat
命令或任何文本编辑器来创建一个 Shell 脚本。
在本教程中,您将学习如何使用 vi
创建一个 Shell 脚本。
- vi basic_script.sh
这将启动 vi
编辑器并创建一个名为 basic_script.sh
的文件。
然后,在键盘上按下 i
键以启动插入模式。添加以下行:
#!/bin/bash
whoami
date
此脚本运行了 whoami
和 date
命令。whoami
显示当前活动的用户名,date
显示当前系统时间戳。
保存并退出 vi
编辑器:
- 按
ESC
键 - 输入
:
(冒号字符) - 输入
wq
- 按
ENTER
键
最后,您可以使用以下命令运行脚本:
- bash basic_script.sh
您可能会得到类似下列的输出。
root Fri Jun 19 16:59:48 UTC 2020
输出的第一行对应于 whoami
命令。输出的第二行对应于 date
命令。
您也可以在未指定 bash
的情况下运行脚本。
- ./basic_script.sh
以这种方式运行文件可能需要用户先给予权限。使用 bash
运行它不需要这个权限。
~bash: ./basic_script.sh: Permission denied
bash 文件名
命令只需要对文件的读取权限。
当使用命令 ./文件名
时,会将文件作为可执行文件运行,这需要执行权限。
要执行脚本,您需要更新权限。
- chmod +x basic_script.sh
这个命令使用 chmod
,并给当前用户增加 x
(可执行)权限。
在 Shell 脚本中使用变量
脚本可以包含用户定义的变量。事实上,随着脚本越来越大,拥有明确定义且具有自描述名称的变量变得至关重要。
在脚本中添加以下行。
#!/bin/bash
# 这是一个注释
# 定义一个变量
GREETINGS="Hello! How are you"
echo $GREETINGS
GREETINGS
是一个变量,通过 $
符号定义和访问。在给变量赋值的行里,不应该有空格。
运行脚本:
- bash basic_script.sh
这会打印出变量赋的值。
Hello! How are you
当脚本运行时,会定义 GREETINGS
并进行访问。
从命令行读取输入
使用 Shell 脚本可以与命令行进行交互,接受输入的能力。您可以使用 read
命令将命令行输入存储在变量中。
在脚本中添加以下行:
#!/bin/bash
# 这是一个注释
# 定义一个变量
echo "你的名字是什么?"
# 读取输入
read NAME
# 定义一个变量
GREETINGS="你好!你怎么样?"
echo $NAME $GREETINGS
一个变量 NAME
被用于从命令行接收输入。此脚本等待用户提供 NAME
的输入。然后打印出 NAME
和问候语。
你的名字是什么? Sammy Sammy 你好!你怎么样?
在这个例子中,用户给出了一个名字为 Sammy 的提示。
定义函数
用户可以在脚本中定义自己的函数。这些函数可以接受多个参数。
将以下内容添加到脚本中:
#!/bin/bash
# 这是一个注释
# 定义一个变量
echo "你想创建的目录名称是什么?"
# 读取输入
read NAME
echo "正在创建 $NAME ..."
mkcd ()
{
mkdir "$NAME"
cd "$NAME"
}
mkcd
echo "您现在在 $NAME 中"
这个脚本会要求用户输入一个文件夹名称。接着,它会使用 mkdir
创建该文件夹,并通过 cd
进入其中。
你想创建的目录名称是什么? test_dir 正在创建 test_dir … 您现在在 test_dir 中
在这个例子中,用户提供了输入“test_dir”作为提示。接下来,脚本使用这个名称创建了一个新的目录。最后,脚本将用户的当前工作目录更改为 test_dir。
结论
在这篇文章中,您学会了如何在 Linux 命令行中创建和执行 Shell 脚本。
考虑一些您经常执行的重复或耗时的任务,这些任务可能会受益于一个脚本。
继续通过学习 if-else
、数组和命令行参数来提升您的学习。