๋ฐ˜์‘ํ˜•

pls๋Š” ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ธ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ด์˜๊ณ  ๊ฐ•๋ ฅํ•œ ํ„ฐ๋ฏธ๋„ ls ํˆด์ด๋‹ค. pls์—์„œ p๋Š” ์•„๋ž˜ ์˜๋ฏธ๋ฅผ ํฌํ•จํ•œ๋‹ค.

  • Pretty (the output from pls surely looks better)
  • Powerful (pls has lots of features and endless customisation)
  • Programmer (pls is geared towards developers)
  • Professional (pls can be extensively tweaked by the pros)
  • Python (pls is written in Python!)

 

์‰ฌ์šด ์‚ฌ์šฉ๋ฒ•, ํด๋”/ํŒŒ์ผ ์•„์ด์ฝ˜ ํ‘œ์‹œ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณ„ ํŒŒ์ผ๋ช… ์ƒ‰์ƒ ๊ตฌ๋ถ„(*.js ํŒŒ์ผ ๋…ธ๋ฝ์ƒ‰์œผ๋กœ ํ‘œ์‹œ ๋“ฑ), ์ค‘์š” ํŒŒ์ผ์€ ๊ตต๊ฒŒ ํ˜น์€ ๋ฐ‘์ค„๋กœ ํ‘œ์‹œ, ์ค‘์š”ํ•˜์ง€ ์•Š์€ ํŒŒ์ผ์€ ํ๋ฆฌ๊ฒŒ ํ‘œ์‹œ, Git status ํ‘œ์‹œ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

๋ฌด์—‡๋ณด๋‹ค ํŒŒ์ผ/ํด๋” ๋ชฉ๋ก์„ ๋” ์ง๊ด€์ ์ด๊ณ  ์ด์˜๊ฒŒ ํ‘œ์‹œํ•˜๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ ๋‹ค. ์ถ”ํ›„์—” ํ•˜์œ„ ํด๋”๋ฅผ ํŠธ๋ฆฌ ๋ชฉ๋ก์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค(๋‹ค๋ฅธ ls ๋„๊ตฌ์ธ lsd์—์„  ์ด๋ฏธ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค)

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ - ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€

 

์„ค์น˜


pls๋Š” pip ํ˜น์€ pipx๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. pip๋กœ ์„ค์น˜ํ•˜๋ฉด ๊ธ€๋กœ๋ฒŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์‹ ๋ฌธ์„œ์—์„  pipx๋กœ ์„ค์น˜ํ•˜๋Š”๊ฑธ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

brew install pipx # pipx ์„ค์น˜
pipx install pls # pls ์„ค์น˜
pipx upgrade pls # pls ์—…๋ฐ์ดํŠธ
pipx uninstall pls # pls ์‚ญ์ œ

 

pls์—์„œ ์•„์ด์ฝ˜์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด Nerd Font๋ฅผ ์„ค์น˜ํ•ด์•ผ ๋œ๋‹ค(์ฐธ๊ณ ๋กœ lsd๋„ Nerd Font๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค). brew๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด brew์˜ ํ™•์žฅ ๋ฒ„์ „์ธ cask๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ํฐํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

# (ํ•„์ˆ˜) cask-fonts ์„ค์น˜
brew tap homebrew/cask-fonts

# (์„ ํƒ1) Hack Nerd ํฐํŠธ (์ถ”์ฒœ)
brew install --cask font-hack-nerd-font 

# (์„ ํƒ2) JetBrains Mono ํฐํŠธ (์ถ”์ฒœ)
brew install --cask font-jetbrains-mono-nerd-font 

# (์„ ํƒ3) ๋‹ค๋ฅธ Nerd Font ์„ค์น˜์‹œ ์ผ€๋ฐฅ ์ผ€์ด์Šค๋กœ ํฐํŠธ ์ด๋ฆ„ ์ž…๋ ฅ
brew install --cask font-์ผ€๋ฐฅ-์ผ€์ด์Šค-ํฐํŠธ-์ด๋ฆ„-font

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ•


pls์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด ํ”Œ๋ž˜๊ทธ ๋ชฉ๋ก์€ pls -h๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Importance, Sorting, Collapse ๋“ฑ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ง€์›ํ•œ๋‹ค. Nerd ์•„์ด์ฝ˜ ๋Œ€์‹  ์ด๋ชจ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์•„์˜ˆ ์•ˆ๋ณด์ด๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, GitHub Readme๊ฐ€ ์•„๋‹Œ ๋ณ„๋„ ํŽ˜์ด์ง€์—์„œ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ€๋…์„ฑ์ด ์ •๋ง ์ข‹๋‹ค ๐Ÿ‘€

 

๋ช…๋ น์–ด ํ”Œ๋ž˜๊ทธ(Flag) ๋ชฉ๋ก

 

Importance

์ค‘์š”๋„ ๊ธฐ์ค€(์ž„๊ณ„๊ฐ’) ์„ค์ • / ๊ธฐ๋ณธ๊ฐ’ 0

pls -a 1 # ์ค‘์š”๋„ ๊ธฐ์ค€ 1๋กœ ์„ค์ •

 

pls๋Š” ์„ค์ •ํ•œ ์ค‘์š”๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ ํ‘œ์‹œ ๋ฐฉ๋ฒ•์„ ์ด 5๋‹จ๊ณ„๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค. ์ˆจ๊น€ ํŒŒ์ผ์„ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ค‘์š”๋„ ๊ธฐ์ค€์„ 1๋กœ ์„ค์ •ํ•œ๋‹ค. (์ค‘์š”๋„ -2 ํŒŒ์ผ์€ ์ˆจ๊น€ → ํ๋ฆฌ๊ฒŒ, ์ค‘์š”๋„ -1 ํŒŒ์ผ์€ ํ๋ฆฌ๊ฒŒ → ์ผ๋ฐ˜ ํŒŒ์ผ, …)

 

Level (์ž„๊ณ„๊ฐ’) Significance (์ค‘์š”๋„) Appearance (ํ‘œ์‹œ ๋ฐฉ์‹)
-2 Least important (๊ฐ€์žฅ ๋œ ์ค‘์š”) Hidden by default (์ˆจ๊น€)
-1 Lower importance (๋œ ์ค‘์š”) Dimmed (ํ๋ฆฌ๊ฒŒ ํ‘œ์‹œ)
0 Neutral importance (์ผ๋ฐ˜) Normal
+1 Higher importance (์ค‘์š”) Bold
+2 Most important (๊ฐ€์žฅ ์ค‘์š”) Underline

๐Ÿ’ก ์ค‘์š”๋„ ํŒ๋ณ„ ๊ธฐ์ค€

  • ํŒŒ์ผ ์ด๋ฆ„์— . ์˜จ์ ์ด ๋“ค์–ด๊ฐ”๋Š”์ง€ ์—ฌ๋ถ€
  • ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ ์ŠคํŽ™(Spec)์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€

 

Collapse

ํŠน์ • ํŒŒ์ผ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋œ ํ•˜์œ„ ํŒŒ์ผ(collapsed file)์„ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ• ์ง€ ์ง€์ • / ๊ธฐ๋ณธ๊ฐ’ 0

pls -c 0 # collapse ๊ธฐ๋Šฅ ํ•ด์ œ(๊ธฐ๋ณธ๊ฐ’)
pls -c 1 # collapsed file์„ ๋ถ€๋ชจ ํŒŒ์ผ ์•„๋ž˜์ชฝ์— ์ค‘์ฒฉ ๊ตฌ์กฐ๋กœ ํ‘œ์‹œ
pls -c 2 # collapsed file ์ˆจ๊ธฐ๊ธฐ

 

์ž๋™ ์ƒ์„ฑ๋œ ํ•˜์œ„ ํŒŒ์ผ์ด ์ค‘์ฒฉ ๊ตฌ์กฐ๋กœ ํ‘œ์‹œ๋œ ๋ชจ์Šต — pls -c 1

 

Details

์–ด๋–ค ์„ธ๋ถ€ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ• ์ง€ ์ง€์ • / ๊ธฐ๋ณธ๊ฐ’ none

 

๐Ÿ’ก Git Status ํ•ญ๋ชฉ์€ Git Repo ํด๋” ์•ˆ์—์„œ๋งŒ ํ‘œ์‹œ๋œ๋‹ค. ๋˜ํ•œ ์‹œ์Šคํ…œ์— Git์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

pls -d none # ์„ธ๋ถ€ ํ•ญ๋ชฉ ํ‘œ์‹œ ์•ˆํ•จ (๊ธฐ๋ณธ๊ฐ’)
pls -d std # ํ‘œ์ค€ ์„ธ๋ถ€ ํ•ญ๋ชฉ ํ‘œ์‹œ (ํƒ€์ž…/๊ถŒํ•œ/์œ ์ €/๊ทธ๋ฃน)
pls -d std -d mtime # ํ‘œ์ค€ ์„ธ๋ถ€ ํ•ญ๋ชฉ ๋ฐ ์ˆ˜์ • ์‹œ๊ฐ„ ํ‘œ์‹œ
pls -d size -u decimal # ํŒŒ์ผ/ํด๋” ์‚ฌ์ด์ฆˆ๋ฅผ 10์ง„์ˆ˜ ๋‹จ์œ„๋กœ ํ‘œ์‹œ
pls -d all # ๋ชจ๋“  ์„ธ๋ถ€ ํ•ญ๋ชฉ ํ‘œ์‹œ
Standard Key Meaning Note
  inode inode ์œˆ๋„์šฐ ๋ฏธ์ง€์›
  links ํ•ด๋‹น ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” Link ๊ฐœ์ˆ˜ ์œˆ๋„์šฐ ๋ฏธ์ง€์›
โœ… type ํƒ€์ž… ๋ฌธ์ž์—ด (l, d, -, p, s, c, b)  
โœ… perms Permissions  
โœ… user Owner user ์œˆ๋„์šฐ ๋ฏธ์ง€์›
โœ… group Owner group ์œˆ๋„์šฐ ๋ฏธ์ง€์›
  size Size  
  btime Created at macOS ์ „์šฉ
  ctime Created/Changed at  
  mtime Modified at  
  atime Accessed at  
  git Git status Git ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์•ˆ์—์„œ๋งŒ ํ‘œ์‹œ

 

yml ํŒŒ์ผ ์„ค์ •


๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉํ•˜๊ณ  ์‹ถ์€ pls ์˜ต์…˜์€ .pls.yml ํŒŒ์ผ์— ๋ฏธ๋ฆฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. .pls.yml ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ(~)์— ๋งŒ๋“ค๋ฉด ํ˜„์žฌ ์ปดํ“จํ„ฐ์— ๋กœ๊ทธ์ธํ•œ ์œ ์ € ๋ ˆ๋ฒจ ๋‹จ์œ„์— ์ ์šฉ๋˜๊ณ , ํŠน์ • ํ”„๋กœ์ ํŠธ ํด๋”์— ๋งŒ๋“ค๋ฉด ํ”„๋กœ์ ํŠธ ๋‹จ์œ„๋กœ ์ ์šฉ๋œ๋‹ค.

 

โถ ์•„์ด์ฝ˜ ๋ณ€๊ฒฝ์€ Nerd Font Cheat Sheet์—์„œ ์›ํ•˜๋Š” ์•„์ด์ฝ˜์˜ Hex ๊ฐ’์„ ๋ณต์‚ฌํ•œ ํ›„ ์•ž์— \u๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค. (e.g. f092\uf092)

  • ํ„ฐ๋ฏธ๋„์— ์•„์ด์ฝ˜์ด ์ž˜ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด echo "\uf092" ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•ด๋ณธ๋‹ค.
  • Material Design Icon(MDI) ์ฝ”๋“œ ํฌ์ธํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋ผ์„œ nf-md-* nf-mdi-* ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ฐ€์ง„ ์•„์ด์ฝ˜์€ ๊นจ์ ธ์„œ ๋‚˜์˜จ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ ์•„์ด์ฝ˜์ค‘ nf-mdi-git ๊ฐ™์€ ์•„์ด์ฝ˜์€ ๋‹ค๋ฅธ๊ฑธ๋กœ ๊ต์ฒดํ•ด์•ผ ํ•œ๋‹ค.

 

โท pls ์ž์ฒด์ ์œผ๋กœ Schema validation์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด .pls.yml ํŒŒ์ผ ์ˆ˜์ • ์‹œ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. VSCode๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด YAML ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์„ค์น˜ํ•˜๊ณ  VSCode ์„ค์ • ํŒŒ์ผ์— ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

{
  // VSCode - settings.json
  "yaml.schemas": {
    "https://raw.githubusercontent.com/dhruvkb/pls/main/src/pls/data/schema/pls_config.yml": [
      ".pls.yml"
    ]
  }
}

 

์„ค์ • ์™„๋ฃŒ ํ›„ nerd_icons๋ฅผ nerd_iconss๋กœ ์ž˜๋ชป ์ž…๋ ฅํ•˜๋ฉด yaml-schema ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค

โธ xml, iml, log ํ™•์žฅ์ž์ฒ˜๋Ÿผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์ •๋œ ์•„์ด์ฝ˜์ด ์—†๋Š” ํŒŒ์ผ์€ ์ง์ ‘ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ’ก ์–ด๋–ค ์•„์ด์ฝ˜์œผ๋กœ ์ง€์ •ํ• ์ง€ ๊ณ ๋ฏผ๋œ๋‹ค๋ฉด lsd ์•„์ด์ฝ˜ ๋งคํ•‘ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹๋‹ค.

 

โน ์‹ฌ๋ณผ๋ฆญ ๋งํฌ(symlink), ํด๋”(dir), ์ผ๋ฐ˜ ํŒŒ์ผ(file) ๋“ฑ์€ constants ํ”„๋กœํผํ‹ฐ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

symlink ์•„์ด์ฝ˜/์ปฌ๋Ÿฌ ๋ฐ file ์•„์ด์ฝ˜ ์„ค์ • ๅ‰
symlink ์•„์ด์ฝ˜/์ปฌ๋Ÿฌ ๋ฐ file ์•„์ด์ฝ˜ ์„ค์ • ๅŽ

 

Alias ์„ค์ •


# ls๋ฅผ pls ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ฐ”์ธ๋”ฉ ๋ฐ ์ˆจ๊น€ ํŒŒ์ผ ํ‘œ์‹œ ์•ˆํ•จ
alias ls="pls -a 0" 

# l์„ pls ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ฐ”์ธ๋”ฉ ๋ฐ ๋ช…์‹œํ•œ ์„ธ๋ถ€ ํ•ญ๋ชฉ ํ‘œ์‹œ(std/git/size/mtime/links)
alias l="pls -d std -d git -d size -d mtime -d links" 

# la๋ฅผ pls ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ฐ”์ธ๋”ฉ ๋ฐ ๋ชจ๋“  ์„ธ๋ถ€ ํ•ญ๋ชฉ ํ‘œ์‹œ
alias la="pls -d all"
๋ฐ˜์‘ํ˜•