介绍
本教程旨在教您如何为各种用途编写 shell 脚本。 Shell 脚本可用于运行多个命令、具有复杂和广泛参数的单个命令,或者用于分发您的工作的更用户友好的界面。 从本质上讲,它通过自动化你必须手动完成的事情来让你的生活更轻松。
设置文件夹
在开始编写 shell 脚本之前,最好将其指定为文件夹。 对于个人脚本,建议您在 ~/bin 中重新执行。 要创建该文件夹,请运行:
mkdir ~/bin
要让脚本从系统中的任何位置运行,请通过运行以下命令编辑您的 /etc/profile:
sudo nano /etc/profile
然后将以下行添加到文件末尾:
PATH=$PATH:$HOME/bin export PATH
记得按 CTRL+O 保存,按 CTRL+X 退出。 您可以通过运行使更改生效:
source /etc/profile
如果您的 Linux 发行版不支持 source 命令,您还可以通过键入以下命令重新启动 VPS:
sudo reboot
创建文件
要启动您的 shell 脚本,您需要创建一个可执行文件。 这可以通过运行轻松实现:
touch ~/bin/firstscript chmod +x ~/bin/firstscript
打开 nano 文本编辑器开始添加命令:
nano ~/bin/firstscript
为了让程序加载器将此可执行文件识别为 shell 脚本并从正确的目录运行命令,您必须将以下行添加到文件顶部:
#!/bin/sh
你已经准备好添加任何你想要的 Linux 命令,例如:
clear echo “Hello World!”
保存 (CTRL+O) 并退出 (CTRL+X) nano 后,要运行脚本,只需输入:
firstscript
从系统中的任何位置。 结果应该是这样的:
示例脚本
shell 脚本的要点之一是为重复性任务创建快捷方式。 例如,如果您要将大量文件移动到 ~/backup 文件夹,您可以设置一个脚本,该脚本会简单地删除您指定的任何内容。 它的工作方式是输入:
filebackup file-name1 file-name2...
然后,当你需要它时,它就会出现。 在我们开始编码之前,让我们看看你需要学习什么。 编写良好的 shell 脚本不是硬编码的。 这意味着,在此示例的范围内,如果您想更改备份文件夹,只需更改脚本中的第一行之一即可轻松完成。 是的,它对应的变量只会被引用一次,但如果你现在习惯了它,它会真正帮助你。 要对此进行测试,您无需跳入文本编辑器,直接从命令行输入:
testvariable=teststring
“echo”命令输出文本。 通过运行:
echo $testvariable
您将能够看到您为其设置的值,在本例中为“teststring”。 现在你可以照常开始编码了。
touch ~/bin/filebackup chmod +x ~/bin/filebackup nano ~/bin/filebackup
请记住,任何以“#”开头的行都是注释。 它不会以任何方式影响您的程序,除非在程序的第一行后面跟着一个感叹号,然后变成“shebang”,正如前面在“#!/bin/sh”行中解释的那样被介绍了。 这就是脚本的样子:
#!/bin/sh #Backup script #Description: makes a copy of any given file at the backup folder #Author: Your Name #Date: 8/10/2013 #Backup folder; set this variable to any folder you have write permissions on BACKUPFOLDER=~/backup #The script will make sure the folder exists mkdir -p $BACKUPFOLDER #Now the script will copy the given file to the folder cp -a $@ $BACKUPFOLDER
现在,在您保存 (CTRL+O) 并退出 (CTRL+X) 之后,让我们回顾一下代码。 前几行只是评论。 然后,我们使用 BACKUPFOLDER 变量指定我们希望备份文件的位置。 我们继续运行“mkdir -p $BACKUPFOLDER”。 这样做是它创建文件夹,但如果它已经存在则不会给出任何错误。 在下一个命令“cp”中,我们将执行脚本调用的每个参数都放在了“$@”中。 此上下文中的参数是您在调用要备份的脚本后放置的所有文件名。 紧随其后的是目标文件夹,在本例中为“$BACKUPFOLDER”。 您现在可以通过使用几个文件转到系统上的任何文件夹并运行来测试您的脚本:
filebackup file1 file2
您可以在该行中添加任意数量的文件,它们都将被复制到备份文件夹中。
结论
Shell 脚本在 Linux 系统上无处不在,这是有原因的。 它们非常有用,而且可能性非常高。 本教程仅涵盖基础知识,还有更多要学习的内容。