터미널 명령을위한 스크립트 파일을 어떻게 만듭니 까?


114

Windows에서는 cmd 명령 (일반적으로 .cmd또는 .bat파일)이 포함 된 파일을 작성할 수 있습니다 . 해당 파일을 클릭 cmd.exe하면 파일에 포함 된 명령 이 열리고 실행됩니다.

우분투에서 어떻게해야합니까?

나는 이것이 중복이라고 확신하지만 내 대답을 찾을 수 없습니다.
이 질문과 비슷하지만 질문에 대답하지 않습니다.

자주 사용하는 터미널 명령을 파일에 저장

.cmd / .bat 파일을 실행하기위한 Ubuntu의 CMD.exe 에뮬레이터

답변:


150

두 가지 방법이 있습니다.

먼저 가장 일반적인 것은 파일을 작성하는 것입니다. 첫 번째 줄이

#!/bin/bash

그런 다음 파일을 저장하십시오. 다음을 사용하여 실행 가능으로 표시하십시오.chmod +x file

그런 다음 클릭하거나 터미널에서 파일을 실행하면 명령이 실행됩니다. 일반적으로 이러한 파일은 확장명이 없지만 끝으로 .sh또는 다른 방법으로 만들 수 있습니다 .

몇 가지 참고 사항 :

  • 첫 번째 줄이 파일을 해석 해야하는 프로그램의 경로라면 Linux에서 모든 파일을 실행할 수 있습니다. 일반적인 예는 /bin/python, /bin/sh, /bin/dash,하지만 홀수 볼 것들처럼 작동/bin/mysql
  • 배쉬는 완전한 언어입니다. Windows에서는 cmd.exe보다 훨씬 더 복잡합니다. 함수, 루프, 조건부, 문자열 연산 등을 지원하는 강력한 프로그래밍 언어가 있습니다.
  • 문제가 발생하면 이러한 문서 가 도움 될 수 있습니다.
  • 파일을 실행 가능하게하지 않으려면 bash에 인수로 전달하여 파일을 실행할 수 있습니다. bash file/to/run.sh

간단한 배쉬 예제

#!/bin/bash  
echo "This is a shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

두 번째 방법은을 사용하여 명령을 기록하는 것 script입니다. script그런 다음 실행하십시오 . 작업이 끝나면 작업 유형 exit과 스크립트 가 수행 한 모든 "작업"이 포함 된 파일을 생성합니다. 이것은 덜 사용되지만 매크로와 같은 것을 만드는 데 아주 효과적입니다. man script더 많은 정보를 위해서.


당신은 변화 싶어 수도 /bin/bash하는 /bin/sh, bash는 심지어 우분투의 기본되지 않습니다.
TC1

@ TC1 기본적으로 설치되므로 기본값인지 여부는 중요하지 않습니다.
Carlos Campderrós

1
나는 /bin/dash( /bin/sh보통 심볼릭 링크되어 있음) bash보다 훨씬 빠르다는 것을 지적하고 싶다 (약 15 배 더 빠름). 가능하다면 /bin/dash쉘 스크립트에 사용하십시오 :)
MiJyn

4
파일과 같은 폴더에 있다면 ./file.sh
coteyr

1
두 가지 방법을 모두 시도했지만 bash 스크립트 파일을 두 번 클릭하면 텍스트 파일이 geany / gedit에서 편집 가능한 상태로 열립니다. 두 번 클릭하면 스크립트를 실행하고 싶습니다. 이 질문 은 내가하고 싶은 것에 대해 더 자세하게 설명합니다.
thymaro

15

쉘 스크립트를 사용하여 파일에 쓰는 것을 의미합니까? 몇 가지 방법이 있습니다.

touch file

이 방법은 단순히 파일을 작성하지만 파일이 이미 존재하는 경우 수정 날짜를 해당 명령을 사용한 시간으로 변경합니다.

echo "text" > file

그 방법의 내용 덮어 쓰기 file로를 text. 파일을 지우려면 다음과 같이하십시오.

echo "" > file

한 줄 이상을 작성하고 수천 개의 echo명령 을 사용하지 않으려면 다음 명령을 사용하십시오.

cat << EOF > file
test
test1
foo
bar
EOF

이를 통해 하나의 명령으로 여러 줄을 쓸 수 있습니다. 그러면 내용 file은 다음과 같습니다.

test
test1
foo
bar

당신이 파일에 추가하고 싶다면, 대신 >>>.

도움이 되었기를 바랍니다!


편집 : 아, 알다시피 .sh확장명을 사용하여 파일을 gedit로 작성하고 (선택적이지만 좋은 생각입니다) 파일 관리자에서 파일을 마우스 오른쪽 버튼으로 클릭하고 속성-> 권한을 선택한 다음 확인하십시오. Allow executing file as program. 그런 다음 두 번 클릭하면 :)이 실행됩니다. 또한 터미널에서 그렇게하려면이 명령을 실행하여 실행 가능하게 만들 수 있습니다 (소유자 sudo가 아닌 경우 앞에 추가 할 수 있음).

chmod +x file

그리고 실행하려면 :

./file

실제로 내가하고 싶은 것은 터미널 명령을 포함하는 파일을 gedit와 같이 쓰는 것입니다. 그런 다음이 파일을 두 번 클릭하면 터미널에서 해당 명령이 실행됩니다.
세스

좋은 답변, 사려 깊은 업데이트. 단순히 파일을 만들기 위해 항상 사용했습니다touch filename
TryTryAgain

@TryTryAgain, 그래도 쉬운 방법 일 것입니다 echo "" > file. 답변에 해당 방법을 포함 시켜도 괜찮습니까?
MiJyn

@MiJyn 절대적으로 포함하십시오, 자유롭게 느끼십시오. 감사합니다
TryTryAgain 4

전역 명령과 같이 터미널의 어디에서나 실행하도록하려면 어떻게해야합니까?
Omer

14

Windows 배치 파일과 동등한 것은 셸 스크립트이며 훌륭한 시작 안내서는 Bash Scripting 입니다.

대부분의 경우 명령 줄에 입력 할 수있는 명령을 셸 스크립트에 넣을 수 있습니다.

Windows 배치 파일과 다른 몇 가지 사항 :

  • 쉘이라고하는 다른 명령 해석기가 있습니다. 기본값은 bash이지만 관심이 있다면 zsh, ksh, dash, perl, python 등과 같은 다른 것들이 있습니다.

  • 쉘 스크립트를 실행하려면 파일을 실행 가능하게 만들어야합니다. chmod +x <filename>

  • 우분투에서 현재 디렉토리는 프로그램 검색 경로가 아니기 때문에 실행 ./<filename>하지 않아야합니다.<filename>

  • 변수 이름은 $<varname>,하지%<varname>%

  • 셸 스크립트의 명령은 기본적으로 배치 파일에서와 같이 인쇄되지 않습니다.

  • 파일 이름의 확장자는 확장자 .sh를 사용하지 않아도되거나 (보다 관례 적으로) 확장 할 수 있습니다 . 파일의 첫 줄에 넣으십시오#!/bin/bash .이 파일은 파일을 실행하는 데 사용할 프로그램을 Ubuntu에 알려줍니다.

  • 주석은로 시작 #하지 않습니다 rem.

이것이 도움이되기를 바랍니다.

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