Windowsで使えるターミナルとシェル
Windowsで使えるターミナルとシェルについて説明する。
Windowsでも意外と選択肢は多い。ターミナルとシェルの組み合わせで,自分好みの環境を構築出来る。
ターミナルとは
ターミナル,ターミナルエミュレータ,端末エミュレータ,コンソール,などと呼ばれているもの。
Windowsのコマンドプロンプトもこの部類に入るツール。
テキストのみの画面の見た目やキーボードでの操作を行っている部分がターミナル。
ターミナルだけでは何も出来なくて,シェルと一緒に動作するようになっている。
代表的なターミナルには,以下のようなものがある。
シェルとは
シェル(Shell)は,OSとユーザーとのインターフェースを担うソフトウェアのこと。
特にコマンドラインタイプのようなインタプリタのインターフェースを持つものをシェルと言っている。
シェルを使って,他のアプリを起動させたり,終了させたり,入出力をリダイレクトさせたり,バッチファイルを実行したりする操作を行うことが出来る。
代表的なシェルには,以下のようなものがある。
Windowsで使えるターミナル環境
mintty
MSYS/MSYS2,Cygwin,PuTTYなんかで使われている。
以下のような特徴がある。
- xtermと互換性がある。
- 256色(8bit),TrueColor(16bit)をサポート。
- UTF-8をサポート。
- Windows IMEをサポートしている。多バイト文字を使える。
- 画像が表示できる。
- フルスクリーンになる。
- コピペがわりと簡単。
- テキストやファイル,フォルダのドラッグ&ドロップに対応。
- Ctrl+clickでURLを開ける。
- 背景を透過できる。
- レジストリを使わない。
動作が軽いのが良い。まあ,とりあえずこれを使っておけばいいのかもしれない。
minttyでタブ機能が必要な場合は,tmuxを導入すれば可能になる。
ConEmu
いろいろな設定ができ,かなり自由度が高い。タブが使えて複数ターミナルを切り替えながら使用できる。
cmder
ConEmu(ターミナル)とclink(シェル)とGit for Windows(各種コマンド)が入っているパッケージ。
最低限の機能のmini版と,各種コマンドを含んだfull版がある。
- タブが使える。
- タブの入力をロックできる。
- 履歴を検索できる。
- aliasを設定できる。
- Monokaiカラー対応。
- PowerShellモードがある。
ConsoleZ
Console2の後継アプリケーション。
ConEmuは,設定がいっぱいあってよくわからんと思った人には,ConsoleZがオススメ。見た目も操作も手軽。
ckw-mod
ckwの後継アプリケーション。日本人が開発しているので日本語の扱いはバッチリ。なんだけど,Unicodeには未対応。
背景画像設定,透過,シェル指定と,やりたいことは一通り出来る。
Hyper
Electron製のターミナル。HTML5とJavaScriptで拡張できる。日本語には未対応。x86版も無い。
Qonsole
Quake(ゲームじゃん)ライクなターミナル。
ショートカットキーで,スライド表示される。シェルの指定も可能。
MobaXterm
どちらかというとSSHクライアントみたいだが,bashが使える。
BusyBoxベースで,Cygwinとの連携とも可能になっていて,かなり高機能なターミナル。
MobaXterm
Windowsでのcygwinのターミナルに代わるターミナル環境。
CygTerm
Cygwin環境が必要。
TeraTerm,PuTTY,Poderosaなどのログインシェルを指定できないSSHなターミナルを,Cygwinの環境へ接続するツール。
TeraTermなどに同梱されていることが多い。TeraTermでは,メニューからFile => Cygwin connection [ALT + G]で使用できる。
SSH/シリアル通信クライアント
SSHでリモートコンピュータに接続する時に使用するアプリケーション。
- RLogin
- Poderosa
- TeraTerm
- PuTTY(KiTTY)
Windowsで使えるシェル環境
MSYS2
MSYS2は,WindowsにPosix環境を使えるようにするためのツール群。
MSYS2のターミナルは,minttyが標準で使われていて,シェルはbashになっている。MSYS2を導入すれば,多くのPosixコマンドが使用できるようになる。
パッケージマネージャとしてpacmanを採用しているので,足りないコマンドがあればpacman -S [name]ですぐにインストールできる。
Git for Windows
Windowsで使用できるGitクライアントなのだが,MSYS2をベースに使っているのでPosixコマンドが使用できる。シェルのbashも含まれている。
Windowsでgitを使う場合は,通常これをインストールしているはず。
Cygwin
CygwinはWindowsでPosix環境を使用できるようにする環境。Windowsに無いPosix APIをcygwin1.dllでエミュレートして実行できる環境を構築できる。
目的が,WindowsでPosix(Unix)を使えるようにするための環境。
シェルはbashが使われている。
PowerShell
Windows7からデフォルトで入っているシェルで,コマンドプロンプト(cmd.exe)の後継というようなツール。
.NETライブラリも使えたり出来て,かなりいろいろなことが出来る。しかし,コマンド表記が独特でなかなか馴染めない。
問題は,Windowsでしか使えないこと。(オープンソース化されて,Linuxでも使えるようになった?)
Bash on Ubuntu on Windows
Windows 10のUpdateで使えるようになったWSL(Windows Subsystem for いぬx)上で動くシェルのbash。
bash自体はUbuntuバイナリだが,WindowsのカーネルのサブシステムでPosixをエミュレートしている。
いろいろ制限はあるが,手軽にLinuxコマンドが使用できるようになった。
BusyBox
標準的なUnixコマンドを単一ファイルで提供するすごいソフト。
シェルにはash(正確にはbusyboxだが)が使用できる。ashは軽量低機能が特徴のシェルで,まあ普段使いにはあまり向かない。
組み込みLinuxでは,必ずと言っていいほど使われている。
gow
Gnu on Windowsのこと。多数のGNUコマンドが使える。
シェルはbash。
UnxUtils
多数のGNUコマンドが使える。インストールはzipアーカイブを解凍してパスを通すだけ。
残念ながら日本語やUTF-8には未対応。
clink
bash風なcmd.exeの代替ソフトウェア。cmderでも使用されている。
Luaで拡張できる。
その他
環境によっては役に立つソフトのリストです。
GnuWin32
grepやsedなどのGnuコマンドだけ必要な人は,これで良い。シェルは含まれていない。
winpty
minttyを使うと,Windowsでは対話型コマンドがうまく動作しなくなる。
sqlite3,node.js,gitなどは,minttyではうまく動かなかったり,日本語が文字化けしたりする場合がある。
このような時に,winptyをかませてminttyを使うと,これらが解決する。
cocot
ttyの前に割り込んで,文字コード変換を行うツール。
cocot bash,cocot ssh,cocot ping,のようにして使う。
iconv
文字コード変換を行うツール。
WindowsではSJISなのだが,PosixツールではUTF-8が標準となっているものが多い。
こんな時に文字化けが発生することがあるが,S-JISとUTF-8を変換する時に使用する。
下記のようにして使うとよい。
function wincmd()
{
CMD=$1
shift
$CMD $* 2>&1 | iconv -f CP932 -t UTF-8
}
alias ipconfig='wincmd ipconfig'
nkf
iconv同様,文字コード変換を行うツール。
CygwinとMSYSとMinGWについて
CygwinとMSYS2 + MinGWの環境がよく比較されているので、それらを簡単にまとめてみた。
Cygwin
Windows上で完全なPosix環境を目指して作成されたソフトウェアおよびコマンド群,シェル環境。
cygwin1.dllが,Posixシステムコールをエミュレーションしている。
Posixシステムコールを利用するものは,cygwin1.dllに依存していまうという問題があるが,Linux・Unixと高い互換性がある。
ターミナルはmintty,シェルはbash,その他に多数のコマンドが含まれている。
もちろん,GCCやPerlなどもインストーラーで組み込むことができる。
MSYS/MSYS2
MinGW/MinGW64を使用する時に開発環境としての多くの保管プログラムをパッケージしたソフトウェア。
ターミナルはmintty,シェルはbash,その他に多数のコマンドが含まれている。
MSYS2はMSYSをフォークして改良している物。
MSYS2ではpacmanという汎用パッケージマネージャが使用できる。MinGW/MinGW64を簡単にインストールできる。
MinGW/MinGW64
Windowsで利用できるGCC。WinAPIヘッダーやlibcなどのライブラリも含まれている。
MinGWは32bitバイナリしか作成はできないが,MinGW64では32bit/64bitどちらのバイナリも作成できる。
MinGW/MinGW64はGCCなので,Posix環境であるMSYS/MSYS2,Cygwinから使用できる。
Cygwinで使用した場合,cygwin1.dll非依存のWindowsネイティブアプリケーションを作成することも出来る。
新しくコメントをつける