ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค ์†๋„๊ฐ€ 40๋ฐฐ ๋นจ๋ผ์ง€๋Š” ๊ฒฝ์šฐ

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” Sherlock ์‹œ์Šคํ…œ์˜ ์ตœ์‹  ์—…๋ฐ์ดํŠธ ์ค‘ ์ผ๋ถ€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. [์ด๊ฒƒ์€ ์Šคํƒ ํฌ๋“œ ๋Œ€ํ•™์˜ ๊ณ ์„ฑ๋Šฅ ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. trans.]๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ๋ชฉ ์ˆ˜๊ฐ€ ๋งŽ์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ ๋‚˜์—ด ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๊ธฐ์‚ฌ์™€๋Š” ๋‹ฌ๋ฆฌ, ์ด๊ฒƒ์€ Sherlock์ด ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ตœ์ƒ์˜ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ์ •๊ธฐ์ ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด๋ถ€์ž ๋ณด๊ณ ์„œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ์ด์™€ ๊ฐ™์€ ๊ธฐ์‚ฌ๋ฅผ ๋” ๋งŽ์ด ์ถœํŒํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋งŽ์€ ํŒŒ์ผ์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์€ ์‚ฌ์šฉ์ž์˜ ๊ธฐ์ˆ  ์ง€์› ์งˆ๋ฌธ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ณด๊ณ ํ–ˆ๋‹ค. ls 15๊ฐœ๊ฐ€ ๋„˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. $SCRATCH [์ž„์‹œ ํŒŒ์ผ์šฉ ๋””๋ ‰ํ† ๋ฆฌ - ์•ฝ. ๋ ˆ์ธ].

ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ˆ˜์ฒœ ๊ฐœ์˜ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋ถ€๋‹ด์„ ์ฃผ๋ฏ€๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด๋ฅผ ์•Œ๊ณ  ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ธ์ •ํ•˜๋ฉด์„œ๋„ ์ž์‹ ์˜ ๋…ธํŠธ๋ถ์—์„œ ์…œ๋ก๋ณด๋‹ค ๋ชฉ๋ก์ด 1000๋ฐฐ ๋” ๋น ๋ฅด๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ƒ์ฒ˜๋ฅผ ์ž…ํ˜”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋” ๊นŠ์ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์™œ๋ƒ๋ฉด ls๋Š” ๋ฉ‹์žˆ์–ด ๋ณด์ด๊ฑฐ๋“ ์š”

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ls ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š”์ง€. ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ๋ฐฐํฌํŒ์—์„œ ls ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ls --color=auto, ๋ชจ๋‘๊ฐ€ ์ƒ‰์ƒ์„ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•„๋ฆ„๋‹ค์šด ์ƒ‰์ƒ์—๋Š” ๋Œ€๊ฐ€๊ฐ€ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ์—๋Š” ๋Œ€๊ฐ€๊ฐ€ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ls ์ ์ ˆํ•œ ์ƒ‰์ƒ์„ ์„ ํƒํ•˜๋ ค๋ฉด ํŒŒ์ผ ์œ ํ˜•, ๊ถŒํ•œ, ํ”Œ๋ž˜๊ทธ, ํ™•์žฅ ์†์„ฑ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ… ์ค‘ ํ•˜๋‚˜๋Š” ls์—์„œ ์ƒ‰์ƒ์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์‚ฌ์šฉ์ž์˜ ๋ถ„๋…ธ๋ฅผ ์ƒ์ƒํ•ด๋ณด์‹ญ์‹œ์˜ค. ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„ ์ปฌ๋Ÿฌ ์ถœ๋ ฅ์„ ์ œ๊ฑฐํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ดด๋ฌผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋” ๊นŠ์ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ls ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•œ ์ƒ‰์ƒ ํ•ญ๋ชฉ LS_COLORS, ์ด๋Š” ์„ค์ •๋จ dircolors(1) ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ dir_colors(5). ๋„ค, ์‹คํ–‰ ํŒŒ์ผ์€ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ์–ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ls๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ชจ๋ฅธ๋‹ค๋ฉด ๋ฌธ (do), ๊ทธ ๋‹ค์Œ dir_colors ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค, ๋ชจ๋“  ๊ฒƒ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ).

์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž

์–ด๋–ค ์ƒ‰ ๊ตฌ์„ฑํ‘œ๊ฐ€ ์†๋„ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ค๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ—˜ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

$ mkdir $SCRATCH/dont
$ touch $SCRATCH/dont/{1..10000} # don't try this at home!
$ time ls --color=always $SCRATCH/dont | wc -l
10000

real    0m12.758s
user    0m0.104s
sys     0m0.699s

12,7๊ฐœ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ 10์ดˆ๋กœ ๊ทธ๋ฆฌ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊นƒ๋ฐœ์ด ํ•„์š”ํ•ด์š” --color=always: ๋น„๋ก ๊ทธ๊ฐ€ ๋Œ์•„์„ฐ์ง€๋งŒ ls --color=autoํ•˜์ง€๋งŒ ls ํ„ฐ๋ฏธ๋„์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ(์˜ˆ: ํŒŒ์ดํ”„ ๋˜๋Š” ์ถœ๋ ฅ ๋ฆฌ๋””๋ ‰์…˜์„ ํ†ตํ•ด)๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ์ƒ‰์ƒ ์ง€์ •์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. auto. ์˜๋ฆฌํ•œ ์‚ฌ๋žŒ.

๊ทธ๋Ÿผ ์™œ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ๋ณด์•˜๋‹ค strace:

$ strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 44.21    0.186617          19     10000           lstat
 42.60    0.179807          18     10000     10000 getxattr
 12.19    0.051438           5     10000           capget
  0.71    0.003002          38        80           getdents
  0.07    0.000305          10        30           mmap
  0.05    0.000217          12        18           mprotect
  0.03    0.000135          14        10           read
  0.03    0.000123          11        11           open
  0.02    0.000082           6        14           close
[...]

์™€์šฐ: 10 ํ†ตํ™” lstat(), 10 ํ†ตํ™” getxattr() (์šฐ๋ฆฌ ํ™˜๊ฒฝ์— ls๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ์†์„ฑ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ์‹คํŒจ), 10๋ฒˆ์˜ ํ˜ธ์ถœ capget().

ํ™•์‹คํžˆ ์ด๊ฒƒ์€ ์ตœ์ ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ์†์„ฑ? ์•„๋‹ˆ์š”

์กฐ์–ธ์„ ๋”ฐ๋ฅด๋‹ค 10๋…„์ „ ๋ฒ„๊ทธ, ์†์„ฑ ํ™•์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ:

$ eval $(dircolors -b | sed s/ca=[^:]*:/ca=:/)
$ time strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 98.95    0.423443          42     10000           lstat
  0.78    0.003353          42        80           getdents
  0.04    0.000188          10        18           mprotect
  0.04    0.000181           6        30           mmap
  0.02    0.000085           9        10           read
  0.02    0.000084          28         3           mremap
  0.02    0.000077           7        11           open
  0.02    0.000066           5        14           close
[...]
------ ----------- ----------- --------- --------- ----------------
100.00    0.427920                 10221         6 total

real    0m8.160s
user    0m0.115s
sys     0m0.961s

์™€, ๊ฐ€์† ์ตœ๋Œ€ 8์ดˆ! ์šฐ๋ฆฌ๋Š” ๊ทธ ๋น„์‹ผ ์ „ํ™”๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค getxattr(), ๊ทธ๋ฆฌ๊ณ  ๋„์ „ capget() ๊ทธ๊ฒƒ๋„ ์‚ฌ๋ผ์กŒ์–ด์š”, ์ข‹์•„์š”.

๊ทธ๋Ÿฐ๋ฐ ์•„์ง๋„ ์ด๋Ÿฐ ๊ท€์ฐฎ์€ ์ „ํ™”๊ฐ€ ์™€์š” lstat(), ํ•˜์ง€๋งŒโ€ฆ

์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฝƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค LS_COLORS.

๋จผ์ € ์ด ๋ณ€์ˆ˜๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ echo $LS_COLORS
rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
$ unset LS_COLORS
$ echo $LS_COLORS

$  time ls --color=always $SCRATCH/dont | wc -l
10000

real    0m13.037s
user    0m0.077s
sys     0m1.092s

๋ฌด์—‡!?! ์•„์ง 13์ดˆ?

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ LS_COLORS ํ•ด๋‹น ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋งŒ ์ •์˜๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. <type>=color:, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์—ฌ์ „ํžˆ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ํŒŒ์ผ ํ˜•์‹์— ๋Œ€ํ•œ ์ƒ‰์ƒํ™”๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. <type>=: ๋˜๋Š” <type> 00 ํŒŒ์ผ์— DIR_COLORS.

๋งŽ์€ ์‹œํ–‰์ฐฉ์˜ค ๋์— ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ๋‹ค์Œ์œผ๋กœ ์ขํ˜”์Šต๋‹ˆ๋‹ค.

EXEC 00
SETUID 00
SETGID 00
CAPABILITY 00

์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ฐ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

LS_COLORS='ex=00:su=00:sg=00:ca=00:'

์ด๋Š” ์†์„ฑ๋ณ„๋กœ ํŒŒ์ผ ์ƒ‰์ƒ์„ ์ง€์ •ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ, ํ•˜์ง€๋งŒ ์กฐ๊ธˆ์”ฉ setuid/setgid, ์–ด๋Š ์ชฝ๋„ ์•„๋‹ˆ๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ ํ”Œ๋ž˜๊ทธ.

์šฐ๋ฆฌ๋Š” ์†๋„๋ฅผ ๋†’์ธ๋‹ค ls

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ํ™•์ธ ์ค‘ ํ•˜๋‚˜๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ „ํ™”๋ฅผ ๊ฒ๋‹ˆ๋‹ค. lstat() ์‚ฌ๋ผ์ง€๊ณ  ์ด์ œ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

$ export LS_COLORS='ex=00:su=00:sg=00:ca=00:'
$ time strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 63.02    0.002865          36        80           getdents
  8.10    0.000368          12        30           mmap
  5.72    0.000260          14        18           mprotect
  3.72    0.000169          15        11           open
  2.79    0.000127          13        10           read
[...]
------ ----------- ----------- --------- --------- ----------------
100.00    0.004546                   221         6 total

real    0m0.337s
user    0m0.032s
sys     0m0.029s

0,3๊ฐœ์˜ ํŒŒ์ผ ๋ชฉ๋ก ์ค‘ 10์ดˆ, ํ•˜๋‚˜์˜ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

์…œ๋ก ์„ค์ •ํ•˜๊ธฐ

๊ธฐ๋ณธ ์„ค์ •์˜ ๊ฒฝ์šฐ 13์ดˆ์—์„œ ์•ฝ๊ฐ„์˜ ์กฐ์ •์„ ํ†ตํ•ด 0,3์ดˆ๊นŒ์ง€ LS_COLORS ๋ถ€์žฌ๋กœ ์ธํ•ด 40๋ฐฐ ๊ฐ€์†์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. setuid / setgid ๊ทธ๋ฆฌ๊ณ  ์ปฌ๋Ÿฌ ์‹คํ–‰ ํŒŒ์ผ. ๊ทธ๋ฆฌ ํฐ ์†์‹ค์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๊ฒƒ์€ ์ด์ œ ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด Sherlock์—์„œ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒ‰์ƒ์„ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด ๊ฐ„๋‹จํžˆ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ unset LS_COLORS

ํ•˜์ง€๋งŒ ํŒŒ์ผ์ด ๋งŽ์€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ๋Š” ์‹คํ–‰ ์ค‘์— ์ปคํ”ผ๋ฅผ ๋“์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ls.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€