āĻāĻ āĻāĻŽāĻ°āĻž āĻļāĻžāĻ°ā§āĻ˛āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ āĻāĻŋāĻā§ āĻāĻĒāĻĄā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ [āĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻĢā§āĻ°ā§āĻĄ āĻāĻāĻ¨āĻŋāĻāĻžāĻ°ā§āĻ¸āĻŋāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻāĻā§āĻ-āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° - āĻĒā§āĻ°āĻžāĻ¯āĻŧāĨ¤ 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()
(āĻ¯āĻž āĻ¸āĻŦāĻ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧ āĻāĻžāĻ°āĻŖ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻŽāĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¨ā§āĻ āĻ¯āĻž ls āĻā§āĻāĻāĻā§), 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