Slide 1

Slide 1 text

1FSMͰ࡞Δ
 UJOZTIFMM )PLLBJEPQN

Slide 2

Slide 2 text

!DPEFIFY !$PEF)FY w .FSDBSJ *OD w %FWFMPQJOHNJDSPTFSWJDFT w 0LJOBXBQN w *MJLF1FSM94(P w IUUQTDPEFIFYIBUFCMPKQ

Slide 3

Slide 3 text

γΣϧͬͯ஌ͬͯ·͔͢

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

/P

Slide 6

Slide 6 text

$ pwd


Slide 7

Slide 7 text

$ pwd
 /Users/codehex

Slide 8

Slide 8 text

#BTI ;TI pTI

Slide 9

Slide 9 text

γΣϧʹ͸
 ༷ʑͳػೳ͕͋Γ·͢

Slide 10

Slide 10 text

ྫ͑͹

Slide 11

Slide 11 text

ύΠϓ

Slide 12

Slide 12 text

$ pwd | cat -n


Slide 13

Slide 13 text

$ pwd | cat -n
 1 /Users/codehex

Slide 14

Slide 14 text

Ξϯυ

Slide 15

Slide 15 text

$ pwd && echo hello


Slide 16

Slide 16 text

$ pwd && echo hello
 /Users/codehex
 hello

Slide 17

Slide 17 text

͜ΕΒͷ
 ࣮૷Λ஌͍ͬͯ·͔͢ʁ

Slide 18

Slide 18 text

ࠓ೔࿩͢಺༰

Slide 19

Slide 19 text

ࠓ೔࿩͢಺༰ w ࠷௿ݶͷγΣϧͷఆٛ w ߏจղੳ w ίϚϯυͷ࣮ߦ

Slide 20

Slide 20 text

ࠓ೔࿩͢಺༰ w ࠷௿ݶͷγΣϧͷఆٛ w ߏจղੳ w ίϚϯυͷ࣮ߦ

Slide 21

Slide 21 text

࠷௿ݶͷγΣϧͷఆٛ UJOZTIFMMͷಈ࡞Λఆٛ͢Δ

Slide 22

Slide 22 text

lUJOZTIFMMzNFBOT
 ΊͬͪΌখ͍͞γΣϧ

Slide 23

Slide 23 text

Ͳ͏͍͏ಈ࡞Λ͢Δ͔

Slide 24

Slide 24 text

Ͳ͏͍͏ಈ࡞Λ͢Δ͔ w ୯ҰίϚϯυͷ࣮ߦ $ ls w ύΠϓͷ࣮ߦ $ ls | cat w ΞϯυʹΑΔෳ਺࣮ߦ $ ls && cat w αϒγΣϧ΍όοΫάϥϯυ࣮ߦ͸ࠓճؚΊ·ͤΜ

Slide 25

Slide 25 text

ࠓ೔࿩͢಺༰ w ࠷௿ݶͷγΣϧͷఆٛ w ߏจղੳ w ίϚϯυͷ࣮ߦ

Slide 26

Slide 26 text

ߏจղੳ ެจఆٛͱߏจղੳثͷ࡞੒

Slide 27

Slide 27 text

$ cat | cat -n && ls

Slide 28

Slide 28 text

$ cat | cat -n && ls

Slide 29

Slide 29 text

$ cat | cat -n && ls

Slide 30

Slide 30 text

$ cat | cat -n && ls

Slide 31

Slide 31 text

$ cat | cat -n && ls

Slide 32

Slide 32 text

$ cat | cat -n && ls ࠨ͔Βӈʹղऍ͠·͢

Slide 33

Slide 33 text

ߏจͷఆٛ

Slide 34

Slide 34 text

ӈʹ࿈͍݁ͯ͘͠Α͏ʹ
 ఆٛ෇͚Λߦ͏

Slide 35

Slide 35 text

ߏจఆٛ • CMD: [a-zA-Z_-][0-9a-zA-Z_-]* • ARG: [0-9a-zA-Z_-]* | [0-9a-zA-Z_-]* • SHLL: '&&' | • PIPE: '|' | • AND: '&&' |

Slide 36

Slide 36 text

ߏจղੳثͷ࡞੒

Slide 37

Slide 37 text

ߏจղੳثʹඞཁͳཁૉ

Slide 38

Slide 38 text

ߏจղੳثʹඞཁͳཁૉ w จࣈྻͷεΩϟφʔ w ಡΈࠐΈҐஔ΍ಡΈऔͬͨจࣈྻΛอ࣋͢Δ w จࣈྻͷϚονϯά w εΩϟφʔͰಘͨจࣈྻ͕ߏจఆٛʹϚονͨ͠ ͔Ͳ͏͔൑ผ͢Δ w Ϛονͨ͠จࣈྻʹҙຯΛ΋ͨͤΔ τʔΫϯԽ w ߏจ໦ͷੜ੒

Slide 39

Slide 39 text

1FSMͰ͸ʁ

Slide 40

Slide 40 text

ਖ਼نදݱ

Slide 41

Slide 41 text

IUUQTQFSMEPDQFSMPSHQFSMPQIUNMD(@BTTFSUJPO@ l"VTFGVMJEJPNGPSAlexAMJLF
 TDBOOFSTJTA/\G…/gcAʜz

Slide 42

Slide 42 text

/\G…/gc

Slide 43

Slide 43 text

/\G…/gc w A/cANPEJpFSͰ͸ݱࡏϚον͍ͯ͠ΔҐஔΛ
 อ࣋͢Δ͜ͱ͕Ͱ͖Δɻ • pos()ͰҐஔΛऔΓग़͢͜ͱ͕Մೳ • \GͰલճAm//gAͰϚονͨ͠ҐஔΛอ࣋͢Δ͜ͱ ͕Մೳ

Slide 44

Slide 44 text

εΩϟφʔͱϚονϯάͷ
 ໾ׂΛ΋ͭ͜ͱ͕Ͱ͖Δ ?P? W

Slide 45

Slide 45 text

͜͜Ͱྑ͍৘ใ

Slide 46

Slide 46 text

ΊͬͪΌࢀߟʹͳΔϖʔδ w IUUQTHJUIVCDPNLBSVQBOFSVSBQ +40/CMPCNBTUFSMJC+40/1BSTFSQN w IUUQTHJUIVCDPNLBSVQBOFSVSB50.- 1BSTFSCMPCNBTUFSMJC50.-1BSTFSQN

Slide 47

Slide 47 text

࣮૷༷ࢠ

Slide 48

Slide 48 text

ߏจఆٛ • CMD: [a-zA-Z_-][0-9a-zA-Z_-]* • ARG: [0-9a-zA-Z_-]* | [0-9a-zA-Z_-]* • SHLL: '&&' | • PIPE: '|' | • AND: '&&' |

Slide 49

Slide 49 text

$.%

Slide 50

Slide 50 text

ߏจఆٛ • CMD: [a-zA-Z_-][0-9a-zA-Z_-]* • ARG: [0-9a-zA-Z_-]* | [0-9a-zA-Z_-]* • SHLL: '&&' | • PIPE: '|' | • AND: '&&' |

Slide 51

Slide 51 text

4)--

Slide 52

Slide 52 text

ߏจఆٛ • CMD: [a-zA-Z_-][0-9a-zA-Z_-]* • ARG: [0-9a-zA-Z_-]* | [0-9a-zA-Z_-]* • SHLL: '&&' | • PIPE: '|' | • AND: '&&' |

Slide 53

Slide 53 text

1*1&

Slide 54

Slide 54 text

ߏจఆٛ • CMD: [a-zA-Z_-][0-9a-zA-Z_-]* • ARG: [0-9a-zA-Z_-]* | [0-9a-zA-Z_-]* • SHLL: '&&' | • PIPE: '|' | • AND: '&&' |

Slide 55

Slide 55 text

"/%

Slide 56

Slide 56 text

໦ΛQSJOU༷ͨ͠ࢠ $ cat | cat -n && ls

Slide 57

Slide 57 text

"/% 1*1& DBU DBU MT $ cat | cat -n && ls

Slide 58

Slide 58 text

ͪͳΈʹ

Slide 59

Slide 59 text

$ cat | cat -n && ls

Slide 60

Slide 60 text

$ cat | cat -n && ls ࠨ͔Βӈʹղऍ͠·͢

Slide 61

Slide 61 text

ͳͷͰ
 ໦ΛḷΔͱ͖͸

Slide 62

Slide 62 text

"/% 1*1& DBU DBU MT $ cat | cat -n && ls ᶃ

Slide 63

Slide 63 text

"/% 1*1& DBU DBU MT $ cat | cat -n && ls ᶃ ᶄ ᶅ

Slide 64

Slide 64 text

"/% 1*1& DBU DBU MT $ cat | cat -n && ls ᶃ ᶄ ᶅ ᶆ ᶇ

Slide 65

Slide 65 text

͜ΕΛجʹ
 ࣮ߦ͢ΔػೳΛ࡞੒͠·͢

Slide 66

Slide 66 text

ࠓ೔࿩͢಺༰ w ࠷௿ݶͷγΣϧͷఆٛ w ߏจղੳ w ίϚϯυͷ࣮ߦ

Slide 67

Slide 67 text

ίϚϯυͷ࣮ߦ ߏจ໦Λجʹ࣮ߦ͢Δ

Slide 68

Slide 68 text

࣮૷ͷલʹ

Slide 69

Slide 69 text

ඪ४ετϦʔϜʹ͍ͭͯ

Slide 70

Slide 70 text

w 45%*/ 4UBOEBSE*OQVU ඪ४ೖྗ w 45%065 4UBOEBSE0VUQVU ඪ४ग़ྗ w 45%&33 4UBOEBSE&SSPS ඪ४Τϥʔग़ྗ ඪ४ετϦʔϜ

Slide 71

Slide 71 text

͜ΕΒ͸࣮࣭
 ϑΝΠϧͱͯ͠ѻΘΕ·͢

Slide 72

Slide 72 text

୯ҰίϚϯυͷ
 ετϦʔϜͷϑϩʔ

Slide 73

Slide 73 text

$ cat

Slide 74

Slide 74 text

$ cat cat 45%*/

Slide 75

Slide 75 text

$ cat cat 45%*/ 45%065 45%&33

Slide 76

Slide 76 text

$ cat GPSLΛ࢖͏ͱTIΛհ͞ͳ͍Ͱ࣮ߦՄೳ

Slide 77

Slide 77 text

ύΠϓͷϑϩʔ

Slide 78

Slide 78 text

$ fortune | cowsay

Slide 79

Slide 79 text

$ fortune | cowsay 45%*/ PS/PU ᶃ

Slide 80

Slide 80 text

$ fortune | cowsay 45%*/ PS/PU 45%065 ᶃ ᶄ

Slide 81

Slide 81 text

$ fortune | cowsay 45%*/ PS/PU 45%065 45%*/ ᶃ ᶄ ᶅ

Slide 82

Slide 82 text

$ fortune | cowsay 45%*/ PS/PU 45%065 45%*/ 45%065 ᶃ ᶄ ᶅ ᶆ

Slide 83

Slide 83 text

͜ΕΒͷίϚϯυ͸
 ผϓϩηεͰಈ͍͍ͯ·͢

Slide 84

Slide 84 text

$ ps a | cat 1*%

Slide 85

Slide 85 text

ύΠϓͷ࣮૷

Slide 86

Slide 86 text

pipe my ($r, $w);

Slide 87

Slide 87 text

w $r͕3FBEFS $w͕8SJUFS w 8SJUFSʹσʔλ͕ॻ͖ࠐ·Εͨͱ͖
 3FBEFSͰͦͷσʔλΛಡΈऔΔ͜ͱ͕Մೳ pipe my ($r, $w);

Slide 88

Slide 88 text

֤ϓϩηεؒͷετϦʔϜΛ
 pipe()Ͱܨ͛Δ͜ͱͰ࣮૷Մೳ

Slide 89

Slide 89 text

ͦͷ࣌ͷϑϩʔ

Slide 90

Slide 90 text

$ fortune | cowsay 45%*/ PS/PU 45%065 ᶃ ᶄ

Slide 91

Slide 91 text

$ fortune | cowsay 45%*/ PS/PU 45%065 ᶃ ᶄ ᶅ ᶆ 8SJUFS 3FBEFS

Slide 92

Slide 92 text

$ fortune | cowsay 45%*/ PS/PU 45%065 45%*/ 45%065 ᶃ ᶄ ᶅ ᶆ 8SJUFS 3FBEFS ᶇ ᶈ ᶉ

Slide 93

Slide 93 text

ͳͷͰ࣮࣭
 ͜ͷΑ͏ʹߟ͑ΒΕΔ

Slide 94

Slide 94 text

$ fortune | cowsay 45%*/ PS/PU 8SJUFS 3FBEFS 45%065 ᶃ ᶄ ᶅ ᶆ

Slide 95

Slide 95 text

No content

Slide 96

Slide 96 text

w ίϚϯυOPEFͰ͔ͭ਌OPEF͕ύΠϓͰ͸ͳ͍
 ৔߹͸ଈίϚϯυΛ࣮ߦ w ͦΕҎ֎͸ίϚϯυΛอ࣋͢Δ w ύΠϓOPEF͔ͭ਌͕ύΠϓOPEFͰ͸ͳ͍৔߹
 อ࣋͠ଓ͚ͨίϚϯυΛ࣮ߦ

Slide 97

Slide 97 text

Ξϯυͷϑϩʔ

Slide 98

Slide 98 text

$ echo hello && echo world

Slide 99

Slide 99 text

$ echo hello && echo world ᶃ

Slide 100

Slide 100 text

$ echo hello && echo world ᶃ ᶄ

Slide 101

Slide 101 text

w ΞϯυOPEFʹདྷΔ·ͰʹࠨͷOPEFΛ
 શ࣮ͯߦ͢Δ w ੒ޭͨ͠৔߹ӈͷOPEFΛࠨͷOPEFͱಉ͡Α͏ ʹ࣮ߦ͢Δ

Slide 102

Slide 102 text

͜Ε͚ͩͰ
 UJOZTIFMM͕׬੒͠·͢ʂ

Slide 103

Slide 103 text

·ͱΊ

Slide 104

Slide 104 text

·ͱΊ w ӈʹ࿈͍݁ͯ͘͠Α͏ʹߏจఆٛͨ͠ w γΣϧͷύΠϓɺΞϯυػೳΛཧղͯ͠ɺղੳ࣌ʹ ࣮ߦ͢ΔػೳΛ࡞੒ͨ͠

Slide 105

Slide 105 text

࣭໰Ͳ͏ͧ https://github.com/Code-Hex/p5-Shell-Tiny