什么是.sh文件?

时间:2012-12-10 16:45:27

标签: linux sh download-manager

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

我确信有一个关于如何处理这些文件的简单解释,但它似乎埋藏在很多帖子中,人们已经假设你知道如何处理这些文件。有人愿意只是简单地说明在使用实际实现代码的页面之后需要从正方形做什么?感谢。

8 个答案:

答案 0 :(得分:80)

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

这是Bourne shell script。它们用于类UNIX操作系统的许多变体中。他们没有"语言"并由shell(终端命令的解释器)解释,或者第一行是否为

形式
#!/path/to/interpreter

他们会使用那个特定的翻译。您的文件有第一行:

#!/bin/bash

这意味着它使用Bourne Again Shell,所谓的bash。它是出于所有实际目的而取代好老的。

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

请记住,在UNIX世界中,它不是确定文件内容的文件的扩展名(请参阅如何执行shell脚本)。

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

如何执行shell脚本

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

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

chmod +x file.sh

chmod是一个用于更改文件权限的命令,+x设置执行权限(在本例中为每个人设置),最后您有文件名。

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

File permissions in XUbuntu

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

bash file.sh

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

它有多安全?

您可能会发现,为了执行文件,您必须手动执行其他任务,这一点很奇怪。但这部分是因为对安全的强烈需求。

基本上当你下载并运行一个bash脚本时,它就像有人告诉你的那样#34;在你的计算机上按顺序运行所有这些命令,我​​保证结果将是安全的"。问问自己是否信任提供此文件的一方,问问自己是否确定已经从您想到的同一个地方下载了文件,甚至可以在里面看一眼看看有什么不合适的地方(尽管这需要你对* nix命令和bash编程有所了解。

不幸的是,除了上面的警告,我无法逐步说明你应该做些什么来防止计算机发生恶意事件;所以请记住,任何时候你从一个你真正说过的人那里得到并运行一个可执行文件,"当然,你可以用我的电脑来做某事"。

答案 1 :(得分:36)

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

#!/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

答案 2 :(得分:30)

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

所以你需要从linux控制台运行它,只需输入与windows上的bat文件相同的名称。

答案 3 :(得分:4)

通常.sh文件是一个可以在终端中执行的shell脚本。具体来说,您提到的脚本是一个bash脚本,如果您打开文件并查看文件的第一行(称为shebang或magic line),您可以看到该脚本。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

.sh文件是一个shell文件。它可以用来打开程序而不是。

答案 6 :(得分:0)

打开终端中的位置,然后输入这些命令 1. chmod + x filename.sh 2. ./filename.sh 那是

答案 7 :(得分:-1)

我如何运行 .sh 脚本?

授予脚本执行权限:

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

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

./yourscript.sh

或使用图形界面

enter image description here enter image description here

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

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