рдЖрдЬ рд╣рд╛рдореА рд╢реЗрд░реНрд▓рдХ рдкреНрд░рдгрд╛рд▓реАрдХрд╛ рдХреЗрд╣реА рдирдпрд╛рдБ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ [рдпреЛ рд╕реНрдЯреНрдпрд╛рдирдлреЛрд░реНрдб рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпрдорд╛ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХреНрд▓рд╕реНрдЯрд░ рд╣реЛ - рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдиреНрд╕ред], рдЬрд╕рд▓реЗ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВрдХреЛ рд╕рд╛рде рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВрдорд╛ рдлрд╛рдИрд▓рд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЧрддрд┐ рджрд┐рдиреНрдЫред
рдирд┐рдпрдорд┐рдд рд▓реЗрдЦрд╣рд░реВ рднрдиреНрджрд╛ рдлрд░рдХ, рдпреЛ рд╣рд╛рдореНрд░рд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдпрд╕рд▓рд╛рдИ рдЙрддреНрдХреГрд╖реНрдЯ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдХрд╕рд░реА рдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ Sherlock рдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреМрдВ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рднрд┐рддреНрд░реА рд░рд┐рдкреЛрд░реНрдЯ рд╣реЛред рдЖрдЧрд╛рдореА рджрд┐рдирдорд╛ рдкрдирд┐ рдпрд╕реНрддреИ рд▓реЗрдЦрд╣рд░реБ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ рдЖрд╢рд╛ рд░рд╛рдЦреЗрдХрд╛ рдЫреМрдВ ред
рдзреЗрд░реИ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрди рд╕рдордп рд▓рд╛рдЧреНрдЫ
рдпреЛ рд╕рдмреИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдмрд╛рдЯ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╕рдорд░реНрдерди рдкреНрд░рд╢реНрдирдХреЛ рд╕рд╛рде рд╕реБрд░реБ рднрдпреЛред рдЙрдирд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рд╕рдорд╕реНрдпрд╛ рднрдПрдХреЛ рдмрддрд╛рдП 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
[...]
рд╡рд╛рд╣: резреж,режрежреж рдХрд▓рд╣рд░реВ 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
рдХреЗ!?! рдЕрдЭреИ резрей рд╕реЗрдХреЗрдиреНрдб?
рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ рдЬрдм рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ 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
резреж,режрежреж рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ реж.рей рд╕реЗрдХреЗрдиреНрдб, рд░реЗрдХрд░реНрдбред
рд╢реЗрд░реНрд▓рдХ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрджреИ
13 рд╕реЗрдХреЗрдиреНрдб рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ 0,3 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд╕рд╛рдиреЛ рдЯреНрд╡реАрдХрд┐рдЩрдХреЛ рд╕рд╛рде LS_COLORS
рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдХрд╛рд░рдгрд▓реЗ 40-рдЧреБрдгрд╛ рдкреНрд░рд╡реЗрдЧрдХреЛ рдЕрд░реНрде setuid
/ setgid
рд░ рд░рдВрдЧреАрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВред рддреНрдпрддрд┐ рдареВрд▓реЛ рдШрд╛рдЯрд╛ рд╣реЛрдЗрди ред
рдЕрд╡рд╢реНрдп рдкрдирд┐, рдпреЛ рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ Sherlock рдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
рддрд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд░рдВрдЧ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдХреЗрд╡рд▓ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдлрд░реНрдХрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
$ unset LS_COLORS
рддрд░ рддреНрдпрд╕рдкрдЫрд┐ рдзреЗрд░реИ рдлрд╛рдЗрд▓рд╣рд░реВ рднрдПрдХрд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВрдорд╛, рдпреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рдХрдлреА рдкрдХрд╛рдЙрди рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрд╣реЛрд╕реН ls
.
рд╕реНрд░реЛрдд: www.habr.com