목차
1. 문자열얼 터미널 화면에 출력하는 명령어 ( echo )
문자열을 터미널 화면에 출력하는 명령어 ( echo )
리눅스 명령어에서 echo 는 Java에서의 System.out.println() , Javascript 에서의 console.log() 와 같은 역할을 하는 명령어이다.
$ echo 1234
$ echo abcd # 숫자, 문자 상관없이 전부 다 입력 가능
$ echo study linux # 띄어쓰기가 있어도 입력 가능
$ echo "ㄱㄴㄷㄹ" # 쌍따옴표로 묶어서도 입력 가능
2. 쉘 스크립트 파일 작성/실행 방법
쉘 스크립트 파일 작성/실행 방법
1) 파일명을 .sh 로 끝나게 작성하기
$ vi first.sh
파일명이 .sh 로 끝나게 작성하지 않아도 쉘 스크립트는 정상적으로 작동한다. 하지만 파일명만 보고 쉘 스크립트 파일인지 바로 알아볼 수 있게, 파일명을 .sh 로 끝나게 작성하는 것
2) 파일 첫 줄에 #!/bin/bash 작성하기
first.sh
#!/bin/bash
위 코드는 해당 스크립트를 어떤 쉘(shell) 로 실행할 지를 명시하기 위해 작성한다. 구체적으로 말하면 '이 파일은 bash 쉘로 해석해서 실행하라' 라는 의미이다.
쉘(shell) 이 뭔지, 다양한 쉘(shell) 에는 어떤 것들이 있는지는 다음에 알아보기로 하자.
3) 자동으로 실행시키고 싶은 명령어들 순서대로 입력하기
first.sh
#!/bin/bash
echo 1
echo 2
echo 3...
위와 같이 입력하고 파일을 저장하고 나오자.
4) 쉘 스크립트 파일 실행하기
아래와 같이 실행시키고자 하는 파일의 경로를 명령어로 입력하면 된다.
$ ./first.sh

하지만 명령어를 입력해보면 Permission denied 라고 에러가 뜬다.
Permission denied 에러 분석하기
$ ls -l first.sh # first.sh 에 대한 파일 세부 정보 확인하기

first.sh 파일의 권한이 rw-rw-r-- 으로 설정되어있다. 따라서 ubuntu 사용자로 접근하면 rw- 권하만 가지고 있고 x 에 대한 권한이 없으므로 실행되지 않는다.
아래와 같이 chmod 를 이용하여 권한을 변경하자.
$ chmod +x first.sh # 모든 사용자에게 실행 권한(x) 을 추가
$ ls -l first.sh # 권한 확인

다시 쉘 스크립트 파일을 실행 해보자.

정상적으로 쉘 스크립트 파일이 실행됐음을 확인할 수 있다. 쉘 스크립트 파일에 작성한 명령어들이 순차적으로 실행 되었다.
쉘 스크립트의 역할
위에서 처럼 쉘 스크립트는 작성한 리눅스 명령어들을 순서대로 실행시키는 역할을 한다. 이 덕분에 여러 복잡한 명령어들을 쉘 스크립트 파일 하나로 간단하게 실행시킬 수 있다. 그래서 어떤 작업을 자동화하기 위해 쉘 스크립트를 활용한다.
3. 쉘 스크립트를 통해 자동화 해보기
'git pull 받아오기 → Spring Boot 빌드 → 빌드된 jar 파일 실행' 의 과정을 자동화 해보기
백엔드 서버를 배포하는 과정을 자동화 해보자. 수동으로 백엔드 서버를 배포할 때 입력하는 리눅스 명령어를 차례대로 쉘 스크립트 파일에 작성하면 된다.
1. 쉘 스크립트 파일 생성
$ cd ~
$ vi deploy.sh
2. 쉘 스크립트 파일 작성
#!/bin/bash
echo "----git pull 받아오기----"
cd /home/ubuntu/linux-springboot
git pull origin main
echo "----빌드하기----"
./gradlew clean build
echo "----빌드된 jar 파일을 백그라운드로 실행시키기----"
cd build/libs
nohup java -jar linux-springboot-0.0.1-SNAPSHOT.jar >> app.log 2>&1 &
echo "----Spring Boot 서버 실행 완료----"
3. 쉘 스크립트 실행시키기
$ ./deploy.sh

4. Spring Boot 서버 실행되었는지 확인하기

'리눅스 > 리눅스 입문' 카테고리의 다른 글
| [리눅스 입문] 백엔드 서버를 운영할 때 자주 사용하는 명령어 (0) | 2025.10.06 |
|---|---|
| [리눅스 입문] 표준 출력(stdout), 표준 에러 출력(stderr), 리다이렉션 (0) | 2025.10.03 |
| [리눅스 입문] 패키지 매니저 (apt) (0) | 2025.10.01 |
| [리눅스 입문] 리눅스 권한 문제 (Permission Denied) (0) | 2025.09.30 |
| [리눅스 입문] 우분투 리눅스(Ubuntu Linux) 시작 및 기본 명령어 (1) | 2025.09.28 |