본문 바로가기
IT

매끈한 커맨드 근육을 만드는 노하우

by 복날집 2023. 4. 21.
반응형

셸을 단순히 사용하는 것에서 나아가 ‘잘’ 활용할 수 있다면 더 많은 일을 쉽게 할 수 있습니다. 개발자뿐만 아니라 시스템 관리자 등 셸을 항상 사용해야 하는 사람이라면 더더욱 셸 명령을 잘 알아야 합니다. 예를 들어 한 디렉터리 안에서 내용이 같은 파일을 찾고 싶다면 어떻게 해야 할까요? 셸 명령(셸 스크립트)에 익숙하지 않다면 파이썬 등의 언어로 프로그램을 하나 짜야겠죠? 이 문제는 이번에 나온 《아트 오브 셸 원라이너 160제》의 실전 문제 109번 내용입니다.

 

귀여운 근육 야옹이

 

챗GPT에게 파이썬으로 짜라고 시키니까 29줄짜리 코드가 나옵니다. 

 

승리의 챗GPT

 

검색해보니 스택오버플로에는 더 긴 코드가 있긴 하네요(중복 파일을 찾아서 제거까지 하는 버전). https://stackoverflow.com/questions/748675/finding-duplicate-files-and-removing-them

 

Finding duplicate files and removing them

I am writing a Python program to find and remove duplicate files from a folder. I have multiple copies of mp3 files, and some other files. I am using the sh1 algorithm. How can I find these dupli...

stackoverflow.com

 

단순히 해시값 같은 파일들만 찾는 게 이렇게 어려울 필요가 있을까요? awk, find, md5sum, xargs 같은 셸 커맨드를 알고 있다면 다음과 같이 단 한 줄로 해결할 수 있습니다. 자세한 해설은 《아트 오브 셸 원라이너 160제》 394~396쪽을 참고하세요. 

 

sudo find /etc -type f | sudo xargs md5sum | awk '{a[$1]=a[$1]" "$2}END{for(k in a){print k, a[k]}}' | awk 'NF>2'

 

물론 짧은 코드가 항상 좋은 건 아닙니다. 그럼에도 코드 골프 같은 스포츠(?)가 존재하는 것처럼, 이렇게 문제를 간단하게 해결하기 위해 사고하는 행위 자체로 문제 해결 능력을 키울 수 있습니다. 그런 의미에서 하루 한 문제씩 꾸준하게 160개 문제를 풀며 커맨드 근육을 키우는 방법을 설명한 책이 바로 《아트 오브 셸 원라이너 160제》입니다. 일본의 ‘셸 장인’들이 출제한 극한 문제들이 당신을 기다리고 있습니다. 지금 도전해보세요. 

 

 

■ 미리보기(옮긴이 머리말, 베타리더 후기, 지은이 소개, 이 책에 대하여, 감사의 글, 1장 일부)

https://jpub.tistory.com/1392 jpub 제이펍

반응형