.sh 파일이란 무엇입니까?


91

그래서 나는 과다한 파일 유형을 다루는 경험이 없으며 .sh파일이 정확히 무엇인지에 대한 많은 정보를 찾을 수 없었습니다 . 내가하려는 작업은 다음과 같습니다.

개별적으로 다운로드 할 수있는 타일에 배열 된지도 데이터 세트를 다운로드하려고합니다. http://daymet.ornl.gov/gridded

한 번에 다양한 타일을 다운로드하기 위해 스크립트를 다운로드하라고 말하면 결국 https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh 로 이어집니다 daymet-nc-retrieval.sh.

그렇다면이 코드로 정확히 무엇을해야합니까? 웹 사이트는 사용자가 어떻게해야할지 알고 있다고 가정하고 추가 지침을 제공하지 않습니다. 브라우저 용으로 언급되지 않은 다른 애플리케이션 (이 경우 Chrome 또는 Firefox 사용)에 코드를 붙여 넣어야한다고 생각합니다. Firefox / Greasemonkey에 붙여 넣을 수있는 것처럼 보이지만 정답은 아닙니다. 파일 유형에 대한 빠른 Google만으로는 앞면이나 뒷면을 얻을 수 없었습니다.

이 파일로 무엇을해야하는지에 대한 간단한 설명이 있다고 확신하지만 사람들이 이미이 파일로 무엇을해야하는지 알고 있다고 가정하고있는 많은 게시물에 묻혀있는 것 같습니다. 실제로 구현하는 코드가있는 페이지로 이동 한 후 스퀘어 원에서 수행해야 할 작업을 간단히 말하려는 사람이 있습니까? 감사.


7
.sh 확장자는 쉘 스크립트 용입니다.
rai.skumar

3
유닉스 시스템을 사용하고 계십니까? 그렇지 않으면 그 스크립트가별로 도움이되지 않기 때문입니다.
melpomene

답변:


51

브라우저에서 두 번째 링크를 열면 소스 코드가 표시됩니다.

#!/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 바이너리를 기본적으로 지원합니다 .


3
Linux가없고 Windows 7에서 실행 중입니다. Linux 사용자 만 사용할 수 있습니까?
Tony H

7
Windows를 제외한 대부분의 운영 체제 (Linux, Unix, MacOS ...)에서 사용할 수 있습니다.
Álvaro González 2012

1
Windows에서 bash 스크립트를 약간 검색했는데이 주제가 약간 다뤄진 것처럼 보입니다. stackoverflow.com/questions/6413377/… 어떻게 작동하는지 알아보기 위해 시도해 보겠습니다.
Tony H

4
Linux가 있습니까? 오늘의 베스트 답변
Adam Erickson

121

확장자가 .sh 인 파일이란 무엇입니까?

그것은이다 Bourne 쉘 스크립트 . 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

셸은 스크립트의 첫 번째 줄과 동일해야합니다.

얼마나 안전합니까?

파일을 실행하기 위해 다른 작업을 수동으로 수행해야하는 것이 이상 할 수 있습니다. 그러나 이것은 부분적으로 보안에 대한 강한 필요성 때문입니다.

기본적으로 bash 스크립트를 다운로드하고 실행할 때 누군가 "이 모든 명령을 컴퓨터에서 순서대로 실행하면 결과가 좋고 안전 할 것이라고 약속합니다"라고 말하는 것과 같습니다. 이 파일을 제공 한 당사자를 신뢰하는지 스스로에게 물어보고, 생각한 것과 같은 위치에서 파일을 다운로드했는지 자신에게 물어보세요. * nix 명령 및 bash 프로그래밍에 대해 알고 있음).

안타깝게도 위의 경고를 제외하고는 컴퓨터에서 악의적 인 일이 발생하는 것을 방지하기 위해 수행해야하는 작업에 대한 단계별 설명을 제공 할 수 없습니다. 따라서 누군가로부터 실행 파일을 받아 실행할 때마다 실제로 "물론, 내 컴퓨터를 사용하여 작업을 수행 할 수 있습니다."라고 말하는 것을 명심하십시오.


10
이것은 선택된 답변이어야합니다.
Pacerier 2015 년

36

sh파일은 유닉스 (리눅스) 셸 실행 파일이며 batWindows 에있는 파일 과 동등하지만 훨씬 더 강력 합니다.

따라서 Linux 콘솔에서 실행해야합니다. Windows에서 bat 파일과 동일한 이름을 입력하면됩니다.


2
특정 OS에 따라 실행해야 할 수 있습니다chmod +x file.sh
Pranav A.

bash는 배치가 DOS 언어이기 때문에 Windows 용 배치가 아니라 Windows 용 VBS와 비슷합니다.
전환

4

일반적으로 .sh 파일은 터미널에서 실행할 수있는 쉘 스크립트입니다. 구체적으로 언급 한 스크립트는 bash 스크립트로, 파일을 열고 파일의 첫 번째 줄을 살펴볼 수있는 shebang 또는 magic line이라고합니다.


1

나는 이것이 오래된 질문이라는 것을 알고 있으며 아마도 도움이되지 않을 것입니다. 그러나 많은 Linux 배포판 (예 : 우분투)에는 "Live cd / usb"기능이 있으므로이 스크립트를 실제로 실행해야하는 경우 컴퓨터를 부팅 할 수 있습니다. Linux로. .iso를 플래시 드라이브에 굽고 ( http://goo.gl/U1wLYA 방법 은 다음과 같습니다) 드라이브가 연결된 상태에서 컴퓨터를 시작한 다음 F 키를 눌러 부팅 메뉴를 표시합니다. "... USB ..."를 선택하면 방금 드라이브에 넣은 OS로 부팅됩니다.


그러나 파일은 라이브 버전에서만 실행됩니다. 사용자는 파일을 기본 OS (Windows)로 다시 복사해야합니다.
Pranav A.

-2

터미널에서 위치를 열고 다음 명령을 입력하십시오. 1. chmod + x filename.sh 2. ./filename.sh 그게 전부입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.