Slide 1

Slide 1 text

CLI ʹ͍ͭͯޠΔձ tmux ೖ໳ Yusuke Miyazaki @ymyzk May 28th, 2017 CAMPHOR- HOUSE 1 / 30

Slide 2

Slide 2 text

͓͠ͳ͕͖ 1. ͸͡Ίʹ 2. tmux ͷػೳ঺հ 3. tmux ͷ࢖͍ํ 4. tmux ͷ׆༻ 2 / 30

Slide 3

Slide 3 text

tmux ͱ͸? 3 / 30

Slide 4

Slide 4 text

tmux is a terminal multiplexer 4 / 30

Slide 5

Slide 5 text

terminal multiplexer? It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more. — From http://tmux.github.io 5 / 30

Slide 6

Slide 6 text

tmux ͷػೳ 6 / 30

Slide 7

Slide 7 text

͜Μͳͱ͖͋Γ·ͤΜ͔? (λʔϛφϧͰ)͋Δ࡞ۀΛ͍͕ͯͨ͠, ผͷ࡞ۀΛ͍ͨ͠ Ͱ΋, લͷը໘͸ดͨ͘͡ͳ͍ ΤσΟλͰϓϩάϥϜΛॻ͖ͳ͕Β, ͦͷϓϩάϥϜΛί ϯύΠϧ/࣮ߦ͍ͨ͠ 7 / 30

Slide 8

Slide 8 text

͜Μͳ͜ͱͯ͠·ͤΜ͔? λʔϛφϧͷ΢Οϯυ΢΍λϒΛ։͚͹ྑ͍͕, ࢖͍ʹͦ͘͏ 8 / 30

Slide 9

Slide 9 text

tmux Λ࢖͏ͱ 1ͭͷλʔϛφϧͰηογϣϯ ɾ ΢Οϯυ΢ ɾ ϖΠϯΛ࢖ͬͯ, ෳ਺ ͷϓϩάϥϜΛ࣮ߦͰ͖Δ! 9 / 30

Slide 10

Slide 10 text

͜Μͳ͜ͱ͋Γ·ͤΜ͔? 2 ࣮ߦʹ͕͔͔࣌ؒΔॲཧΛߦ͍ͬͯΔؒ, ผͷ࡞ۀΛ͍ͨ͠ SSH Ͱ࡞ۀ͍͕ͯͨ͠, ωοτϫʔΫ͕੾Εͯ, ࡞ۀ͕தஅ ͯ͠͠·ͬͨ ! ͋Δ୺຤Ͱ࡞ۀ͍͕ͯͨ͠, ผͷ୺຤ʹҠಈͯ͠࡞ۀΛଓ͚ ͍ͨ 10 / 30

Slide 11

Slide 11 text

tmux Λ࢖͏ͱ σλονͯ͠, ࡞ۀΛதஅग़དྷΔ ϓϩάϥϜΛόοΫάϥ΢ϯυͰ࣮ߦͨ͠·· Ξλονͯ͠, ࡞ۀΛ࠶։͢Δ͜ͱ͕ग़དྷΔ SSH ઀ଓ͕੾Εͯ΋, Ξλον͢Ε͹େৎ෉ ෳ਺ͷ৔ॴ͔Βಉ͡ηογϣϯΛΞλονͰ͖Δ 11 / 30

Slide 12

Slide 12 text

·ͱΊ: tmux Ͱग़དྷΔ͜ͱ 1ͭͷλʔϛφϧͰෳ਺ͷϓϩάϥϜΛ࣮ߦ (ηογϣϯ ɾ ΢Οϯυ΢ ɾ ϖΠϯ) ը໘ (΢Οϯυ΢) Λ੾Γସ͑Δ ΢Οϯυ΢Λ෼ׂͯ͠࢖͏ (ϖΠϯ) λʔϛφϧͰͷ࡞ۀΛதஅ ɾ ࠶։ (σλον ɾ Ξλον) ෳ਺ͷλʔϛφϧ͔Β1ͭͷηογϣϯΛಉ࣌ʹΞλον ෳ਺ͷϖΠϯʹಉ࣌ʹೖྗ etc 12 / 30

Slide 13

Slide 13 text

࢖ͬͯΈͨ͘ͳΓ·͔ͨ͠? " 13 / 30

Slide 14

Slide 14 text

ͪΐͬͱدΓಓ # 14 / 30

Slide 15

Slide 15 text

൪֎ฤ: GUI Ͱ͸μϝ? $ ྫ͑͹iTerm (macOS ༻) Ͱ΋ը໘෼ׂ͸ग़དྷΔ ηογϣϯΛΞλον ɾ σλον͢Δػೳ͕ͳ͍ (ཁௐࠪ) OS ʹґଘͯ͠͠·͏ͷͰ, ଞͷ OS Ͱಉ͡΋ͷ͕࢖͑ͳ͍ SSH ܦ༝Ͱαʔόʔʹ઀ଓͨ͠ࡍͳͲʹ͸࢖͑ͳ͍ ͔ͬ͠Γ࢖͏ͳΒ tmux ͷํ͕ྑͦ͞͏ 15 / 30

Slide 16

Slide 16 text

൪֎ฤ: ྨࣅͷϓϩδΣΫτ GNU Screen ػೳ͸ tmux ʹࣅ͍ͯΔ ͪ͜Βͷํ͕͔ͳΓݹ͍ϓϩδΣΫτ (80೥୅ʙ) GPL ϥΠηϯε (फڭతཧ༝͕͋Ε͹) Byobu screen ΍ tmux ͷϥούʔ 16 / 30

Slide 17

Slide 17 text

tmux Λ࢖ͬͯΈΑ͏ 17 / 30

Slide 18

Slide 18 text

Πϯετʔϧ Linux (Debian ܥ): apt install tmux macOS (Homebrew): brew install tmux Windows: Bash on Windows ͰೖΔΒ͍͠...? (ཁݕূ) 18 / 30

Slide 19

Slide 19 text

ىಈ ɾ جຊૢ࡞ ɾ ऴྃ ىಈ: tmux جຊૢ࡞͸ Prefix-key some-key Prefix-key ͷσϑΥϧτ͸ Ctrl-b Ctrl-b ͸ Ctrl Λԡ͠ͳ͕Β b Λԡ͢ͷҙ มߋͰ͖·͢ (มߋͯ͠Δਓ͕ଟ͍ؾ͕͢Δ) ྫ Prefix c : Ctrl-b Λԡͯ͠, Ұ౓ΩʔΛ཭ͯ͠ c Λԡ͢ ৽ن΢Οϯυ΢͕։͖·͢ ऴྃ: ΢Οϯυ΢͕ͳ͘ͳΔͱউखʹऴྃ 19 / 30

Slide 20

Slide 20 text

ηογϣϯͷૢ࡞ σλον: Prefix d ηογϣϯΛσλον ϓϩάϥϜ͸όοΫάϥ΢ϯυͰ࣮ߦ͞Ε·͢ ྲྀੴʹϚγϯΛ࠶ىಈ͢Δͱఀࢭ͠·͢ Ξλον: tmux attach -t σλονͨ͠ηογϣϯΛ։͘ ηογϣϯ໊ͷมߋ: Prefix $ 20 / 30

Slide 21

Slide 21 text

΢Οϯυ΢ૢ࡞ ΢Οϯυ΢࡞੒: Prefix c ΢Οϯυ΢੾Γସ͑: ࣍ͷ΢Οϯυ΢: Prefix n લͷ΢Οϯυ΢: Prefix p x ൪ͷ΢Οϯυ΢: Prefix 21 / 30

Slide 22

Slide 22 text

ϖΠϯૢ࡞ ΢Οϯυ΢Λ෼ׂͯ͠ϖΠϯΛ࡞੒ ॎʹ෼ׂ (ԣʹϖΠϯΛฒ΂Δ): Prefix % ԣʹ෼ׂ (ॎʹϖΠϯΛฒ΂Δ): Prefix " ϖΠϯͷ෼ׂΛ΍Ίͯ΢Οϯυ΢ʹ: Prefix ! ϖΠϯͷ੾Γସ͑: Prefix o 22 / 30

Slide 23

Slide 23 text

ηογϣϯ ɾ ΢Οϯυ΢ ɾ ϖΠϯ 23 / 30

Slide 24

Slide 24 text

ηογϣϯ ɾ ΢Οϯυ΢ ɾ ϖΠϯ ηογϣϯ1 (Ξλον ɾ σλον͢Δͷ͸͜ͷ୯Ґ) ΢Οϯυ΢1 (λϒʹ͍ۙ) ϖΠϯ1 (෼ׂ͞Εͨ1ͭͷ෦෼) ϖΠϯ2 ΢Οϯυ΢2 ϖΠϯ1 ΢Οϯυ΢3 ϖΠϯ1 ηογϣϯ2 ... 24 / 30

Slide 25

Slide 25 text

tmux Λ׆༻͠Α͏ 25 / 30

Slide 26

Slide 26 text

tmux ͷઃఆ tmux ͷΩʔόΠϯυ౳͸ઃఆϑΝΠϧͰมߋͰ͖Δ ઃఆ͸ ~/.tmux.conf ʹஔ͘ Vi-like ͳઃఆ΍ Emacs-like ͳઃఆ΋બ΂Δ ࣗ෼ͷखʹͳ͡ΉઃఆΛ͍ͯ͘͠ ৽͍͠ઃఆΛಡΈࠐΉࡍͷ஫ҙ tmux source-file ~/.tmux.conf Λ࣮ߦ͢Δ͔ ͢΂ͯͷηογϣϯΛऴྃͯ͠࠶ىಈ͢Δ 26 / 30

Slide 27

Slide 27 text

tmux.conf ͷྫ # Prefix ͷมߋ (Ctrl-t ʹ) unbind C-b set -g prefix C-t bind C-t send-prefix # ΢Οϯυ΢ͷ൪߸Λ 1-index ʹ (Ωʔ഑ྻͱἧͬͯ௚ײత) set -g base-index 1 # Prefix Ctrl-r ͰઃఆಡΈࠐΈ bind C-r source-file ~/.tmux.conf 27 / 30

Slide 28

Slide 28 text

͞Βʹৄ͘͠ ݱࡏͷઃఆ: Prefix ? ϚχϡΞϧ: man 1 tmux ઃఆΛ୳͢: GitHub Ͱݕࡧ filename:tmux.conf @ymyzk ͷઃఆ͸ https://github.com/ymyzk/dotfiles ʹ͋Γ·͢ ϓϥάΠϯ: Tmux Plugin Manager Tips: tmux ͸ΞοϓσʔτͰઃఆͷ࢓༷͕Α͘มΘΔͷͰ, ৘ใͷ৽͠͞΍, ࣗ෼ͷ࢖͍ͬͯΔ tmux ͷόʔδϣϯʹ஫ ҙ! 28 / 30

Slide 29

Slide 29 text

·ͱΊ շదͳ CLI ؀ڥʹ͸ tmux ͷΑ͏ͳλʔϛφϧϚϧνϓϨΫ α͕ඞਢ tmux ͕खʹ߹Θͳ͍ਓ͸ screen ΍ byobu Λࢼͯ͠Έ ͯ΋͍͍͔΋ গͣͭ͠ઃఆΛ௥Ճͯ͠, ࣗ෼ͷखʹͳ͡ΉઃఆΛ 29 / 30

Slide 30

Slide 30 text

Happy Hacking with tmux!! 30 / 30