What's a .sh file?
因此,我在处理过多的文件类型方面经验不足,并且我还无法找到有关
我正在尝试下载以可单独下载的图块形式排列的地图数据集:http://daymet.ornl.gov/gridded
为了立即下载一系列磁贴,他们说要下载脚本,最终导致
那么,我到底应该用这段代码做什么?假设用户知道如何使用该网站,则该网站不再提供进一步的说明。我猜您应该将代码粘贴到其他未提及的浏览器应用程序中(在这种情况下使用Chrome或Firefox)?看起来几乎可以粘贴到Firefox / Greasemonkey中,但并非完全如此。仅仅通过快速的Google搜索文件类型,我还是无法得出正面或反面的结论。
我敢肯定,对于这些文件的处理方式,有一个简单的解释,但是它似乎被埋在大量的帖子中,人们已经在假设您知道如何处理这些文件。任何人只想简单地说一遍代码所在的页面之后再实际实现它,从平方一开始需要做什么?谢谢。
什么是扩展名为.sh的文件?
这是一个Bourne shell脚本。它们用于类似UNIX的操作系统的许多变体中。它们没有"语言",由您的shell(终端命令的解释器)解释,或者如果第一行的形式为
1 | #!/path/to/interpreter |
他们将使用该特定的解释器。您的文件的第一行:
1 | #!/bin/bash |
这意味着它使用了Bourne Again Shell,即所谓的bash。出于所有实际目的,它可以代替旧的sh。
根据口译员的不同,您将使用不同的语言编写文件。
请记住,在UNIX世界中,文件的扩展名不是文件的扩展名(请参阅如何执行Shell脚本)。
如果您来自DOS / Windows,那么您将熟悉具有.bat或.cmd扩展名的文件(批处理文件)。它们在内容上不相似,但在设计上相似。
如何执行shell脚本
与某些愚蠢的操作系统不同,* nix并不完全依赖扩展名来确定如何处理文件。还使用权限。这意味着,如果您尝试在下载后运行Shell脚本,则与尝试"运行"任何文本文件相同。" .sh"扩展名仅是为了方便您识别该文件。
您将需要使文件可执行。假设您已将文件下载为
1 | chmod +x file.sh |
您也可以在GUI中进行操作。大多数时候,您可以右键单击文件并选择属性,在XUbuntu中,权限选项如下所示:
如果您不想更改权限。您也可以强制外壳程序运行命令。在终端中,您可以运行:
1 | bash file.sh |
该外壳程序应与脚本的第一行相同。
有多安全?
您可能会觉得很奇怪,必须手动执行另一个任务才能执行文件。但这部分是由于对安全性的强烈需求。
基本上,当您下载并运行bash脚本时,就像有人告诉您"按顺序在计算机上运行所有这些命令,我??保证结果将是安全的"一样。问问自己是否信任提供此文件的一方,问问自己是否确定已从您认为的相同位置下载了文件,甚至还可以浏览一下内部以查看是否存在异常(尽管这需要您了解* nix命令和bash编程知识)。
不幸的是,除了上面的警告之外,我无法逐步介绍如何防止计算机发生恶意事件。因此,请记住,任何时候只要您实际上是在说:"当然,您可以使用我的计算机来做某事",就可以从某人那里获取并运行可执行文件。
如果您在浏览器中打开第二个链接,则会看到源代码:
1 2 3 | #!/bin/bash # Script to download individual .nc files from the ORNL # Daymet server at: http://daymet.ornl.gov |
[...]
1 2 3 4 5 6 7 8 9 10 | # 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二进制文件的本地支持。
因此,您需要从linux控制台运行它,只需输入其名称即可,就像在Windows上对bat文件一样。
通常,.sh文件是可以在终端中执行的Shell脚本。具体来说,您提到的脚本是bash脚本,您可以查看是否打开文件并查看文件的第一行,即shebang或magic行。
我知道这是一个老问题,我可能会帮不上忙,但是许多Linux发行版(例如ubuntu)都具有" Live cd / usb"功能,因此,如果您确实需要运行此脚本,则可以尝试启动计算机进入Linux。只需将.iso刻录到闪存驱动器(这是http://goo.gl/U1wLYA的方法),在插入驱动器的情况下启动计算机,然后按F键启动菜单。如果选择" ... USB ...",则将启动到刚放在驱动器上的操作系统。
在终端中打开位置,然后键入以下命令
1. chmod + x filename.sh
2. ./filename.sh
而已