はじめに
WindowsでCLI環境を構築してターミナルからいろいろ操作したい!という場合には、Git for Windowsをインストールすると付属してくるGitBashを利用しましょう。
WSLよりもWindowsシステムに入り込んでいる度が高いと思いますので、Windowsとしてアクセスできる場所にならアクセスできます。OneDrive/Boxなどのクラウドストレージや、sambaなどの共有フォルダとかも、エクスプローラー経由で利用できるようにしていればターミナルから直接参照できるので、なにかと便利でもあります。
(WSLだとドライブレターやらUNCパスやら、Windowsファイルシステムとの連携がちょい面倒だったと思います)
ソフトウェアのインストール
Git for Windows
以下URLからダウンロードしてインストールします。
インストールしたら、スタートメニュから「Git Bash」で起動します。
tmuxを使いたい場合はこちら
Git for Windowsに付属しているGitBashではtmuxをインストールするためのパッケージ管理ソフトウェアであるpacmanが利用できません。そのため、GitSDKをインストールすると付属してくるGitBashを利用してpacman経由でtmuxをインストールする必要があります。
Git for Windows - build-extra から git-sdk-installer-x.x.x-64.7z.exe
をダウンロードしてインストールします。
インストーラーのバイナリ自体は2020年と古いのですが、実行するとリポジトリからクローンするので、その時点の最新状態になります。
GitSDKのインストール後に一度起動してtmuxをインストールしておきます。
pacman -S tmux
Git for Windows付属のGitBashからGitSDKでインストールしたtmuxバイナリを利用するには、以下のようにします。
/c/git-sdk-64/usr/bin/tmux
GitSDKをインストールしたときのGitBashはPythonとかも入ってて、Windows版Pythonの同時利用と相性が悪そうなので常用しません。pacmanでインストールが必要なパッケージが出てきたときに使います。
以下はtmuxの設定ファイルですが、これはサンプルで自身が利用しているものです。
cat <<'EOF' > ~/.tmux.conf
# prefixキーをC-aに変更
set -g prefix C-a
bind C-a send-prefix
# コピーモードでvimキーバインドを使う
setw -g mode-keys vi
# vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# vimのキーバインドでペインをリサイズする
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# | でペインを縦分割する
bind | split-window -h
# - でペインを横分割する
bind - split-window -v
# Status line
# Global
set-option -g status-interval 1
set-option -g window-active-style bg=colour232
set-option -g window-style bg=colour234
# Left
set-option -g status-left-length 50
set-option -g status-left-style bg=white,fg=black
set-option -g status-left " Screen:#I Pane:#P / Git:#(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD) "
# Center
set-option -g status-justify "centre"
set-option -g status-style bg=magenta,fg=white
# Right
set-option -g status-right-length 50
set-option -g status-right-style bg=white,fg=black
set-option -g status-right " [%Y/%m/%d %H:%M:%S] "
# Set Terminal
set -g default-terminal "xterm-256color"
EOF
Python
(2023/4時点では)Azure Functions Core Tools がPython3.11で利用できないので、Python3.10をインストールします。
GitBashからpython
とタイプするとWindowsStoreが立ち上がるので、Python3.10を検索しなおしてインストールします。
ソフトウェアの設定
ターミナルエミュレータの設定
以下の設定のためのファイルを生成します。
- 配色
- フォント
- 日本語設定
- 選択範囲をクリップボードにコピーする
-
Ctrl-Shift-V
でクリップボードをペーストする
cat <<'EOF' > ~/.minttyrc
Locale=ja_JP
Charset=UTF-8
Font=Terminal
FontHeight=14
Term=xterm-256color
RightClickAction=paste
CursorType=block
Columns=100
Rows=40
Language=ja
BellType=0
AllowSetSelection=yes
CursorColour=191,191,191
White=255,255,255
ForegroundColour=255,255,255
ThemeFile=xterm
BoldAsColour=yes
BoldAsFont=no
CtrlShiftShortcuts=yes
EOF
これは、以下の「オプション」から設定することで生成される設定ファイルを直接つくるだけです。そのほかの設定などはお好みで。
GitBashの設定
.bashrc
Ctrl-s
って使う人いるんかな?
cat <<'EOF' >> ~/.bashrc
# パス追加
export PATH=$PATH:~/bin/
# Ctrl-sを解除
stty stop undef
# Pythonをwinpty経由で実行する
alias python='winpty python'
EOF
.vimrc
おせっかいなインデント関連はすべてOFFじゃああ~!
cat <<'EOF' > ~/.vimrc
" syntaxがあれば有効
if has("syntax")
syntax on
endif
" インデントは無効
filetype indent off
set noautoindent
set nosmartindent
set paste
" マークダウンで_をエラー表示しない用の設定
augroup update_markdown_syntax
autocmd!
autocmd FileType markdown syntax match markdownError '\w\@<=\w\@='
augroup END
" ターミナルの背景(黒)で見やすい配色
set background=dark
" 画面ベルも不要なので全部無効
set belloff=all
" 検索ハイライトをON(目がチカチカするときは:nohlすればいい)
set hlsearch
" マウスで選択した箇所はクリップボードにコピー
set mouse=a
set clipboard=unnamed,autoselect
EOF
SSH設定
他端末にSSH接続する場合は、これをやっておく。
まず ~/.ssh
ディレクトリがない場合は、先に作成しておく。
他サーバにログインした際に鍵の流用ができるようにしておきます。
cat <<'EOF' >> ~/.ssh/config
ForwardAgent yes
EOF
SSH鍵の新規作成
openssl genrsa -out ~/.ssh/id_rsa -aes256 4096
既存のSSH鍵を流用する場合
`BEGIN RSA PRIVATE KEY` は PKCS#1 形式# PKCS#1->PKCS#8 パスフレーズ追加
openssl rsa -in id_rsa -aes256 -out id_rsa.encrypted
# PKCS#8->PKCS#8 パスフレーズ削除
openssl rsa -in id_rsa.encrypted -out id_rsa.decrypted
OpenSSHの公開鍵(authorized_keys)を作成する場合
ssh-keygen -y -f ~/.ssh/id_rsa >> ~/.ssh/authorized_keys
PEM形式の公開鍵を作成する場合
openssl rsa -pubout -in ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
ログイン時に自動でssh-agentに鍵を追加する
(鍵の保管ディレクトリはローカルディスク以外でもいいが、他人が参照できない場所に!)
cat <<'EOF' >> ~/.bashrc
# ssh-agent
if [ -f ~/.ssh-agent ]; then
. ~/.ssh-agent
fi
if [ -z "$SSH_AGENT_PID" ] || ! kill -0 $SSH_AGENT_PID; then
ssh-agent > ~/.ssh-agent
. ~/.ssh-agent
fi
ssh-add -l >& /dev/null || ssh-add ~/.ssh/id_rsa
EOF
手動でssh-agentに鍵を追加/削除する場合
# 鍵追加
ssh-add [key path]
# 一覧表示
ssh-add -l
# 全部削除
ssh-add -D
そのほかのソフトウェア
Azure関連
AzureCLI
以下を参照にしてMSIファイルをダウンロードしてインストールする。
MSIインストール以外の方法
```:PowerShell winget install -e --id Microsoft.AzureCLI ```pip install azure-cli
Azure Functions Core Tools
以下を参照にしてMSIファイルをダウンロードしてインストールする。
エラーが出る場合は .NET SDK の再インストール後に、再度CoreToolsをインストールする。