name: centering layout: true class: center, middle --- name: coverpage # WSLでシェル芸環境を整えてみた Masayoshi Nomura / @nmrmsys 2018/03/17 第34回 シェル芸勉強会@関西 --- layout: false ## 自己紹介 .introduce-left[ ### ■ なまえ: 野村 昌由 ### ■ 業務システム開発 とインフラ業 ### ■ 開発に復帰したはずがインフラ シェル芸は実用主義派、Docker Rancher、最近はPostgreSQL、 時系列DB、データ分析、IoTも ] .introduce-right[ .center[ [![avator](img/avator.png)](https://nmrmsys.github.io/) ### @nmrmsys ] ] ??? 本名のローマ字綴りを子音だけにしたもの、アバターは Tim O'Reillyさん Web2.0 --- ## まずは wsl-terminalでターミナルを [![wsl-terminal](img/wsl-terminal.png)](https://qiita.com/vitway/items/e209fb4a4eb307de2d28) ## 慣れてる Minttyにサクッと切り替える --- ## 元々のコマンドプロンプトベースより [![wsl-BoW-and-Mintty](img/wsl-BoW-and-Mintty.png)](https://github.com/goreliu/wsl-terminal) ## 細かい設定がいろいろ出来て便利! --- ## 次に tmuxでマウス操作を可能にする ```xml $ cat ~/.tmux.conf set-option -g mouse on bind -n WheelUpPane if-shell -F -t="#{mouse_any_flag}" "send-keys -M" "if -Ft='#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'" bind -n WheelDownPane select-pane -t=\; send-keys -M $ cat ~/.bash_profile <中略> if [ $SHLVL = 3 ]; then tmux fi ``` ## おまじないを唱えて、自動起動も設定 --- ## 自由自在に画面が分割できるので ![wsl-tmux](img/wsl-tmux.png) ## manを見ながらコマンド実行とか便利! --- ## 機能が有り過ぎて困るくらいなので [![Qiita_tmux_cheat_sheet](img/Qiita_tmux_cheat_sheet.png)](https://qiita.com/nmrmsys/items/03f97f5eabec18a3a18b) ## よく使うのをチートシートにしてみた --- ## Windowsとのファイルのやり取りは ```xml $ sudo ln -s /mnt/c/Users/nmrmsys/Desktop /home/nmrmsys/Desktop $ ls -l ~/Desktop lrwxrwxrwx 1 root root 28 Mar 8 10:23 /home/nmrmsys/Desktop -> /mnt/c/Users/nmrmsys/Desktop $ cd ~/Desktop $ mkdir test $ cd test $ ls -l / > file $ # これも設定しておくと便利です。 $ sudo ln -s /mnt/c/wsl-terminal/cmdtool /usr/local/bin/cmdtool $ cmdtool Usage: /usr/local/bin/cmdtool [OPTION]... wcmd: run Windows programs with cmd.exe /c. wstart: run Windows programs with cmd.exe /c start. wstartex file|url: like wstart, but use WSL file path. update: check the latest wsl-terminal version, and upgrade it. killall: kill all WSL process. install dash: install Cygwin dash (for debugging). install busybox: install Cygwin busybox (for debugging). ``` ## ~/直下にデスクトップへのリンクを作成 --- ## ssh_configを設定しておくと ```xml $ cat ~/.ssh/config Host server1 User ec2-user Hostname xxx.xxx.xxx.xxx IdentityFile ~/.ssh/keys/nmrmsys-aws.pem Host server2 User ec2-user Hostname xxx.xxx.xxx.xxx IdentityFile ~/.ssh/keys/nmrmsys-aws.pem Host server3 User ec2-user Hostname xxx.xxx.xxx.xxx IdentityFile ~/.ssh/keys/nmrmsys-aws.pem $ ssh s [TABで入力補完] $ ssh server [TABで入力補完] server1 server2 server3 $ ssh server1 ``` ## サーバへの接続も簡単になってGood! --- ## 各種サービスCLIツールを入れておくと ```xml $ sudo apt intall awscli jq $ aws ec2 describe-instances \ | jq -r '.Reservations[].Instances[] | select(.State.Name == "stopped") | [ .InstanceId, (.Tags[]? | select(.Key == "Name")).Value ] | @sh' \ | awk '{ print "echo Instance Starting... " $1 " " $2 "; aws ec2 start-instances --instance-ids " $1 }' | sh ``` [![Qiita_jq_idiom2](img/Qiita_jq_idiom2.png)](https://qiita.com/nmrmsys/items/5b4a4bd2e3909db161b1) ## コマンド一発で遠隔操作が可能でNice! --- ## Ansibleはいつもより多くシェル芸を [![Qiita_ansible_shellgei](img/Qiita_ansible_shellgei.png)](https://qiita.com/nmrmsys/items/2d567d43e154eb341c6c) ```xml $ sudo apt intall ansible $ ansible -a "uname -a" group1 $ ansible -m shell -a "uname -a | cut -d' ' -f 3" group1 $ ansible -m shell -a ":(){: | : &};:" group1 ``` ## 回したりも出来たりしてExcellent! --- class: center, middle .large-font[ Do Your Happy シェル芸ing Life!! ]