рдЬрдм рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ 40 рдмрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИ

рдЖрдЬ рд╣рдо рд╢рд░реНрд▓рдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХреБрдЫ рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ [рдпрд╣ рд╕реНрдЯреИрдирдлреЛрд░реНрдб рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ - рд▓рдЧрднрдЧред рдкреНрд░рддрд┐ред], рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдирд┐рдпрдорд┐рдд рд▓реЗрдЦреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдВрднрд╡ рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрд▓рдХ рдкрд░ рдирд┐рдпрдорд┐рдд рдХрд╛рдо рдХреИрд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдПрдХ рдЕрдВрджрд░реВрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЕрдзрд┐рдХ рд╣реИред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдФрд░ рдЕрдзрд┐рдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ


рдпрд╣ рд╕рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреА рдХрд┐ рд░рдирд┐рдВрдЧ ls рдиреЗ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ $SCRATCH рдореЗрдВ 15,000 рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде [рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛] рд▓рдЧрднрдЧ рдХрдИ рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рд▓рд┐рдпрд╛ред рдЯреНрд░рд╛рдВрд╕ред]ред

рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдлрд╛рдЗрд▓реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓реЗрдВ рдЦрдбрд╝реА рдХрд░рддреА рд╣реИрдВ рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдкрддрд╛ рдерд╛ рдФрд░ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдЙрд╕рдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╢рд░реНрд▓рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 1000 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдорд╛рд░рд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦрд╛ред

рдХреНрдпреЛрдВрдХрд┐ ls рджреЗрдЦрдиреЗ рдореЗрдВ рд╕реБрдВрджрд░ рд▓рдЧрддрд╛ рд╣реИ


рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рд╡рд┐рддрд░рдгреЛрдВ рдкрд░, ls рдЪреВрдХ рдХреЛ ls --color=auto , рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЛ рд░рдВрдЧ рдкрд╕рдВрдж рд╣реИред

рд▓реЗрдХрд┐рди рд╕реБрдВрджрд░ рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, ls рдХреЛ рдЙрдЪрд┐рдд рд░рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░, рдЗрд╕рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди, рдЭрдВрдбреЗ, рдЙрдиреНрдирдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдПрд▓рдПрд╕ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рдВрдЧ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЖрдХреНрд░реЛрд╢ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рд░рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреЗ, рд╣рдо рд░рд╛рдХреНрд╖рд╕ рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦрд╛ред ls LS_COLORS рдкрд░реНрдпрд╛рд╡рд░рдг LS_COLORS рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ LS_COLORS рд╣реИ, рдЬреЛ dircolors(1) dir_colors(5) рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдВ, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдЬреЛ рддрдм ls рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рджрд░рд╡рд╛рдЬреЗ (рдбреВ) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рддреЛ 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 

10,000 рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП 12.7 рд╕реЗрдХрдВрдб, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВред
рд╡реИрд╕реЗ, рд╣рдореЗрдВ рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ --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 [...] 

Wow: 10,000 рдХреЙрд▓реНрд╕ рдХреЛ lstat() , 10,000 рдХреЙрд▓реНрд╕ to getxattr() (рдЬреЛ рд╣рд░ рдХреЛрдИ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ ls capget() ), 10,000 рдХреЙрд▓ рдЯреВ capget() ред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЧреБрдг Nea


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 рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреАред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╕ рдЗрд╕ рдЪрд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛:

  $ рдЧреВрдВрдЬ $ 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: рдпрд╛ = 40; 31; 01: рд╕реБ = 37; 41: рдПрд╕рдЬреА = 30; 43: рд╕реАрдП = рдЯреНрд╡ = 30; 42: рдУрдЙ = 34; 42: рд╕реЗрдВрдЯ = 37; 44: рдкреВрд░реНрд╡ = 01; 32; : *ред tar = 01; 31: *ред tgz = 01; 31: *ред рдЖрд░реНрдХ = 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: *ред рдЬрд╝рд┐рдк = 01; 31: *ред Z = 01; 31: *ред Z = 01; 31: *ред Dz = 01; 31: *ред Gz = 01; 31: *ред Lrz = 01 ; 31: *ред Lz = 01; 31: *ред Lzo = 01; 31: *ред Xz = 31; *: Bz2 = 01; 31: *ред Bz = 01; 31: *ред Tbz = 01; 31 : *ред tbz2 = 01; 31: *ред tz = 01; 31: *ред рдмрд╣рд╕ = 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: *ред cp; = 01; 31: *ред 7z = 01: 31: *ред Rz = 01; 31: *ред рдЯреИрдХреНрд╕реА = 01; 31: *ред Jpg = 01; 35: *ред Jpeg = 01; 35: *ред Gif = 01ред ; 35: *ред Bmp = 01; 35: *ред Pbm = 01; 35: *ред Pgm = 01; 35: *ред рдкреАрдкреАрдПрдо = 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: *ред рдПрдордкреАрдИрдЬреА = 01; 35: *ред m2v = 01; 35: *ред mk = 01; 35: *ред рд╡реЗрдмрдо = 01; 35: *ред рдСрдЧреНрдо = 01; 35: *ред M44 = 01; 35: *ред M4v = 01; 35: *ред Mp4v = 01; 35: *ред Vob = 01 ; 35: *ред Qt = 01; 35: *ред рдиреБрд╡ = 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 = 35; 35: *ред Xcf = 01; 35: *ред Xwd = 01; 35: *ред Yuv = 01; 35: *ред Cgm = 01; 35: *ред Emf = 01; 35: *ред Axv = 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;
 $ рдкрд░реЗрд╢рд╛рди LS_COLORS
 $ рдЧреВрдВрдЬ $ LS_COLORS

 $ рд╕рдордп ls - рд░рдВрдЧ = рд╣рдореЗрд╢рд╛ $ SCRATCH / NOT |  wc -l
 10000

 рд╡рд╛рд╕реНрддрд╡рд┐рдХ 0m13.037s
 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 0m0.077s
 sys 0m1.092s 

рдХреНрдпрд╛!?! рдЕрднреА рднреА 13 рд╕реЗрдХрдВрдб?

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЬрдм LS_COLORS рдкрд░реНрдпрд╛рд╡рд░рдг LS_COLORS рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдПрдХ рддрддреНрд╡ <type>=color: рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд░рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ DIR_COLORS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ <type>=: рдпрд╛ <type> 00 рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдмрд╣реБрдд рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЕрдкрдиреА рдЦреЛрдЬ рдХреЛ рдЗрд╕ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛:

 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 

10,000 рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ 0.3 рд╕реЗрдХрдВрдб, рдПрдХ рд░рд┐рдХреЙрд░реНрдбред

рд╢рд░реНрд▓рдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


13 рд╕реЗрдХрдВрдб рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде 0.3 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде LS_COLORS рдорддрд▓рдм рд╣реИ рдХрд┐ setgid / setgid рдФрд░ рд░рдВрдЧреАрди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг 40-рдЧреБрдирд╛ рддреНрд╡рд░рдгред рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВред

рдмреЗрд╢рдХ, рдЕрдм рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╢рд░реНрд▓рдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд░рдВрдЧ рднрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 $ unset LS_COLORS 

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдкрд░, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ ls рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХреЙрдлреА рдмрдирд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi450806/


All Articles