본문 바로가기
👨‍💻 프로그래밍/⚙️ DevOps

Bash Commands 이상형 월드컵 Top 10

by 개발자 진개미 2023. 6. 21.
반응형

Shell Commands가 필요할 때

보통 우리가 컴퓨터를 사용한다고 하면 화려한 GUI에 익숙해져 있습니다. 파일과 프로그램은 아이콘으로 나타내고, 파일을 이동하기 위해서는 마우스로 드레그를 하고, 지우고 싶으면 휴지통에 넣고...

이런 GUI 덕분에 컴퓨터는 대중화될 수 있었지만, GUI는 굉장히 자원이 많이 필요한 일입니다. 그래서 서버 같이 프로그래머가 다루는 컴퓨터의 경우는 GUI가 없고 CLI를 통해서만 접근해야 하는 경우가 많습니다.

CLI를 쓰는 것의 또 다른 장점은 프로그래밍 적인 요소를 적용할 수 있다는 겁니다. 특정 조건에서는 이걸 하고, 이걸 반복하고 등... 이런 여러 문법들 중 가장 자주 쓰는 10개를 뽑아 봤습니다.

 


10위 - []

if의 역할을 합니다

 

[ "test" = "test" ] # 일치하기 때문에 0이 나옵니다

9위 - {}

Loop의 역할을 합니다

 

echo {1..5} # 1, 2, 3, 4, 5
touch file{1,2,3}.txt # file1.txt, file2.txt, file3.txt 파일 3개를 만듬

8위 - ;, &&, ||

성공, 실패 결과에 따라서 여러 명령어를 실행합니다

 

echo "Hello" ; echo "World" #  성공/실패에 상관 없이 명령어를 모두 실행
mkdir test && echo "test created" # 앞의 명령어가 성공한 경우에만 뒤의 명령어 실행
mkdir test || echo "test not created" # 앞의 명령어가 실패한 경우에만 뒤의 명령어 실행

7위 - *

아무 문자나 아무 길이만큼 매칭합니다

 

ls *.txt # 확장자가 .txt인 모든 파일
ls a*.txt # a로 시작하는 확장자가 .txt인 모든 파일

6위 - !!

그전 실행한 명령을 실행합니다

 

!! # 바로 그 전 실행한 명령어 실행
!5 # 5번째 전 실행한 명령어 실행

5위 - 변수이름=변숫값

변수에 값을 할당합니다

 

NAME=ant

4위 - &

Background에서 명령어를 실행합니다

 

sleep 30 &

3위 >, >><

 

sort < unsorted.txt > sorted.txt # unsorted.txt의 내용을 sort에 전달하고, 이 sort가 만든 결과를 sorted.txt에 전달합니다
echo "Hello" >> file.txt # "Hello"를 file.txt 끝에 추가합니다
echo "Hello" > file.txt # file.txt가 "Hello"로 대체됩니다

2위 - |

앞에 있는 명령의 결과를 뒤에 있는 명령이 받습니다

 

ls | grep ".txt" # ls로 파일 이름을 모두 가져온 결과를 grep ".txt"해서 .txt가 파일 이름에 포함된 파일만 남깁니다
cat access.log | grep "404" | wc -l # access.log의 내용을 grep이 받아서 404가 있는 줄만 남긴 뒤, 이게 몇 개인지를 셉니다

1위 - $()

명령을 실행하고 그 결과로 대체합니다

 

echo "Today is $(date)"

예시

[ "$(git rev-parse --abbrev-ref HEAD)" = "main" ] && ./gradlew build && ./deploy.sh
  • $()로 내부의 명령을 실행합니다. 여기서는 현재 branch를 확인합니다.
  • []로 결과가 일치하는지 확인합니다.
  • &&로 앞의 결과가 일치하는 경우에만 ./gradlew build를 실행합니다.
  • 즉, 현재 branch가 main branch인 경우에만 배포를 실행합니다.

 

./gradlew lint | tee lint.log | grep -q "error" && exit 1
  • lint를 실행하고 그 결과를 | 를 사용해서 lint.log 파일에 저장합니다.
  • 저장한 결과를 |로 grep에 보내서  error를 찾고,
  • &&로 에러를 찾은 경우에는 종료합니다.
  • 즉, lint를 실행하고 그 결과를 저장한 뒤, 오류가 있으면 종료합니다.

반응형