什么是 .sh 文件?

新手上路,请多包涵

所以我在处理过多的文件类型方面没有经验,而且我无法找到关于 .sh 文件的确切信息。这是我正在尝试做的事情:

我正在尝试下载按图块排列的地图数据集,可以单独下载:http: //daymet.ornl.gov/gridded

为了一次下载一系列图块,他们说要下载他们的脚本,最终导致 daymet-nc-retrieval.shhttps ://github.com/daymet/scripts/blob/master/Bash/daymet- nc-retrieval.sh

那么,我到底应该如何处理这段代码呢?该网站不提供进一步的说明,假设用户知道如何处理它。我猜您应该将代码粘贴到其他一些未提及的浏览器应用程序中(在这种情况下使用 Chrome 或 Firefox)?它几乎看起来像是可以粘贴到 Firefox/Greasemonkey 中的东西,但不完全是。只是通过快速谷歌上的文件类型,我无法得到它的正面或反面。

我确信对于如何处理这些文件有一个简单的解释,但它似乎隐藏在很多帖子中,人们已经假设你知道如何处理这些文件。任何人都愿意简单地说在进入带有代码的页面后从第一点开始需要做什么来实际实现它吗?谢谢。

原文由 Tony H 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 734
2 个回答

如果您在浏览器中打开第二个链接,您将看到源代码:

 #!/bin/bash
# Script to download individual .nc files from the ORNL
# Daymet server at: http://daymet.ornl.gov

[…]

 # For ranges use {start..end}
# for individul vaules, use: 1 2 3 4
for year in {2002..2003}
do
   for tile in {1159..1160}
        do wget --limit-rate=3m http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc -O ${tile}_${year}_vp.nc
        # An example using curl instead of wget
    #do curl --limit-rate 3M -o ${tile}_${year}_vp.nc http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc
     done
done

所以这是一个 bash 脚本。有Linux吗?


无论如何,脚本不过是一系列 HTTP 检索。 wget 和 curl 都可用于大多数操作系统,并且几乎所有语言都有 HTTP 库,因此用任何其他技术重写都相当简单。 bash 本身也有一些 Windows 端口(git 包括一个)。最后但并非最不重要的一点是,Windows 10 现在 原生支持 Linux 二进制文件

原文由 Álvaro González 发布,翻译遵循 CC BY-SA 3.0 许可协议

什么是扩展名为 .sh 的文件?

它是一个 Bourne shell 脚本。它们用于类 UNIX 操作系统的许多变体中。它们没有“语言”,并且由您的 shell(终端命令的解释器)解释,或者如果第一行的形式为

#!/path/to/interpreter

他们将使用那个特定的解释器。您的文件有第一行:

 #!/bin/bash

这意味着它使用 Bourne Again Shell,即所谓的 bash。出于所有实际目的,它是旧 sh 的替代品。

根据解释器的不同,您将使用不同的语言编写文件。

请记住,在 UNIX 世界中,决定文件是什么的不是文件的扩展名(请参阅下面的“如何执行 shell 脚本”)。

如果您来自 DOS/Windows 世界,您会熟悉具有 .bat 或 .cmd 扩展名的文件(批处理文件)。它们在内容上不相似,但在设计上相似。

如何执行一个shell脚本

与一些不安全的操作系统不同,*nix 并不完全依赖扩展来确定如何处理文件。也使用权限。这意味着如果您在下载后尝试运行 shell 脚本,这将与尝试“运行”任何文本文件相同。 “.sh”扩展名只是为了方便您识别该文件。

您需要使文件可执行。假设您已将文件下载为 file.sh ,然后您可以在终端中运行:

 chmod +x file.sh

chmod 是用于更改文件权限的命令, +x 设置执行权限(在这种情况下适用于所有人),最后你有你的文件名。

您也可以在您的 GUI 中执行此操作。大多数情况下,您可以右键单击文件并选择属性;在 XUbuntu 中,权限选项如下所示:

XUbuntu 中的文件权限

如果您不想更改权限,也可以强制 shell 运行该命令。在终端中,您可以运行:

 bash file.sh

shell 应该与脚本第一行中的相同。

它有多安全?

您可能会觉得很奇怪,您必须手动执行另一项任务才能执行文件。但这部分是因为对安全性的强烈需求。

基本上,当你下载并运行一个 bash 脚本时,它就像有人告诉你“在你的计算机上按顺序运行所有这些命令,我保证结果会很好而且安全”。问问自己是否信任提供此文件的一方,问问自己是否确定从您认为的同一个地方下载了该文件,甚至可以看看里面是否有什么地方看起来不合适(尽管要求您对 *nix 命令和 bash 编程有所了解)。

不幸的是,除了上面的警告之外,我不能一步一步地描述你应该做些什么来防止你的计算机发生邪恶的事情;所以请记住,任何时候你从某人那里获取并运行一个可执行文件,你实际上是在说,“当然,你可以用我的电脑做某事”。

原文由 v010dya 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题