I tenei ra e hiahia ana matou ki te korero mo etahi o nga whakahoutanga hou ki te punaha Sherlock [he roopu mahi nui tenei i te Whare Wananga o Stanford - tata. trans.], e tino tere ana te whakarārangi i nga konae ki roto i nga raarangi me te maha o nga whakaurunga.
Kaore i rite ki nga tuhinga tuuturu, he purongo a te kaikorero mo te mahi i ia wa i runga i a Sherlock kia pai ai te whakahaere mo o maatau kaiwhakamahi. Ko te tumanako ka whakaputahia etahi atu tuhinga penei a muri ake nei.
Ka roa te whakararangi i nga konae maha
I timata katoa me te patai tautoko hangarau mai i tetahi kaiwhakamahi. I korerotia e ia te raruraru e te mahi ls he meneti torutoru i roto i te whaiaronga me te neke atu i te 15 nga whakaurunga ki roto $SCRATCH [whaiaronga mo nga konae rangitahi - tata. ara].
He maha nga mano o nga konae kei roto i te raarangi kotahi ka pa te taumahatanga ki te punaha konae, kaore rawa i te tūtohutia. I mohio te kaiwhakamahi ki tenei me te whakaae kaore i te pai, engari i kii ko te rarangi he 1000 nga wa tere ake i runga i tana pona i a Sherlock. Ko te tikanga, he kino tenei ki a matou. Na ka titiro hohonu atu matou.
No te mea he pai te ahua
I titiro matou he aha te mahi ls ina whakarārangihia he whaiaronga, me te aha e roa ai te mahi. I te nuinga o nga tohatoha hou ls ma te taunoa ka rere hei ls --color=auto, no te mea e pai ana te katoa ki nga tae.
Engari he utu nga tae ataahua: mo ia kōnae ls me whiwhi korero mo te momo konae, ona whakaaetanga, haki, huanga whakaroa me etahi atu mea hei whiriwhiri i te tae e tika ana.
Ko tetahi otinga ngawari ki te raru ko te whakakore i te tae i roto i te ls katoa, engari whakaarohia te riri o nga kaiwhakamahi. I raro i nga ahuatanga ka tangohia e koe te putanga tae, ehara matou i te taniwha.
Na ka titiro hohonu atu matou. ls urunga tae ma te taurangi taiao LS_COLORS, kua whakaritea dircolors(1) i runga i te konae whirihoranga dir_colors(5). Ae, (a ki te kore koe e mohio mo nga konae (mahi), katahi ka dir_colors , Ahakoa nga mea katoa).
Kia ata titiro tatou
Hei whakatau ko tehea te kaupapa tae e paheke ai, i hanga e matou he taiao whakamatautau:
$ 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.699s12,7 hēkona mō ngā kōnae 10, kāore i tino pai.
Ma te ara, me whai haki
--color=always: ahakoa ka huri ia kils --color=auto, engarilska kitea ina karekau e hono ki te tauranga (hei tauira, ma te paipa, ma te anga whakamua ranei) ka monohia te tae ki te tautuhi kiauto. Tangata mohio.
Na he aha te mea ka roa? I titiro matou me 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
[...] Aue: 10 waea lstat(), 10 waea getxattr() (ka rahua katoa na te mea karekau o taatau taiao e whai huanga e rapuhia ana e ls), 10 nga waea capget().
He pono ka taea tenei te arotau.
Hunga kaha? Kao
Te whai i nga tohutohu , i ngana matou ki te whakakore i te arowhai huanga :
$ 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 Aue, tae atu ki te 8 hēkona te whakaterenga! I whakakorehia e matou nga waea utu nui katoa getxattr(), me nga wero capget() ngaro hoki, nui.
Engari kei reira tonu enei waea hoha lstat(), Ahakoa…
E hia nga puawai e hiahiatia ana e koe?
Nō reira, i āta titiro mātou LS_COLORS.
Tuatahi ka monohia e matou tenei taurangi:
$ 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
He aha!?! 13 hēkona tonu?
Ka puta mai i te wa e rereke ana te taiao LS_COLORS kotahi anake o ona huānga kaore i te tautuhia, kei te ngaro ranei <type>=color:, ka whakamahia e ia te papaaarangi i hangaia ma te taunoa me te whakamahi tonu i nga tae. Na, ki te hiahia koe ki te whakakore i te tae mo tetahi momo konae, me whakakore koe <type>=: ranei <type> 00 i roto i te kōnae DIR_COLORS.
I muri i te maha o nga whakamatautau me nga hapa, ka whakaitihia ta maatau rapu ki tenei:
EXEC 00
SETUID 00
SETGID 00
CAPABILITY 00e tuhia ana hei
LS_COLORS='ex=00:su=00:sg=00:ca=00:' Ko te tikanga: kaua e tae nga konae ma te huanga. , engari moka noa , kaua hoki na .
Ka tere tatou ls
A, ki te kore koe e mahi i tetahi o enei arowhai, waea mai lstat() kua ngaro, a inaianei he mea tino rereke:
$ 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.029s0,3 hēkona i runga i te rarangi o nga konae 10, he rekoata.
Te whakatu Sherlock
Mai i te 13 hēkona me ngā tautuhinga taunoa ki te 0,3 hēkona me ngā whakatikatika iti LS_COLORS ko te tikanga he 40-whakatere whakatere na te korenga setuid / setgid me nga konae kawe tae. Ehara i te mea he mate nui.
Ae ra, kua whirihorahia tenei ki Sherlock mo ia kaiwhakamahi.
Engari ki te hiahia koe ki te whakahoki i te tae, ka taea noa e koe te hoki ki nga tautuhinga taunoa:
$ unset LS_COLORS Engari i runga i nga raarangi me te maha o nga konae, kia mohio koe ki te mahi kawhe i te wa e rere ana ls.
Source: will.com
