Alert

์ด ๊ธ€์€ Claude Code์˜ ๋„์›€์„ ๋ฐ›์•„ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

TL;DR

  • less๋Š” ๊ธด ์ถœ๋ ฅ์„ ํ•œ ํ™”๋ฉด์”ฉ ๋Š์–ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ € โ€” cat๊ณผ ๋‹ฌ๋ฆฌ ๋ฉˆ์ถฐ ์„ธ์šฐ๊ณ  ์œ„์•„๋ž˜๋กœ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
  • ๊ธฐ๋ณธ ์‚ฌ์šฉ์€ less ํŒŒ์ผ ๋˜๋Š” ๋ช…๋ น | less, ์ข…๋ฃŒ๋Š” q, ๊ฒ€์ƒ‰์€ /ํŒจํ„ด ํ›„ n/N
  • ์ž์ฃผ ์“ฐ๋Š” ์˜ต์…˜์€ -N(์ค„๋ฒˆํ˜ธ), -S(๊ธด ์ค„ ์ž๋ฅด๊ธฐ), +F(๋”ฐ๋ผ๊ฐ€๊ธฐ), -i(๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ)
  • git logยทman์ด ๋‚ด๋ถ€์ ์œผ๋กœ $PAGER(๋ณดํ†ต less)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ตฌ์กฐ

1. less๋ž€ ๋ฌด์—‡์ธ๊ฐ€

ํ„ฐ๋ฏธ๋„์—์„œ ๊ธด ํŒŒ์ผ์„ cat์œผ๋กœ ์—ด๋ฉด ๋‚ด์šฉ์ด ํ™”๋ฉด์„ ์œ„๋กœ ์ฃผ๋ฅด๋ฅต ์ง€๋‚˜๊ฐ€ ๋ฒ„๋ฆฐ๋‹ค. ๋งˆ์ง€๋ง‰ ํ™”๋ฉด๋งŒ ๋‚จ๊ณ  ์•ž๋ถ€๋ถ„์€ ์Šคํฌ๋กค๋ฐฑ์„ ๋’ค์ ธ์•ผ ํ•œ๋‹ค. ๋กœ๊ทธ๋‚˜ ๊ธด ์„ค์ • ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ๋ถˆํŽธํ•œ ์ง€์ ์ด๋‹ค.

ํŽ˜์ด์ €(pager)๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋„๊ตฌ๋‹ค. ๊ธด ์ถœ๋ ฅ์„ ํ•œ ํ™”๋ฉด ๋‹จ์œ„๋กœ ๋Š์–ด์„œ ๋ณด์—ฌ์ฃผ๊ณ , ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์ถœ๋ ฅ์„ ๋ถ™์žก์•„๋‘๊ณ  ์œ„์•„๋ž˜๋กœ ์˜ค๊ฐ€๋ฉฐ ๊ฒ€์ƒ‰๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค. less๋Š” ๋ฆฌ๋ˆ…์Šค/macOS์˜ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€ ํŽ˜์ด์ €๋‹ค.

์ด๋ฆ„์˜ ์œ ๋ž˜ - "less is more"

less๋ผ๋Š” ์ด๋ฆ„์€ ๋ง์žฅ๋‚œ์ด๋‹ค. ์„ ๋ฐฐ ํŽ˜์ด์ €๊ฐ€ more์˜€๊ณ , ๊ทธ ํ›„์†์œผ๋กœ ๋” ๊ฐ•๋ ฅํ•œ ํŽ˜์ด์ €๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์˜์–ด ์†๋‹ด โ€œless is moreโ€(์ ์„์ˆ˜๋ก ์ข‹๋‹ค)๋ฅผ ๋น„ํ‹€์–ด less๋ผ๊ณ  ๋ถ™์˜€๋‹ค. ์ด๋ฆ„์€ โ€œlessโ€์ง€๋งŒ ๊ธฐ๋Šฅ์€ more๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ๋‹ค๋Š” ๊ฒŒ ๋†๋‹ด์˜ ํ•ต์‹ฌ์ด๋‹ค.


2. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•๊ณผ ์กฐ์ž‘

๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋‘ ํ˜•ํƒœ๋งŒ ์•Œ๋ฉด ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ผ์„ ์ง์ ‘ ์—ด๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ํŒŒ์ดํ”„๋กœ ๋„˜๊ธด๋‹ค.

less /var/log/system.log   # ํŒŒ์ผ์„ ์ง์ ‘ ์—ฐ๋‹ค
ps aux | less              # ๋‹ค๋ฅธ ๋ช…๋ น์˜ ์ถœ๋ ฅ์„ ๋„˜๊ธด๋‹ค

ํŒŒ์ผ์„ ์—ด๋ฉด ์ฒซ ํ™”๋ฉด์ด ํ‘œ์‹œ๋˜๊ณ  q๋กœ ๋น ์ ธ๋‚˜์˜จ๋‹ค. ๋น ์ ธ๋‚˜์˜ค๋ฉด ํ™”๋ฉด์ด less์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ƒํƒœ๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋Œ์•„๊ฐ€๊ณ , ์ถœ๋ ฅ์ด ์Šคํฌ๋กค๋ฐฑ์— ๋‚จ์ง€ ์•Š๋Š”๋‹ค. ์ถœ๋ ฅ์ด ๊ธธ ๊ฒƒ ๊ฐ™์œผ๋ฉด | less๋ฅผ ๋ถ™์ด๋Š” ์Šต๊ด€์ด ์œ ์šฉํ•˜๋‹ค.

์ด๋™๊ณผ ๊ฒ€์ƒ‰์€ ํ‚ค ํ•˜๋‚˜์— ์ฆ‰์‹œ ๋ฐ˜์‘ํ•œ๋‹ค. Enter ์—†์ด j๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„ ํ•œ ์ค„ ๋‚ด๋ ค๊ฐ„๋‹ค.

ํ‚ค๋™์ž‘
j / kํ•œ ์ค„ ์•„๋ž˜ / ์œ„
Space / bํ•œ ํŽ˜์ด์ง€ ์•„๋ž˜ / ์œ„
g / GํŒŒ์ผ ๋งจ ์ฒ˜์Œ / ๋งจ ๋์œผ๋กœ
/ํŒจํ„ด / ?ํŒจํ„ด์•„๋ž˜ / ์œ„ ๋ฐฉํ–ฅ ๊ฒ€์ƒ‰
n / N๋‹ค์Œ / ์ด์ „ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ
q์ข…๋ฃŒ

vim์„ ์จ๋ดค๋‹ค๋ฉด j/k/g/G// ํ‚ค๊ฐ€ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•ด ์ต์ˆ™ํ•  ๊ฒƒ์ด๋‹ค. ๊ฒ€์ƒ‰์€ /error ์ž…๋ ฅ ํ›„ Enter๋ฅผ ์น˜๋ฉด ์ฒ˜์Œ ๋‚˜์˜ค๋Š” ๋งค์น˜๋กœ ์ด๋™ํ•˜๊ณ , n/N์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์˜ค๊ฐ„๋‹ค.

์˜ต์…˜์€ ๋ช…๋ น์ค„์—์„œ less -N ํŒŒ์ผ์ฒ˜๋Ÿผ ์ฃผ๊ฑฐ๋‚˜, less ์•ˆ์—์„œ ์ž…๋ ฅํ•ด ํ† ๊ธ€ํ•œ๋‹ค. ์ž์ฃผ ์“ฐ๋Š” ๋„ค ๊ฐ€์ง€๋งŒ ์ถ”๋ฆฌ๋ฉด ์ด๋ ‡๋‹ค.

less -N app.py              # ์ค„ ๋ฒˆํ˜ธ ํ‘œ์‹œ
less -S wide_table.csv      # ๊ธด ์ค„์„ ์ ‘์ง€ ์•Š๊ณ  ์ž˜๋ผ์„œ ํ‘œ์‹œ (โ†’ ํ‚ค๋กœ ์ขŒ์šฐ ์Šคํฌ๋กค)
less +F /var/log/system.log # tail -f์ฒ˜๋Ÿผ ํŒŒ์ผ ๋์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋”ฐ๋ผ๊ฐ„๋‹ค
less -i config.yaml         # ๊ฒ€์ƒ‰ ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ (๋Œ€๋ฌธ์ž ์„ž์ด๋ฉด ์ž๋™ ๊ตฌ๋ถ„)
  • -N: ๊ฐ ์ค„ ์•ž์— ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ๋‹ค
  • -S: ํ™”๋ฉด๋ณด๋‹ค ๊ธด ์ค„์„ ์ ‘์ง€ ์•Š๊ณ  ์ž˜๋ผ๋‚ธ๋‹ค. CSV๋‚˜ ๋„“์€ ํ‘œ๊ฐ€ ๋’ค์—‰ํ‚ค์ง€ ์•Š๋Š”๋‹ค
  • +F: ํŒŒ์ผ ๋์œผ๋กœ ๊ฐ€์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๋Š” ๋‚ด์šฉ์„ ๋”ฐ๋ผ๊ฐ„๋‹ค. Ctrl+C๋กœ ๋ฉˆ์ถ”๋ฉด ๊ทธ ์ž๋ฆฌ์—์„œ ์Šคํฌ๋กคยท๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ณ , F๋กœ ๋‹ค์‹œ ๋”ฐ๋ผ๊ฐ„๋‹ค
  • -i: ๊ฒ€์ƒ‰์–ด๊ฐ€ ์ „๋ถ€ ์†Œ๋ฌธ์ž๋ฉด ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ณ , ๋Œ€๋ฌธ์ž๊ฐ€ ์„ž์ด๋ฉด ๊ตฌ๋ถ„ํ•œ๋‹ค (smart case)

3. cat, more์™€์˜ ์ฐจ์ด

cat์€ ํŒŒ์ผ ๋‚ด์šฉ์„ ํ•œ ๋ฒˆ์— ์ „๋ถ€ ์Ÿ์•„๋‚ด๊ณ  ๋๋‚˜๋Š” ๋„๊ตฌ๋‹ค. ํŽ˜์ด์ง•์ด ์—†๋‹ค.

cat huge.log     # ์ „๋ถ€ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒ โ€” ๋งˆ์ง€๋ง‰ ํ™”๋ฉด๋งŒ ๋‚จ์Œ
less huge.log    # ์ฒซ ํ™”๋ฉด์—์„œ ๋ฉˆ์ถค โ€” ์œ„์•„๋ž˜๋กœ ํƒ์ƒ‰ ๊ฐ€๋Šฅ

ํ•ต์‹ฌ ์ฐจ์ด๋Š” โ€œ๋ฉˆ์ถ”๋А๋ƒโ€๋‹ค. ๊ธด ์ถœ๋ ฅ์„ ์ฝ๋Š” ๊ฒŒ ๋ชฉ์ ์ด๋ฉด less, ๋‚ด์šฉ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ํ˜๋ ค๋ณด๋‚ด๋Š” ๊ฒŒ ๋ชฉ์ ์ด๋ฉด cat์ด ๋งž๋‹ค.

more๋Š” less๋ณด๋‹ค ์˜ค๋ž˜๋œ ํŽ˜์ด์ €๋‹ค. ๋‘˜ ๋‹ค ํŽ˜์ด์ง•์„ ํ•˜์ง€๋งŒ less๊ฐ€ ๊ธฐ๋Šฅ์ด ํ›จ์”ฌ ๋งŽ๋‹ค.

moreless
์œ„๋กœ ์Šคํฌ๋กค์ œํ•œ์ /๋ถˆ๊ฐ€์ž์œ ๋กญ๊ฒŒ (k, b)
๊ฒ€์ƒ‰์•ž์œผ๋กœ๋งŒ์–‘๋ฐฉํ–ฅ (/, ?)
๋๊นŒ์ง€ ๊ฐ€๋ฉด์ž๋™ ์ข…๋ฃŒํ™”๋ฉด ์œ ์ง€

์˜ค๋Š˜๋‚  ๊ตณ์ด more๋ฅผ ์“ธ ์ด์œ ๋Š” ๊ฑฐ์˜ ์—†๋‹ค.


4. git, man์ด less๋ฅผ ํŽ˜์ด์ €๋กœ ์“ด๋‹ค

less๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„๋„ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋งค์ผ less๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค. ์ถœ๋ ฅ์ด ๊ธด ๋ช…๋ น๋“ค์ด ๋‚ด๋ถ€์ ์œผ๋กœ ํŽ˜์ด์ €๋ฅผ ๋„์šฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • git log, git diff, git show: ๊ฒฐ๊ณผ๊ฐ€ ๊ธธ๋ฉด ํŽ˜์ด์ €๋กœ ๋ณด๋‚ธ๋‹ค
  • man: ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ํŽ˜์ด์ €๋กœ ํ‘œ์‹œํ•œ๋‹ค

์ด ํŽ˜์ด์ €๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š” $PAGER ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ๊ฒฐ์ •ํ•˜๊ณ , ์„ค์ •์ด ์—†์œผ๋ฉด ๋Œ€๋ถ€๋ถ„ less๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค. ๊ทธ๋ž˜์„œ less์˜ j/k///q ํ‚ค๊ฐ€ git์ด๋‚˜ man ํ™”๋ฉด์—์„œ๋„ ๋˜‘๊ฐ™์ด ๋จนํžŒ๋‹ค.

echo $PAGER            # ํ˜„์žฌ ํŽ˜์ด์ € ํ™•์ธ
 
export PAGER='less'
export LESS='-R -i'    # ์ƒ‰ ์ฝ”๋“œ ์œ ์ง€(-R), ๊ฒ€์ƒ‰ ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ(-i)

๋งค๋ฒˆ ์˜ต์…˜์„ ์น  ํ•„์š” ์—†์ด LESS ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋„ฃ์–ด๋‘๋ฉด less๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ž๋™ ์ ์šฉ๋œ๋‹ค. git์€ ๋ณ„๋„๋กœ core.pager๋„ ๋ณด๋ฉฐ, git --no-pager log๋กœ ํŽ˜์ด์ €๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋‹ค.