+ - 0:00:00

WSLでシェル芸環境
を整えてみた

 
 
 
Masayoshi Nomura / @nmrmsys 
 
2018/03/17 第34回 シェル芸勉強会@関西

1 / 12

自己紹介

 ■ なまえ: 野村 昌由

 ■ 業務システム開発
  とインフラ業

 ■ 開発に復帰したはずがインフラ
  シェル芸は実用主義派、Docker
  Rancher、最近はPostgreSQL、
  時系列DB、データ分析、IoTも

avator

 @nmrmsys

2 / 12

本名のローマ字綴りを子音だけにしたもの、アバターは Tim O'Reillyさん Web2.0

まずは wsl-terminalでターミナルを

wsl-terminal

慣れてる Minttyにサクッと切り替える

3 / 12

元々のコマンドプロンプトベースより

wsl-BoW-and-Mintty

細かい設定がいろいろ出来て便利!

4 / 12

次に tmuxでマウス操作を可能にする

$ 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

おまじないを唱えて、自動起動も設定

5 / 12

自由自在に画面が分割できるので

wsl-tmux

manを見ながらコマンド実行とか便利!

6 / 12

機能が有り過ぎて困るくらいなので

Qiita_tmux_cheat_sheet

よく使うのをチートシートにしてみた

7 / 12

Windowsとのファイルのやり取りは

$ 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).

~/直下にデスクトップへのリンクを作成

8 / 12

ssh_configを設定しておくと

$ 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!

9 / 12

各種サービスCLIツールを入れておくと

$ 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

コマンド一発で遠隔操作が可能でNice!

10 / 12

Ansibleはいつもより多くシェル芸を

Qiita_ansible_shellgei

$ 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!

11 / 12
Do Your Happy シェル芸ing Life!!
12 / 12

自己紹介

 ■ なまえ: 野村 昌由

 ■ 業務システム開発
  とインフラ業

 ■ 開発に復帰したはずがインフラ
  シェル芸は実用主義派、Docker
  Rancher、最近はPostgreSQL、
  時系列DB、データ分析、IoTも

avator

 @nmrmsys

2 / 12

本名のローマ字綴りを子音だけにしたもの、アバターは Tim O'Reillyさん Web2.0

Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
b Toggle blackout mode
f Toggle fullscreen mode
c Clone slideshow
p Toggle presenter mode
w Pause/Resume the presentation
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow