프로젝트에서 프레임워크를 설정하고 나면 로직 구현을 위해 비슷한 구조의 폴더를 생성하고 java 파일을 생성해야 합니다. 이 부분이 꽤 번거롭고 손이 많이 가는데 이 부분을 어떻게 개선할 수 있는지 알아보겠습니다.
Shell(쉘) 부터 알아볼까요?
Shell(쉘)은 운영체제상에서 사용자가 입력한 명령을 읽고 해석하여 대신 실행해주는 프로그램 입니다. 운영체제의 커널과 사용자 사이를 이어주는 역할을 하며 사용자의 명령어를 해석하고 운영체제가 알아들을 수 있도록 도와주는 명령어 해석기 입니다.
셸(컴퓨터) - 나무위키 (namu.wiki)
셸(컴퓨터) - 나무위키
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권
namu.wiki
사용자가 운영 체제와 상호 작용할 수 있도록 하는 명령줄 인터페이스 입니다. 쉘은 사용자의 입력을 읽고 명령을 해석하고 실행합니다. 또한 사용자가 환경을 사용자 지정하고 스크립트를 사용하여 작업을 자동화하는 방법을 제공합니다.
여기서 중요한 점은 자동화하는 방법을 제공한다는 점입니다. +_+
Shell Script
유닉스 계열 운영체제의 많은 셸들이 셸 스크립트를 사용하므로, 이를 사용하여 운영체제의 명령뿐만 아니라 응용 프로그램들을 실행하여 많은 작업을 자동화 할 수 있습니다. GUI가 각 프로그램들을 조합하여 자동화 하기 매우 힘든 데 비해 CLI의 장점이 빛나는 부분 입니다. 유닉스 계열의 운영체제는 본래 확장자를 엄격하게 구분하지 않기에 확장자가 없거나 다르게 되어 있는 셸 스크립트 파일도 많지만, 보통 셸 스크립트의 파일은 .sh라는 확장자를 갖습니다.
Shell Script로 무엇을 할 수 있을까요?! 거의 생각하는 모든 것을 할 수 있겠지만 저도 제가 활용하는 범위 내에서만 나열해보겠습니다.
- 폴더 / 파일 - 생성, 수정, 삭제, 이동
- 입력 / 출력
- 조건 검색 (if)
- 반복 (for)
이런 기능들을 할 수 있는데 거의 프로그래밍을 할 수 있다고 보는 것이 맞겠습니다. 내 입맛에 맞게 Shell Script를 작성해서 반복적인 업무들을 자동화 하는 것이 가능해집니다. 물론 각종 프로그래밍 언어로도 해당 작업을 할 수 있습니다. 그렇게 하는 것이 더 좋을 때도 분명 있을 겁니다. 그럼에도 Shell Script를 경험해보시기를 권합니다. +_+
파라미터 전달
Shell Script를 동적으로 활용할 수 있게 만들어주는 요소가 파라미터 입니다. 사용자의 조건이 변경됨에 따라 맞춰서 수행하는 작업내용도 변경되도록 할 수 있습니다. 아래는 파라미터로 -h를 넘겼을 때 출력해줄 사용법 내용과 파라미터를 넘기지 않았을 때 종료 처리하는 내용입니다.
if [ "$1" == "-h" ]
then
echo "**************************************************************************************"
echo "Usage: ./exist_folder.sh [domain name] [table name]"
echo ""
echo "Example:"
echo " ./exist_folder.sh test best"
echo " - 이미 존재하고 있는 'test' 도메인 안에 best 관련 모든 자바 파일을 생성합니다."
echo "**************************************************************************************"
exit 0
fi
if [ "$1" == "" ]
then
echo "No domain package name detected"
exit 1
fi
도움말에 적어놓은 것처럼 Shell Script 파일명이 exist_folder.sh 이라고 하겠습니다. 해당 sh 파일을 호출하면 아래와 같은 결과를 얻게 됩니다.
위의 Shell Script 만 봐도 몇 가지 내용이 나와있습니다. 하나씩 살펴보면 좋겠지만 깊어질 수 있기 때문에 다른 분이 잘 정리해놓은 블로그 링크로 대체하겠습니다.
쉘(bash Shell) 스크립트 기본 문법, 실제 예제(백업하기, 로그 파일 정리하기) (tistory.com)
쉘(bash Shell) 스크립트 기본 문법, 실제 예제(백업하기, 로그 파일 정리하기)
#쉘 스크립트 서버 작업 자동화 및 운영(DevOps)을 위해 기본적으로 익혀둘 필요가 있다. 쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태 시스템 프로그래밍에서 꼭 익히는 내용 중 하나
probe29.tistory.com
하고 싶은 것
결과적으로 반복적이지만 매번 copy & paste도 번거로워지는 내용을 Shell Script를 통해서 많은 부분을 자동화 하자는 겁니다. 그러면 아래처럼 파일을 쉽게 만들 수 있습니다.
# Application
if [ ! -f src/main/java/com/jin/${1}/application/dto/Create${upper}Dto.java ]
then
echo "
package com.jin.${1}.application.dto;
import com.jin.${1}.entity.${upper}Entity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
public class Create${upper}Dto {
@Getter
public static class Request {
public ${upper}Entity toEntity() {
return new ${upper}Entity(
);
}
}
}
" > src/main/java/com/jin/${1}/application/dto/Create${upper}Dto.java
fi
...
if문으로 해당 파일이 있는지 체크하고 없다면 아래 내용을 echo를 통해 출력하는데 > src/main/java/com/jin/${1}/application/dto/Create${upper}Dto.java 파일에 출력하라(생성하라)는 뜻입니다. (upper 변수는 받은 파라미터를 한 번 가공한 내용이라서 위의 Shell Script에는 표현되지 않았습니다.) 이런식으로 자동으로 생성하고 싶은 파일들을 쭉 나열하고 실행해주면 됩니다.
도움이 되셨기를 바랍니다.
'주식' 카테고리의 다른 글
[미국주식] 자동 매매 결과 보고 (2024-01-25) (1) | 2024.01.26 |
---|---|
[한국주식] 자동 매매 결과 보고 (2024-01-25) (0) | 2024.01.25 |
[미국주식] 자동 매매 결과 보고 (2024-01-24) (0) | 2024.01.25 |
[한국주식] 자동 매매 결과 보고 (2024-01-24) (0) | 2024.01.24 |
[미국주식] 자동 매매 결과 보고 (2024-01-23) (0) | 2024.01.24 |