Skip to main content

4 posts tagged with "cli"

View All Tags

알아두면 쓸데있는 개발자 도구 - CLI 편

· 10 min read
Haril Song
Owner, Software Engineer at 42dot

Overview

최고의 App 을 설명했던 지난 글 에 이어서 Command Line Interface(이하 CLI) 중 추천할만한 도구를 살펴본다. 이번에 소개되는 모든 툴들은 필자가 최소 6개월 이상 써본 도구들이며, 새로운 장비를 설정할 때 반드시 설치하는 것들이다.

zoxide

GitHub - ajeetdsouza/zoxide: A smarter cd command. Supports all major shells.

한 번이라도 방문했던 디렉토리라면 경로를 기억할 필요가 없게 해주는 툴. 예를 들면 아래와 같은 경우다.

cd ~/.config/somewhere/longlong/path

# 다음부터는 아래 명령으로 바로 방문가능
z path

이게 굉장히 편리해서, 특정 설정 파일이 어디있는지 기억할 필요가 없어진다. zi 를 사용하면 우선순위 List 가 출력되기 때문에, fuzzy 하게 찾아갈 수도 있다.

한 번 써보면 다시는 이 툴을 사용하기 전으로 돌아갈 수 없을 것.

mise

GitHub - jdx/mise: dev tools, env vars, task runner

각종 환경변수 및 언어, 패키지들의 버전 매니저. 구조상 안정성이 매우 뛰어나며, Rust 로 구현되어 속도도 빠르다. 직관적인 명령어는 러닝커브를 크게 완화시켜 준다.

이미 본 블로그에 글로도 소개했을만큼, 굉장히 애정하는 툴이다. mise 역할을 해줄 비슷한 도구는 몇가지 더 있지만 개인적으로는 그 중 가장 추천할만하다고 생각한다. 예를 들면, direnv 는 mise 로 완전히 대체가 가능하고 nix 는 과하게 복잡하여 범용성이 떨어진다.

다양한 언어를 다루는 프로그래밍 Multilingual 이라면, 꼭 써보자.

chezmoi

chezmoi

사용하는 장비가 여러 대라면, 개발 환경을 동기화하기가 여간 귀찮은게 아니다. 특히 CLI 를 자주 사용하는 개발자라면 더더욱.

아예 동기화를 포기하고 지낼 생각이라면 모르겠지만, 어떻게 동기화할 수 있을지 고민하고 있다면 chezmoi 를 써보자. 혹여, 새로운 장비를 구매하더라도 초기 설정에 시간을 들일 필요가 없어진다.

mise 와 마찬가지로 본 블로그에 사용법에 관한 이 있으니 참고.

fzf

GitHub - junegunn/fzf: :cherry_blossom: A command-line fuzzy finder

GitHub Star 약 70k, 더 이상의 설명이 필요할까(참고로 spring-framework 가 57k 이다).

한국인 개발자인 junegunn 님께서 관리하시는 오픈소스 fuzzy finder 로, 표준입출력 파이프라이닝을 통해 어마어마한 범용성을 자랑한다.

검색이 필요하다면, 종류에 상관없이 fzf 를 쓰면 된다. 워낙 이런저런 패키지들이 가져다가 쓰는 중이라, fzf 의 존재를 몰랐더라도 이미 간접적으로 쓰고 있었을 수 있다.

fd

GitHub - sharkdp/fd: A simple, fast and user-friendly alternative to 'find'

find 명령을 대체한다.

Rust 로 작성되었으며, find 에 비해 최대 50% 빠르다고 한다. highlighting 도 깔끔한 편이고, 명령어 옵션도 find 보다 훨씬 직관적이다.

ripgrep

GitHub - BurntSushi/ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore

grep 명령을 대체한다. 이름은 ripgrep 이지만 rg 를 명령어로 사용한다.

fd 와 비슷하게, Rust 로 작성되었다. grep 에 비해 출력으로 훨씬 다양한 정보를 얻을 수 있다. 명령어도 직관적이라 사용도 쉬운데 속도까지 빠르니 안쓸 이유가 딱히 없다.

그야말로 'RIP, grep'.

lsd

GitHub - lsd-rs/lsd: The next gen ls command

ls 명령을 대체한다.

ls 명령은 어마어마하게 많이 쓰는 명령이다. 명령어 자체가 오래되었기도 하지만, 출력으로 알 수 있는 정보가 다양하지는 않다. lsd 를 사용하면 기존 ls 를 완전히 대체할 수 있다.

bat

GitHub - sharkdp/bat: A cat(1) clone with wings.

cat 명령을 대체한다.

cat 명령은 단순 출력이지만, bat 을 사용하면 code highlighting 을 누릴 수 있다. 어느 정도 눈치 빠른 개발자라면 라인 출력을 보고 '쉘 파이프라이닝을 방해하는거 아닐까' 걱정이 될 수 있지만, 전혀 방해하지 않는다. 걱정말고 신문물을 누려보자.

필자는 bat 명령의 alias 를 cat 으로 설정하여 사용하고 있다.

HTTPie

HTTPie – API testing client that flows with you

curl 을 대체한다.

APP 도 있어서 어느 글에 포함시켜야할까 고민을 했지만, 개인적으로는 cli 로만 사용하기 때문에 이쪽 글로 넣었다.

curl 대신 HTTPie 를 선호하냐하면, 매우매우 직관적이기 때문이다. 간단한 GET 요청은 아래처럼 보낼 수 있다.

https httpie.io/hello

응답은 이렇게 포맷팅되어 온다.

curl 응답을 떠올려보자. 개발자도 예쁜걸 좋아한다.

Orbstack

OrbStack · Fast, light, simple Docker & Linux

Docker Desktop 을 대체한다.

Docker 컨테이너를 사용할 때 조금 더 빨라지고 몇몇 버그들이 사라진다. 하지만 진정한 진가는 VM 을 사용할 때인데, 전통적으로 VM 을 쓰기 어려웠던 맥에서 VM 을 굉장히 가볍게 실행시킬 수 있다. 우분투나 칼리리눅스 등의 OS 에서 테스트가 필요할 경우, orbstack 을 사용하면 매우 빠르고 편리하게 관리할 수 있으니 사용해보자. 개인적으로 매우 재밌는 경험이었다.

atuin

GitHub - atuinsh/atuin: ✨ Magical shell history

chezmoi 를 사용하면 사용하는 도구들의 설정은 동기화할 수 있었다. atuin 을 사용하면 회사에서 쳤던 명령어 history 를 동기화할 수 있다. 더 이상 회사에서 사용했던 명령어가 뭐였는지 기억해내려고 안간힘을 쓸 필요가 없다.

warning

한가지 아쉬운 점은 터미널로 Warp 를 사용한다면 온전히 atuin 을 활용하기 어렵다는 점이다. Warp 는 자체 history 기능을 제공하여 atuin 과 간섭이 있다. 아래 명령을 사용하면 history 에서 명령어 검색이 가능하여, 임시방편으로 쓰고 있다.

atuin history list | fzf

trash-cli

터미널에 '휴지통' 기능을 구현한다. 따라서 더 이상 rm -rf / 을 두려워할 필요가 없어진다. 얼마든지 복원이 가능하기 때문.

개발자 최대의 적인 rm -rf / 에서 자유로워질 수 있다는데, 그 이상의 이유가 필요한가?

Conclusion

지금까지 개인적으로 매우 좋아하는 여러 툴들을 소개했다.

사실 이 외에도 추천할만한 도구는 얼마든지 더 있지만, 누가 뭘 추천해주든 자기 손에 익은게 제일 좋은 법이다. 나머지는 자신의 환경에 맞게 찾아써보자.

info

사용 중인 모든 툴은 여기서 볼 수 있다.

Google Kubernetes Engine 를 Local CLI 를 통해 관리하기

· 5 min read
Haril Song
Owner, Software Engineer at 42dot

Overview

Google 에서 제공하는 Cloud shell 을 통해 언제 어디서나 Web 을 통해서 kubectl 을 실행할 수 있다는 점은 매우 편리하지만 간단한 조회 명령 한 줄을 위해서 Web 접근 및 인증 등 다소 귀찮은 작업이 필요하다는 단점이 있습니다. 이번 글에서는 Google Cloud Kubernetes 를 local 에서 CLI 를 통해 빠르게 관리하기 위한 방법을 공유합니다.

우아한 HTTP CLI, HTTPie

· 2 min read
Haril Song
Owner, Software Engineer at 42dot

Overview

curl 명령어를 대체할 수 있는 CLI tool

평소 Linux 를 자주 사용하는 개발자라면 curl 명령어를 쓸 일이 많다. 서버에서 외부 API 요청을 보내려면 필수적인 명령어인데, 출력 결과의 가독성이 좋지 않다는 단점이 있었다. HTTPie 는 이런 단점을 해소해줄 수 있는 재밌는 툴이기에 소개해보려 한다.