minishell을 만들면서 정말 1000번은 넘게 make를 치다보니.. 이제 make에서 나오는 명령어들도 질려서 보기 싫어졌다..

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bd497ceb-787a-4fb9-8498-97cefa890a66/__2021-06-26__12.13.03.mov

뭔가 이쁘게 만들 방법이 없을까 고민하다가 progress bar 혹은 spinner를 사용하면 깔끔하고 이쁘게 만들 수 있을 것 같았다.

Makefile에서 Script 실행하기


우선 Makefile에서 Script를 실행하는 방법을 알아보자! 대략 아래와 같은 Makefile이 있다고 생각하자.

NAME	=	sunashell

...

$(NAME): $(OBJ)
	@$(CC) $(CFLAGS) $(INCLUDE) $(SRCS) -o $(NAME)

여기서 어떤 문장을 출력하려면 echo 와 같이 shell 구문을 그대로 사용하면 된다.

NAME	=	sunashell

...

$(NAME): $(OBJ)
	@echo "hello world!"
	@$(CC) $(CFLAGS) $(INCLUDE) $(SRCS) -o $(NAME)

그런데 조금 더 복잡한 출력과 반복문, 조건문 등을 사용하려면 따로 Script파일을 만드는게 좋은데 그렇다면 이렇게 만든 Script 실행파일을 어떻게 Makefile에서 실행시킬 수 있을까?

아래는 스피너 Script파일이다.

i=1
j=0
max=15000
sp="/-\\|"
echo -n "SUNASHELL is Ready "
echo -n ' '
while [ $j -lt $max ]
do
    printf "\\b${sp:i++%${#sp}:1}"
    j=$(($j+1))
done
printf "\\b✅"