LoginSignup
1
0

GitBashでWindowsに快適CLI環境を構築

Last updated at Posted at 2023-05-07

はじめに

WindowsでCLI環境を構築してターミナルからいろいろ操作したい!という場合には、Git for Windowsをインストールすると付属してくるGitBashを利用しましょう。

WSLよりもWindowsシステムに入り込んでいる度が高いと思いますので、Windowsとしてアクセスできる場所にならアクセスできます。OneDrive/Boxなどのクラウドストレージや、sambaなどの共有フォルダとかも、エクスプローラー経由で利用できるようにしていればターミナルから直接参照できるので、なにかと便利でもあります。
(WSLだとドライブレターやらUNCパスやら、Windowsファイルシステムとの連携がちょい面倒だったと思います)

ソフトウェアのインストール

Git for Windows

以下URLからダウンロードしてインストールします。

インストールしたら、スタートメニュから「Git Bash」で起動します。

image.png

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をインストールしておきます。

tmuxのインストール
pacman -S tmux

Git for Windows付属のGitBashからGitSDKでインストールしたtmuxバイナリを利用するには、以下のようにします。

tmuxを使う
/c/git-sdk-64/usr/bin/tmux

GitSDKをインストールしたときのGitBashはPythonとかも入ってて、Windows版Pythonの同時利用と相性が悪そうなので常用しません。pacmanでインストールが必要なパッケージが出てきたときに使います。

以下はtmuxの設定ファイルですが、これはサンプルで自身が利用しているものです。

.tmux.conf
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でクリップボードをペーストする
.minttyrc
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

これは、以下の「オプション」から設定することで生成される設定ファイルを直接つくるだけです。そのほかの設定などはお好みで。
image.png

GitBashの設定

.bashrc

Ctrl-sって使う人いるんかな?

~/.bashrc
cat <<'EOF' >> ~/.bashrc
# パス追加
export PATH=$PATH:~/bin/

# Ctrl-sを解除 
stty stop undef

# Pythonをwinpty経由で実行する
alias python='winpty python'
EOF

.vimrc

おせっかいなインデント関連はすべてOFFじゃああ~!

~/.vimrc
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 ディレクトリがない場合は、先に作成しておく。

他サーバにログインした際に鍵の流用ができるようにしておきます。

~/.ssh/config
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に鍵を追加する
(鍵の保管ディレクトリはローカルディスク以外でもいいが、他人が参照できない場所に!)

~/.bashrc
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
pip install azure-cli

Azure Functions Core Tools

以下を参照にしてMSIファイルをダウンロードしてインストールする。

エラーが出る場合は .NET SDK の再インストール後に、再度CoreToolsをインストールする。

MSIインストール以外の方法 ``` winget install Microsoft.AzureFunctionsCoreTools ```
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0