본문 바로가기
반응형

기술적인 이야기/터미널 및 셸12

셸 프롬프트를 간결하게 바꿨다 얼마 전까지만 해도 셸 프롬프트를 약간 화려한 것으로 썼었다. 특수한 그래픽 폰트를 동원해 셸 프롬프트임에도 마치 GUI인양 다양한 모습을 연출하고 있었다. 색상도 다양하게 썼고, 우측에 히스토리 라인 수라거나 Git 관련된 정보들이라거나 등등 다양한 정보를 프롬프트 전체 영역에 낭비(?) 없이 표시하고 있었다. 그리고 최근 내 프롬프트는 이렇게 변했다 현재 디렉터리 정보와 간단한 루트인지 일반 사용자인지 구분 정도만 가능한 초 심플한 프롬프트다. 마치 터미널 커맨드 예제에서나 볼 법한 그런 프롬프트다. 왜 이렇게 바꾸었나? 최근 내 맥북이 점점 비명을 지르고 있다고 느껴졌다. 뭐만 해도 팬이 돌아간다. 그래서 크롬은 못 쓰고 있다. 사파리조차도 이상한 GPU 버그인지 뭔지로 아예 커널패닉을 일주일에 한.. 2024. 2. 10.
셸 스크립트에서 인자 입력 처리하기 셸 스크립트에서 인자(argument, 혹은 파라미터, parameter, 매개변수, 옵션 등) 입력을 받을 경우 스크립트 내에서는 어떻게 처리하는지 간단히 정리해 보는 글이다. 당연히 모든 경우를 다룰 수는 없고 개인적으로 자주 사용하는 몇 가지만 정리해 봤다. 사용하는 셸은 bash, zsh, sh다. 인자 입력 기본 셸 스크립트 내에서는 $N 같은 표기의 심벌로 인자 데이터에 접근할 수 있다. $0은 스크립트 자체의 이름, 1부터는 해당 순번의 인자가 문자열로 들어가게 된다. 그리고 각 인자는 공백문자로 구분된다. 예를 들어 아래와 같은 셸 스크립트 코드가 있다면 echo "0: $0" echo "1: $1" echo "2: $2"위 내용의 코드를 sample.sh 파일로 저장한 다음 아래와 같이 .. 2023. 12. 7.
셸에서 텍스트 치환하기 (feat. sed) 리눅스나 맥 등에서 개발이나 배포 과정을 자동화하기 위해 셸 스크립트를 이용하는 경우가 많다. 특히 보안 키 등 설정 파일에서 공개 저장소에 배포하기 꺼려지는 부분들은 비워놓고 실제 배포 등에서만 치환되게 하고자 하는 경우가 종종 있다. 이럴 때 쉽게 쓸 수 있는 방법은 오래(?) 되었지만 잘 작동하는 친구인 sed를 활용할 수 있다. 사용하는 패턴 방식도 Vim이나 Perl의 것과 비슷하기에 쉽게 쓸 수 있다. 예를 들어 특정 INPUTFILE의 내용을 읽어서 OLD라는 문자를 NEW로 치환해서 OUTPUTFILE로 저장하고 싶다면 아래와 같이 입력할 수 있다. sed "s/OLD/NEW/g" INPUTFILE > OUTPUTFILE sed의 매개변수로 전달된 패턴 표현식은 Vim이나 Perl에서 사용.. 2023. 12. 6.
macOS 터미널에서 QR코드 생성하기 개인적으론 QR코드를 그다지 선호하진 않지만 어른의 사정(?)으로 어쩔 수 없이 이를 제공해야 할 때가 있다. 그렇다면 QR코드를 만들어야 하는데, 사실 구글에서 검색해 보면 다양한 QR코드 생성 사이트가 이미 많이 만들어져 있어서 골라서 쓰면 된다. 하지만 남의 사이트에 뭔가 입력해 넣는 것이 부담스럽다면 직접 만드는 것도 방법이다. 물론 알고리즘을 구현하긴 그렇고 이미 누군가 만들어 놓은 도구를 쓰면 된다. 이 글에서는 qrencode라는 도구를 쓸 것이다. 맥 유저의 진부한(?) 친구 Homebrew의 도움을 받아 쉽게 설치할 수 있다. brew install qrencode기본 사용법은 아래와 같은 커맨드로 이를 실행시키면 특정 URL을 특정 파일 이름으로 QR코드 이미지를 생성한다. qrenco.. 2023. 11. 11.
중복 파일 검색기 rdfind rdfind는 중복 파일을 검색하기 위한 터미널에서 셸 커맨드로 사용할 수 있는 C++로 작성된 CLI 유틸리티다. 입력된 디렉터리 아래의 모든 파일을 대조하는데 파일 이름이 아닌 파일의 내용으로 중복 여부를 판단한다는 점이 특징이다. 이 유틸리티의 설치법 및 사용법을 간단히 알아보자. 설치 방법 (via HomeBrew) 설치 방법은 공식 GitHub 프로젝트 저장소의 문서에 따르면 각 OS에 따른 여러 방법이 있는데 macOS에서는 설명에는 없는 Homebrew로도 설치할 수 있다. brew install rdfind 개인적으로 Homebrew를 선호하는데, 사용하는 패키지 매니저에 따라 적절히 설치하면 된다. 애초에 오픈소스이기 때문에 원한다면 직접 빌드하는 것도 가능하다. 기본 사용법 기본 사용법.. 2023. 8. 24.
gitui - Rust로 만든 가벼운 터미널용 Git 클라이언트 Git은 자주 쓰는 vcs이지만 터미널 커맨드로 모든 작업을 하기엔 귀찮은 일이 많다. 그래서 여러 GUI 클라이언트가 나와있고 골라서 쓰면 된다. 그런데 자주 쓰는 Xcode의 Git 기능은 한글 자소 분리가 골치 아프다. Git만 쓰려고 무거운 vscode를 띄우는 것도 바보 같았다. Emacs는 한동안 관리를 안 했더니 상태가 영 메롱 했다. 그래서 GUI 대신 터미널 클라이언트를 찾아봤다. 옛날부터 이름은 자주 들어본 tig도 있고 lazygit이나 gitui 같은 것도 발견했다. 이 중 gitui가 오류도 적고 Rust로 만들어 빠르고 버그도 적다고 자랑(?)하길래 써보기로 했다. 첫 느낌 설치는 여러 방법이 있지만 개인적으로 자주 사용하는 Homebrew로 간단히 설치가 되었다. brew in.. 2022. 5. 1.
iTerm에서 한글 자소가 분리되어 보이는 현상 개인적으로 터미널과 셸을 좋아해서 iTerm 또한 종종 사용하는데 파일명에 한글을 거의 쓰질 않아서 거의 문제를 못 겪었었다. 그런데 macOS의 언어를 한국어로 바꾼 이후로 터미널에서 한글이 깨지는 현상 - 정확히 말해서 자소가 분리되어 보이는 현상 - 을 종종 겪게 되었다. 참고로 사용하는 iTerm의 버전은 3.x다. 보통 iTerm3로 표기한다. 어쨌든 이 문제를 수정해보자. 문제 해결하기 해결 방법은 단순하다. 설정(Preferences)을 열어서 Profiles 항목의 Text 탭을 열어보자. 중앙의 Unicode 항목 근처에서 Unicode Normalization Form을 찾을 수 있는데 기본 값은 None으로 되어있다. 이 설정을 클릭해서 NFC로 바꿔주자. 이후 바로 결과가 적용되기 .. 2021. 7. 30.
디렉터리 및 파일 크기 조회 도구 du du는 시스템에서 각 디렉터리와 파일의 용량이 얼마인지 알려주는 *NIX용 유틸리티입니다. 이 글은 du의 간단한 사용법을 정리합니다. du를 아래처럼 별 다른 옵션 그냥 실행시키면 현재 디렉터리 안에 있는 모든 파일과 디렉터리를 재귀적으로 순회하며 각각의 크기를 콘솔에 목록으로 표시합니다. du 다만 표시되는 사이즈는 일반적으로 쓰는 단위가 아닌 블록(block) 단위이기 때문에 직관적이지 않습니다. du는 좀 더 직관적인 사이즈를 볼 수 있도록 별도의 옵션을 제공합니다. -k: Kilo Bytes 단위로 표시(1 Kilo Bytes = 1024 Bytes) -m: Mega Bytes 단위로 표시(1 Mega Bytes = 1024 Kilo Bytes) -g: Giga Bytes 단위로 표시(1 Gig.. 2020. 10. 27.
macOS에서 SVG 파일을 PNG로 변경하기 요즘은 macOS나 웬만한 브라우저에서는 SVG 벡터 이미지 포맷을 지원하기 때문에 그냥 써도 무방한 경우가 많겠지만, 그래도 때에 따라서 SVG 벡터 이미지 포맷 파일 대신 PNG 등의 픽셀 이미지 포맷 파일이 필요한 경우가 있을 수 있습니다. 이 글은 간단한 터미널 커맨드를 이용해 macOS에서 SVG 파일을 PNG 포맷으로 변경하는 방법을 간략히 정리합니다. 여러 방법이 있을 순 있겠지만 개인적으론 librsvg에 포함된 도구를 이용하는 것이 가장 간단하였기에 즐겨 사용합니다. 다만 기본적으로 설치되어 있지는 않기 때문에 Homebrew 등을 이용해 설치해야 합니다. brew install librsvg 이제 설치가 되었으면 rsvg-convert 유틸리티를 이용해 포맷을 변경할 수 있습니다. 다만.. 2020. 10. 19.
iCloud Drive를 드롭박스처럼 사용하기 드롭박스(Dropbox)는 개인적으로 정말 오래 써 온 클라우드 동기화 스토리지 서비스였습니다. 하지만 얼마 전부터 무료 계정의 동기화 제한 기기 대수가 3대로 제한되기 시작했습니다. 저는 이미 5대의 장비를 사용하고 있었고 여기에 추가로 맥북프로를 하나 더 장만하게 되었는데 덕분에 드롭박스를 더 이상 쓸 수 없는 몸(?)이 되어 버리더군요. 그래서 여러 대안을 찾아보다 일단 아이클라우드 드라이브(iCloud Drive)를 공유 스토리지로 써보기로 했습니다. 당연하게도 파인더를 통한 사용은 어렵지 않습니다. 이미 iCloud라는 항목에 좌측 리스트에 나타나고 있기 때문이지요. 특이하게도 실제로는 존재하지 않는 다양한 링크들이 나타나고 있다는 점이 나타나고 있긴 합니다...🤔 그런데 불행히도 아이클라우드 .. 2020. 2. 5.
어쩌다 가끔 쓸 일이 생기는 인코딩 변환기 iconv 윈도가 아닌 OS를 쓰다 보면 가끔 한글이 깨지는 문제를 겪을 때가 있습니다. 예를 들어 맥에서 작성한 파일을 윈도에서 열어보면 깨져서 보인다거나 윈도에서 작성한 텍스트를 맥에서 열어보면 깨진다거나 등등 말이지요. 물론 이는 전적으로 아직도 구식 한글셋을 사용하는 윈도의 잘못(?)으로 봐야겠지만 어쨌든 한국에서는 윈도 사용자가 압도적으로 많으니 이에 맞춰야겠지요. 이 경우 사용할 수 있는 리눅스나 macOS 빌트인 도구로 iconv를 사용할 수 있습니다. 별도의 GUI는 없는 CLI 유틸리티입니다. Convert UTF-8 to euc-kr(cp949) UTF-8으로 작성된 특정 텍스트 파일을 euc-kr(혹은 CP949 등 윈도에서 사용하는 한글 인코딩)로 바꾸려면 아래와 같은 식으로 이용할 수 있습니.. 2020. 1. 21.
맥용 잠자기 방지 도구 caffeinate 가끔 맥이 잠자기에 빠지지 않게 해야 할 경우가 있습니다. 예를 들어 개발 서버를 띄워 놓았다거나 등등 말이죠. 이럴 때는 다양한 전용 앱을 활용할 수도 있습니다만, 굳이 별도의 앱을 설치할 필요 없이 터미널에서 간단한 셸 커맨드 만으로 잠자기에 빠지지 않게 할 수도 있습니다. 바로 caffeinate 라는 macOS 전용 CLI 도구입니다. 사용법 잠자기 방지 터미널에서 caffeinate를 그냥 실행하면 맥이 잠자기에 빠지지 않게 됩니다. caffeinate 이 유틸리티는 실행된 상태에서 아무런 변화 없이 가만히 돌아가기만 합니다. 따라서 종료시킬 때는 ^C (Ctrl+C) 키를 눌러서 빠져나오면 됩니다. 모니터가 꺼지지 않게 막기 잠자기와 디스플레이 모니터가 꺼지는 것은 직접적인 관계가 없기 때문에.. 2020. 1. 6.
728x90
반응형