我刚刚开始学习 Linux 终端的基础知识,对于将终端命令转换为 shell 脚本有点困惑。我将如何在 Linux 终端中创建脚本文件并创建以下代码的 shell 脚本版本:
curl -O https://people.sc.fsu.edu/~jburkardt/data/csv/cities.csv
head -n 12 cities.csv
答案1
使用文本编辑器创建脚本
脚本保存到文本文件中。您可以在文本编辑器中创建一个,例如gedit
或nano
:
$ nano yourscript.sh
一般文件名和文件扩展名特别重要。在你的脚本文件中,你必须声明解释器的可执行文件以运行它(shebang)。然后添加您的代码。要将脚本保存在 中nano
,请按Ctrl+ X,然后键入y
并点击Enter。
编写你的脚本
如果将参数传递给脚本,则可以在代码中按编号引用它们(第一个传递的参数是$1
,第二个参数是$2
,依此类推)。$0
是脚本的名称本身。
作为基本规则,始终在变量周围使用双引号。
以您的代码为例,脚本可能是:
#! /usr/bin/bash
curl -O "$1"
head -n 12 cities.csv
后面可以有一个空格#!
,但没有必要。在大多数情况下,您可以检查$0
终端中的变量shell 可执行文件在终端中解释你的命令:
$ type $0
bash is /usr/bin/bash
改进你的代码
假设您只需要下载文件的前 12 行,您可以跳过保存下载的文件到磁盘和通过管道将其传递到下一个命令:
#! /usr/bin/bash
curl -s "$1" | head -n 12
作为奖励,它允许您在脚本中省略文件名。
运行脚本
假设您将脚本保存为yourscript.sh
,请首先添加执行它的权限:
$ chmod +x yourscript.sh
然后,要运行它,您需要指定它的路径并提供参数。如果它位于当前目录中,您可以通过在前面添加以下内容来指定它的路径./
:
$ ./yourscript.sh 'https://people.sc.fsu.edu/~jburkardt/data/csv/cities.csv'
答案2
您在提示符下一一键入的所有命令都可以简单地放入脚本文件中并执行一次。
唯一的要求是解释器行,它应该位于文件的开头
#!/bin/sh
您可以为其他脚本编写脚本,例如 bash (
#!/bin/bash
) 或 zsh (#!/bin/zsh
)通过运行使脚本可执行
chmod +x scriptFile.sh
(最好有 sh 扩展名,因为它表明它是一个脚本文件)运行脚本通过
./scriptFile.sh
可选:您可以将目录路径添加到 PATH 变量,以便能够通过调用从任何目录执行脚本,scriptFile.sh
就像调用任何其他 shell 命令一样ls
,或者cat