рдЖрдЬ рд╣рдо рд╢рд░реНрд▓рдХ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ [рдпрд╣ рд╕реНрдЯреИрдирдлреЛрд░реНрдб рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ - рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕.], рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рд▓рд╛рддрд╛ рд╣реИред
рдирд┐рдпрдорд┐рдд рд▓реЗрдЦреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдПрдХ рдЕрдВрджрд░реВрдиреА рд╕реВрддреНрд░ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдХрд┐ рд╣рдо рд╢рд░реНрд▓рдХ рдкрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдФрд░ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред
рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ
рдпрд╣ рд╕рдм рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╢реНрди рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреА рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди ls
15 рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ $SCRATCH
[рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ - рд▓рдЧрднрдЧред рдЧрд▓реА]ред
рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмреЛрдЭ рдмрдирддреА рд╣реИрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдкрддрд╛ рдерд╛ рдФрд░ рдЙрд╕рдиреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдЙрд╕рдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╢рд░реНрд▓рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1000 рдЧреБрдирд╛ рддреЗрдЬ рдереАред рдирд┐рдГрд╕рдВрджреЗрд╣, рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рджреБрдЦ рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦрд╛ред
рдХреНрдпреЛрдВрдХрд┐ ls рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ
рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ ls
рдХрд┐рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╕рдордп, рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рд╡рд┐рддрд░рдгреЛрдВ рдкрд░ ls
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ ls --color=auto
, рдХреНрдпреЛрдВрдХрд┐ рд░рдВрдЧ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдкрд╕рдВрдж рд╣реЛрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╕реБрдВрджрд░ рд░рдВрдЧреЛрдВ рдХреА рдХреАрдордд рдЪреБрдХрд╛рдиреА рдкрдбрд╝рддреА рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП 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