ไฟล์. sh คืออะไร


92

ดังนั้นฉันจึงไม่มีประสบการณ์ในการจัดการกับไฟล์ประเภทต่างๆมากมายและฉันไม่สามารถหาข้อมูลได้มากนักว่า.shไฟล์คืออะไร นี่คือสิ่งที่ฉันพยายามทำ:

ฉันกำลังพยายามดาวน์โหลดชุดข้อมูลแผนที่ซึ่งจัดเรียงในไทล์ที่สามารถดาวน์โหลดทีละรายการ: http://daymet.ornl.gov/gridded

ในการดาวน์โหลดไทล์ต่างๆในคราวเดียวพวกเขาบอกว่าให้ดาวน์โหลดสคริปต์ของพวกเขาซึ่งในที่สุดจะนำไปสู่daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

แล้วฉันควรจะทำอย่างไรกับรหัสนี้? เว็บไซต์ไม่ได้ให้คำแนะนำเพิ่มเติมโดยสมมติว่าผู้ใช้รู้ว่าต้องทำอย่างไร ฉันเดาว่าคุณควรวางโค้ดลงในแอปพลิเคชันอื่น ๆ ที่ไม่ได้กล่าวถึงสำหรับเบราว์เซอร์ (โดยใช้ Chrome หรือ Firefox ในกรณีนี้)? เกือบจะดูเหมือนบางอย่างที่สามารถวางใน Firefox / Greasemonkey ได้ แต่ก็ไม่มากนัก เพียงแค่ใช้ Google อย่างรวดเร็วเกี่ยวกับประเภทไฟล์ฉันก็ไม่สามารถเข้าใจได้

ฉันแน่ใจว่ามีคำอธิบายง่ายๆเกี่ยวกับสิ่งที่ต้องทำกับไฟล์เหล่านี้ แต่ดูเหมือนว่าจะถูกฝังอยู่ในโพสต์มากมายที่มีคนคิดว่าคุณรู้แล้วว่าจะทำอย่างไรกับไฟล์เหล่านี้ ใครก็ตามที่ยินดีเพียงแค่บอกว่าสิ่งที่ต้องทำจากตารางที่หนึ่งหลังจากไปที่หน้าพร้อมกับโค้ดเพื่อใช้งานจริง? ขอบคุณ.


7
.sh ใช้สำหรับเชลล์สคริปต์
rai.skumar

3
คุณใช้ระบบยูนิกซ์หรือไม่? เพราะอย่างอื่นสคริปต์นั้นจะไม่ช่วยอะไรมาก
melpomene

คำตอบ:


52

หากคุณเปิดลิงก์ที่สองในเบราว์เซอร์คุณจะเห็นซอร์สโค้ด:

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

มันเป็นสคริปต์ทุบตี มี Linux หรือไม่?


ไม่ว่าในกรณีใดสคริปต์จะไม่มีอะไรเลยนอกจากชุดของการดึง HTTP ทั้ง wget และ curl พร้อมใช้งานสำหรับระบบปฏิบัติการส่วนใหญ่และเกือบทุกภาษามีไลบรารี HTTP ดังนั้นจึงเป็นเรื่องเล็กน้อยที่จะเขียนซ้ำในเทคโนโลยีอื่น ๆ นอกจากนี้ยังมีพอร์ต Windows บางพอร์ตของ bash เอง (git รวมถึงหนึ่งพอร์ต) สุดท้าย แต่ไม่ท้ายสุดตอนนี้ Windows 10 รองรับไบนารีของ Linuxแล้ว


3
ฉันไม่มี Linux ฉันใช้งาน Windows 7 สิ่งนี้ใช้ได้เฉพาะกับผู้ใช้ Linux หรือไม่
Tony H

7
สามารถใช้ได้กับระบบปฏิบัติการส่วนใหญ่ (Linux, Unix, MacOS ... ) ยกเว้น Windows
ÁlvaroGonzález

1
ฉันค้นหาสคริปต์ทุบตีใน windows เล็กน้อยและดูเหมือนว่าหัวข้อนี้จะครอบคลุมไปหน่อย: stackoverflow.com/questions/6413377/… ฉันจะลองทำสิ่งต่างๆเพื่อดูว่ามันทำงานอย่างไร
Tony H

4
มี Linux หรือไม่? คำตอบที่ดีที่สุดของวัน
Adam Erickson

122

ไฟล์ที่มีนามสกุล. sh คืออะไร?

มันเป็นเชลล์สคริปต์เป้าหมาย ใช้ในระบบปฏิบัติการที่คล้าย UNIX หลายรูปแบบ พวกเขาไม่มี "ภาษา" และถูกตีความโดยเชลล์ของคุณ (ล่ามของคำสั่งเทอร์มินัล) หรือถ้าบรรทัดแรกอยู่ในรูปแบบ

#!/path/to/interpreter

พวกเขาจะใช้ล่ามเฉพาะนั้น ไฟล์ของคุณมีบรรทัดแรก:

#!/bin/bash

และนั่นหมายความว่ามันใช้ Bourne Again Shell ที่เรียกว่า bash เพื่อวัตถุประสงค์ในทางปฏิบัติทั้งหมดแทนที่ sh เก่าที่ดี

ขึ้นอยู่กับล่ามคุณจะมีภาษาที่แตกต่างกันในการเขียนไฟล์

โปรดทราบว่าในโลก UNIX ไม่ใช่ส่วนขยายของไฟล์ที่กำหนดว่าไฟล์คืออะไร (ดูวิธีเรียกใช้เชลล์สคริปต์)

หากคุณมาจากโลกของ DOS / Windows คุณจะคุ้นเคยกับไฟล์ที่มีนามสกุล. bat หรือ. cmd (ไฟล์แบตช์) เนื้อหาไม่คล้ายกัน แต่คล้ายกับการออกแบบ

วิธีเรียกใช้เชลล์สคริปต์

ซึ่งแตกต่างจากระบบปฏิบัติการโง่ ๆ บางระบบ * nix ไม่ได้อาศัยเฉพาะส่วนขยายในการพิจารณาว่าจะทำอย่างไรกับไฟล์ ยังมีการใช้สิทธิ์ ซึ่งหมายความว่าหากคุณพยายามรันเชลล์สคริปต์หลังจากดาวน์โหลดมันจะเหมือนกับการพยายาม "รัน" ไฟล์ข้อความใด ๆ นามสกุล ".sh" มีไว้เพื่อความสะดวกของคุณในการจดจำไฟล์นั้น

คุณจะต้องทำให้ไฟล์ปฏิบัติการได้ สมมติว่าคุณดาวน์โหลดไฟล์เป็นfile.shจากนั้นคุณสามารถเรียกใช้ในเทอร์มินัลของคุณ:

chmod +x file.sh

chmodเป็นคำสั่งสำหรับเปลี่ยนสิทธิ์ของไฟล์+xกำหนดสิทธิ์ในการดำเนินการ (ในกรณีนี้สำหรับทุกคน) และสุดท้ายคุณก็มีชื่อไฟล์ของคุณ

คุณสามารถทำได้ใน GUI เวลาส่วนใหญ่คุณสามารถคลิกขวาที่ไฟล์และเลือกคุณสมบัติใน XUbuntu ตัวเลือกการอนุญาตจะมีลักษณะดังนี้:

สิทธิ์ของไฟล์ใน XUbuntu

หากคุณไม่ต้องการเปลี่ยนสิทธิ์ คุณยังสามารถบังคับให้เชลล์รันคำสั่ง ในเทอร์มินัลคุณสามารถเรียกใช้:

bash file.sh

เชลล์ควรเหมือนกับในบรรทัดแรกของสคริปต์ของคุณ

ปลอดภัยแค่ไหน?

คุณอาจพบว่ามันแปลกที่คุณต้องทำงานอื่นด้วยตนเองเพื่อเรียกใช้ไฟล์ แต่บางส่วนเป็นเพราะความต้องการความปลอดภัยอย่างมาก

โดยทั่วไปเมื่อคุณดาวน์โหลดและเรียกใช้สคริปต์ทุบตีมันก็เหมือนกับที่ใครบางคนบอกคุณว่า "เรียกใช้คำสั่งเหล่านี้ตามลำดับบนคอมพิวเตอร์ของคุณฉันสัญญาว่าผลลัพธ์จะดีและปลอดภัย" ถามตัวเองว่าคุณไว้ใจฝ่ายที่ให้ไฟล์นี้หรือไม่ถามตัวเองว่าคุณแน่ใจหรือไม่ว่าได้ดาวน์โหลดไฟล์จากที่เดียวกับที่คุณคิดไว้แล้วหรืออาจจะลองมองเข้าไปข้างในเพื่อดูว่ามีบางอย่างที่ดูผิดปกติ ที่คุณรู้บางอย่างเกี่ยวกับคำสั่ง * nix และการเขียนโปรแกรม bash)

น่าเสียดายที่นอกเหนือจากคำเตือนข้างต้นฉันไม่สามารถให้คำอธิบายทีละขั้นตอนได้ว่าคุณควรทำอย่างไรเพื่อป้องกันไม่ให้สิ่งชั่วร้ายเกิดขึ้นกับคอมพิวเตอร์ของคุณ ดังนั้นโปรดทราบว่าเมื่อใดก็ตามที่คุณได้รับและเรียกใช้ไฟล์ปฏิบัติการจากคนที่คุณพูดว่า "แน่นอนคุณสามารถใช้คอมพิวเตอร์ของฉันทำบางสิ่งได้"


10
นี่ควรเป็นคำตอบที่เลือก
Pacerier

36

shไฟล์เป็นไฟล์ปฏิบัติการเชลล์ unix (linux) ซึ่งเทียบเท่า (แต่มีประสิทธิภาพมากกว่า) ของbatไฟล์บน windows

ดังนั้นคุณต้องเรียกใช้จากคอนโซล linux เพียงพิมพ์ชื่อเดียวกับที่คุณทำกับไฟล์ bat บน windows


2
ขึ้นอยู่กับระบบปฏิบัติการเฉพาะคุณอาจต้องเรียกใช้chmod +x file.sh
Pranav A.

ฉันจะบอกว่า bash เป็นเหมือน VBS สำหรับ windows ไม่ใช่ batch สำหรับ windows เนื่องจาก batch เป็นภาษา DOS
เปลี่ยน

4

โดยทั่วไปไฟล์. sh เป็นเชลล์สคริปต์ที่คุณสามารถเรียกใช้งานในเทอร์มินัลได้ โดยเฉพาะสคริปต์ที่คุณพูดถึงคือสคริปต์ทุบตีซึ่งคุณสามารถดูได้ว่าคุณเปิดไฟล์และดูในบรรทัดแรกของไฟล์ซึ่งเรียกว่า shebang หรือสายเวทย์มนตร์


1

ฉันรู้ว่านี่เป็นคำถามเก่าและฉันอาจจะช่วยไม่ได้ แต่ลีนุกซ์รุ่นต่างๆ (เช่นอูบุนตู) มีฟังก์ชัน "Live cd / usb" ดังนั้นหากคุณต้องการเรียกใช้สคริปต์นี้จริงๆคุณสามารถลองบูตคอมพิวเตอร์ ลงในลินุกซ์ เพียงแค่เบิร์น. iso ลงในแฟลชไดรฟ์ (นี่คือวิธีhttp://goo.gl/U1wLYA ) เริ่มต้นคอมพิวเตอร์ของคุณโดยเสียบไดรฟ์แล้วกดปุ่ม F เพื่อเมนูบูต หากคุณเลือก "... USB ... " คุณจะบูตเข้าสู่ระบบปฏิบัติการที่คุณเพิ่งใส่ในไดรฟ์


อย่างไรก็ตามไฟล์จะทำงานบนเวอร์ชันสดเท่านั้น ผู้ใช้จะต้องคัดลอกไฟล์กลับ OS หลัก (Windows)
Pranav A.

-2

เปิดตำแหน่งในเทอร์มินัลจากนั้นพิมพ์คำสั่งเหล่านี้ 1. chmod + x filename.sh 2. ./filename.sh นั่นแหละ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.