【问题标题】:What's a .sh file?什么是 .sh 文件?
【发布时间】:2012-11-28 02:56:52
【问题描述】:

所以我在处理过多的文件类型方面没有经验,而且我无法找到很多关于 .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 中的东西,但不完全是。只是通过快速谷歌上的文件类型,我无法得到它的正面或反面。

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

【问题讨论】:

  • .sh 扩展名用于 shell 脚本。
  • 你在unix系统上吗?因为否则该脚本不会有太大帮助。

标签: linux sh download-manager


【解决方案1】:

sh 文件是 unix (linux) shell 可执行文件,它们与 Windows 上的bat 文件等效(但功能更强大)。

因此,您需要从 linux 控制台运行它,只需像在 Windows 上使用 bat 文件一样输入名称即可。

【讨论】:

  • 根据具体的操作系统,可能需要运行chmod +x file.sh
  • 我想说 bash 更像是 windows 的 VBS,而不是 windows 的批处理,因为批处理是一种 DOS 语言。
【解决方案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 现在有 native support for Linux binaries

【讨论】:

  • 我没有 Linux,我在 Windows 7 上运行。这是否仅适用于 Linux 用户?
  • 它适用于除 Windows 之外的大多数操作系统(Linux、Unix、MacOS...)。
  • 我在 windows 中的 bash 脚本上做了一些搜索,看起来这个主题已经涵盖了一点:stackoverflow.com/questions/6413377/… 我会尝试看看它是如何工作的。
  • 有 Linux 吗?当天最佳答案:)
【解决方案3】:

.sh 文件通常是一个 shell 脚本,您可以在终端中执行它。具体来说,你提到的脚本是一个bash脚本,你打开文件看文件的第一行就可以看到,叫做shebang或者magic line。

【讨论】:

    【解决方案4】:

    我知道这是一个老问题,我可能不会提供帮助,但是许多 Linux 发行版(例如,ubuntu)都有“Live cd/usb”功能,所以如果你真的需要运行这个脚本,你可以试试引导您的计算机进入 Linux。只需将 .iso 刻录到闪存驱动器(这是http://goo.gl/U1wLYA 的方法),在插入驱动器的情况下启动计算机,然后按 F 键进入启动菜单。如果您选择“...USB...”,您将启动到您刚刚放在驱动器上的操作系统。

    【讨论】:

    • 但是该文件只能在实时版本上运行。用户需要将文件复制回主操作系统 (Windows)。
    【解决方案5】:

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

    这是一个Bourne shell script。它们用于类 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 中,权限选项如下所示:

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

    bash file.sh
    

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

    安全性如何?

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

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

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

    【讨论】:

    • 你实际上是在说,“当然,你可以用我的电脑做点什么” ..这让我很头疼..谁只是通过谷歌搜索运行任何东西..
    • 顺便说一句,在 Ubuntu 中,即使文件以#!/bin/bash 开头,我们也可以通过dashsh 运行它。这怎么可能?
    【解决方案6】:

    在终端中打开位置,然后输入这些命令 1. chmod +x 文件名.sh 2. ./文件名.sh 就是这样

    【讨论】:

      【解决方案7】:

      如何运行 .sh 脚本?

      给你的脚本执行权限:

      chmod +x /path/to/yourscript.sh 并运行您的脚本:

      /path/to/yourscript.sh 自从 。指当前目录:如果yourscript.sh在当前目录下,可以简化为:

      ./yourscript.sh

      或使用图形用户界面

      https://askubuntu.com/questions/38661/how-do-i-run-sh-scripts/38666#38666

      https://www.cyberciti.biz/faq/run-execute-sh-shell-script/

      【讨论】:

        猜你喜欢
        • 2017-03-18
        • 2011-04-28
        • 2014-04-30
        • 1970-01-01
        • 2014-01-31
        • 2022-01-25
        • 2015-03-08
        • 2019-04-06
        • 2011-12-12
        相关资源
        最近更新 更多