เดเดจเตเดจเต เดจเดฎเตเดฎเตพ เดทเตเตผเดฒเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดเดฟเดฒ เด เดชเตเดกเตเดฑเตเดฑเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต [เดเดคเต เดธเตเดฑเตเดฑเดพเตปเดซเตเตผเดกเต เดฏเตเดฃเดฟเดตเตเดดเตเดธเดฟเดฑเตเดฑเดฟเดฏเดฟเดฒเต เดเดฏเตผเดจเตเดจ เดชเตเดฐเดเดเดจเดฎเตเดณเตเดณ เดเตเดฒเดธเตเดฑเตเดฑเดฑเดพเดฃเต - เดเดเดฆเตเดถเด. trans.], เดเดคเต เดงเดพเดฐเดพเดณเด เดเตปเดเตเดฐเดฟเดเดณเตเดณเตเดณ เดกเดฏเดฑเดเตโเดเดฑเดฟเดเดณเดฟเดฒเต เดซเดฏเดฒเตเดเตพ เดฒเดฟเดธเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดฃเตเดฏเดฎเดพเดฏเดฟ เดตเตเดเดคเตเดคเดฟเดฒเดพเดเตเดเตเดจเตเดจเต.
เดธเดพเดงเดพเดฐเดฃ เดฒเตเดเดจเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ, เดทเตเตผเดฒเตเดเตเดเต เดเดเตเดเดณเตเดเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดเดจเต เดชเดคเดฟเดตเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดเตปเดธเตเดกเตผ เดฑเดฟเดชเตเดชเตเตผเดเตเดเดพเดฃเดฟเดคเต. เดญเดพเดตเดฟเดฏเดฟเตฝ เดเดคเตเดชเตเดฒเตเดณเตเดณ เดเตเดเตเดคเตฝ เดฒเตเดเดจเดเตเดเตพ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เดจเดฟเดฐเดตเดงเดฟ เดซเดฏเดฒเตเดเตพ เดฒเดฟเดธเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดธเดฎเดฏเดฎเตเดเตเดเตเดเตเด
เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเดพเดเตเดเตเดคเดฟเด เดชเดฟเดจเตเดคเตเดฃเดพ เดเตเดฆเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดเดคเตเดฒเตเดฒเดพเด เดเดฐเดเดญเดฟเดเตเดเดคเต. เดตเดงเดถเดฟเดเตเดท เดจเดเดชเตเดชเดพเดเตเดเดฟเดฏ เดชเตเดฐเดถเตโเดจเด เด
เดฆเตเดฆเตเดนเด เด
เดฑเดฟเดฏเดฟเดเตเดเต ls
15-เดคเตเดคเดฟเดฒเดงเดฟเดเด เดเตปเดเตเดฐเดฟเดเดณเตเดณเตเดณ เดเดฐเต เดกเดฏเดฑเดเตโเดเดฑเดฟเดฏเดฟเตฝ เดเตเดฑเดเตเดเต เดฎเดฟเดจเดฟเดฑเตเดฑเต เดเดเตเดเตเดเตเด $SCRATCH
[เดคเดพเดคเตเดเดพเดฒเดฟเด เดซเดฏเดฒเตเดเตพเดเตเดเตเดณเตเดณ เดกเดฏเดฑเดเตเดเดฑเดฟ - เดเดเดฆเตเดถเด. เดชเดพเดค].
เดเดฐเต เดกเดฏเดฑเดเตโเดเดฑเดฟเดฏเดฟเดฒเต เดเดฏเดฟเดฐเดเตเดเดฃเดเตเดเดฟเดจเต เดซเดฏเดฒเตเดเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เดเดฐเต เดญเดพเดฐเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดชเดฏเตเดเตเดคเดพเดตเต เดเดคเต เด
เดฑเดฟเดฏเตเดเดฏเตเด เดเดคเต เดจเดฒเตเดฒเดคเดฒเตเดฒเตเดจเตเดจเต เดธเดฎเตเดฎเดคเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต, เดเดจเตเดจเดพเตฝ เดคเดจเตเดฑเต เดฒเดพเดชเตโเดเตเดชเตเดชเดฟเตฝ เดทเตเตผเดฒเตเดเตเดเดฟเดจเตเดเตเดเดพเตพ 1000 เดฎเดเดเตเดเต เดตเตเดเดคเดฏเตเดณเตเดณ เดฒเดฟเดธเตโเดฑเตเดฑเดฟเดเดเต เดเดฃเตเดเตเดจเตเดจเต เดชเดฐเดพเดฎเตผเดถเดฟเดเตเดเต. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดคเต เดเดเตเดเดณเต เดตเตเดฆเดจเดฟเดชเตเดชเดฟเดเตเดเต. เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดเตเดเตเดคเตฝ เดเดดเดคเตเดคเดฟเตฝ เดจเตเดเตเดเดฟ.
เดเดพเดฐเดฃเด ls เดจเดฒเตเดฒเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต.
เดเดคเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเดจเตเดจเต เดเดเตเดเตพ เดจเตเดเตเดเดฟ ls
เดเดฐเต เดกเดฏเดฑเดเตโเดเดฑเดฟ เดฒเดฟเดธเตโเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เด เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเตเดเต เดเดคเตเดฐเดฏเดงเดฟเดเด เดธเดฎเดฏเดฎเตเดเตเดเตเดเตเดจเตเดจเดคเตเดจเตเดคเตเดเตเดฃเตเดเต. เดฎเดฟเดเตเด เดเดงเตเดจเดฟเด เดตเดฟเดคเดฐเดฃเดเตเดเดณเดฟเดฒเตเด ls
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต ls --color=auto
, เดเดพเดฐเดฃเด เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เดจเดฟเดฑเดเตเดเตพ เดเดทเตเดเดฎเดพเดฃเต.
เดเดจเตเดจเดพเตฝ เดฎเดจเตเดนเดฐเดฎเดพเดฏ เดจเดฟเดฑเดเตเดเตพ เดเดฐเต เดตเดฟเดฒเดฏเดฟเตฝ เดตเดฐเตเดจเตเดจเต: เดเดฐเต เดซเดฏเดฒเดฟเดจเตเด ls
เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดจเดฟเดฑเด เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดซเดฏเตฝ เดคเดฐเด, เด
เดคเดฟเดจเตเดฑเต เด
เดจเตเดฎเดคเดฟเดเตพ, เดซเตเดฒเดพเดเตเดเตพ, เดตเดฟเดชเตเดฒเตเดเตเดค เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเตเดเตพ เดเดจเตเดจเดฟเดตเดฏเต เดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดจเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดชเตเดฐเดถเตโเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเด ls-เตฝ เดจเดฟเดฑเด เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดฐเตเดทเด เดธเดเตเดเตฝเดชเตเดชเดฟเดเตเดเตเด. เดเดฐเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเดฒเตเด เดจเดฟเดเตเดเตพ เดเดณเตผ เดเดเตเดเตเดชเตเดเตเดเต เดเดเตเดคเตเดคเตเดเดณเดฏเดฐเตเดคเต, เดเดเตเดเตพ เดฐเดพเดเตเดทเดธเดจเตเดฎเดพเดฐเดฒเตเดฒ.
เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดเตเดเตเดคเตฝ เดเดดเดคเตเดคเดฟเตฝ เดจเตเดเตเดเดฟ. ls
เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดตเดดเดฟเดฏเตเดณเตเดณ เดจเดฟเดฑเดเตเดเตพ LS_COLORS
, เดเดคเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต dircolors(1)
เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเดจเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ dir_colors(5)
. เด
เดคเต,
เดจเดฎเตเดเตเดเต เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเตเดเตเดเดพเด
เดเดคเต เดตเตผเดฃเตเดฃ เดธเตเดเตเดฎเดพเดฃเต เดฎเดพเดจเตเดฆเตเดฏเดคเตเดคเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดเตเดจเตเดจเดคเตเดจเตเดจเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเดพเตป, เดเดเตเดเตพ เดเดฐเต เดชเดฐเตเดเตเดทเดฃเดพเดคเตเดฎเด เด เดจเตเดคเดฐเตเดเตเดทเด เดธเตเดทเตเดเดฟเดเตเดเต:
$ 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()
(เดจเดฎเตเดฎเตเดเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดเตพ เด
เดจเตเดตเตเดทเดฟเดเตเดเตเดจเตเดจ เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเตเดเตพ เดเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดเดฒเตเดฒเดพเด เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเดจเตเดจเต), 10 เดเตเดณเตเดเตพ capget()
.
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดเดคเต เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดเดดเดฟเดตเตเดเดณเตเดเต เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเต? เดเดฒเตเดฒ
เดเดชเดฆเตเดถเด เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต
$ 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:'
เดเดคเดฟเดจเตผเดคเตเดฅเด: เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเต เดชเตเดฐเดเดพเดฐเด เดซเดฏเดฒเตเดเตพ เดเดณเตผ เดเตเดฏเตเดฏเดฐเตเดคเต.
, เดตเดดเดฟเดฏเตเดฎเดฟเดฒเตเดฒ
เดเดเตเดเตพ เดตเตเดเดค เดเตเดเตเดเตเดจเตเดจเต 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
เดจเดฟเดฑเดฎเตเดณเตเดณ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเดฒเตเดเดณเตเด. เด
เดคเตเดฐ เดตเดฒเดฟเดฏ เดจเดทเตเดเดฎเดฒเตเดฒ.
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดคเต เดเดชเตเดชเตเตพ เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเด เดทเตเตผเดฒเตเดเตเดเดฟเตฝ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดณเดฑเดฟเดเดเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเดพเด:
$ unset LS_COLORS
เดเดจเตเดจเดพเตฝ เดงเดพเดฐเดพเดณเด เดซเดฏเดฒเตเดเดณเตเดณเตเดณ เดกเดฏเดฑเดเตเดเดฑเดฟเดเดณเดฟเตฝ, เด
เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเตเดซเดฟ เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเดคเต เดเดฑเดชเตเดชเดพเดเตเดเตเด ls
.
เด
เดตเดฒเดเดฌเด: www.habr.com