|
現: 2024-05-01 (水) 11:16:58 yuji |
| + | * Windowsで使えるターミナルとシェル [#j13aefde] |
| + | Windowsでも意外と選択肢は多い。ターミナルとシェルの組み合わせで,自分好みのコンソール環境を構築出来る。 |
| | | |
| + | ** ターミナルとは [#m8888400] |
| + | ターミナルは,ターミナルエミュレータ,端末エミュレータ,コンソール,などとも呼ばれている。~ |
| + | ''Windowsのコマンドプロンプト''もこの部類に入るツール。 |
| + | |
| + | 昔,コンピュータを人が操作するために入出力機器に[[テレタイプ>https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AC%E3%82%BF%E3%82%A4%E3%83%97%E7%AB%AF%E6%9C%AB]]を使っていたが,その機能をCRTとキーボードを使ってビデオターミナルとしてDEC社が発売したのが[[VT100>https://ja.wikipedia.org/wiki/VT100]]だった。~ |
| + | ターミナルエミュレータは,このVT100のような市販されていたビデオターミナルを,ソフトウェアでエミュレートして使用できるようにしたもの。~ |
| + | |
| + | テキストのみの画面とキーボードでの操作を行っている機能をターミナルと言っている。~ |
| + | |
| + | ターミナルはコンピュータにおける入出力機器として動作する。実際にコンピュータにいろいろな処理を行わせるためには[[シェル>https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB]]が必要で,コンピュータがブートされるとシェルが起動され,ターミナルを通してシェルを使用することでコンピュータを操作している。~ |
| + | |
| + | 代表的なターミナル(ターミナルエミュレータ)には,以下のようなものがある。 |
| + | - [[xterm(X Window)>https://ja.wikipedia.org/wiki/Xterm]]~ |
| + | - [[rxvt(X Window)>https://ja.wikipedia.org/wiki/Rxvt]]~ |
| + | - [[GNOME-terminal(GNOME)>https://ja.wikipedia.org/wiki/GNOME_%E7%AB%AF%E6%9C%AB]]~ |
| + | - [[Konsole(KDE)>https://ja.wikipedia.org/wiki/Konsole]]~ |
| + | - [[Terminal(Mac)>https://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB_(macOS)]]~ |
| + | - [[iTerm2(Mac)>https://en.wikipedia.org/wiki/ITerm2]]~ |
| + | - [[Win32コンソールconhost.exe(Windows)>https://ja.wikipedia.org/wiki/Win32%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB]]~ |
| + | - [[mintty(Windows)>https://ja.wikipedia.org/wiki/Mintty]]~ |
| + | - [[PuTTY(Windows)>https://ja.wikipedia.org/wiki/PuTTY]]~ |
| + | - [[Tera Term(Windows)>https://ja.wikipedia.org/wiki/Tera_Term]]~ |
| + | - [[Windows Terminal(Windows)>https://ja.wikipedia.org/wiki/Windows_Terminal]]~ |
| + | |
| + | ** シェルとは [#x1a28f25] |
| + | シェル(Shell)は,OSとユーザーとのインターフェースを担うソフトウェアのこと。~ |
| + | |
| + | 特にコマンドラインタイプのようなキャラクタユーザーインターフェース(CUI)を持つものをシェルと言っている。~ |
| + | デスクトップ環境のようなグラフィックユーザーインターフェース(GUI)を持つものも最近ではグラフィカル・シェルとか呼んでいるようだ。~ |
| + | |
| + | コンピュータがブートされ,いろいろな環境の初期化等を行った後,シェルが起動される。~ |
| + | このシェルを使って,他のアプリケーションを起動させたり,終了させたり,入出力をリダイレクトさせたり,バッチファイルを実行したりするコンピュータへの操作を行うことが出来る。~ |
| + | |
| + | 代表的なシェルには,以下のようなものがある。 |
| + | - [[bash(Unix)>https://ja.wikipedia.org/wiki/Bash]]~ |
| + | - [[csh(Unix)>https://ja.wikipedia.org/wiki/C_Shell]]~ |
| + | - [[zsh(Unix)>https://ja.wikipedia.org/wiki/Z_Shell]]~ |
| + | - [[cmd.exe(Windows)>https://ja.wikipedia.org/wiki/Cmd.exe]]~ |
| + | - [[PowerShell(Windows)>https://ja.wikipedia.org/wiki/PowerShell]]~ |
| + | - [[Windows Explorer(Windows)>https://ja.wikipedia.org/wiki/Windows_Explorer]]~ |
| + | - [[Finder(Mac OS)>https://ja.wikipedia.org/wiki/Finder]]~ |
| + | |
| + | ** Windowsで使えるターミナル環境 [#f644401f] |
| + | |
| + | *** mintty [#tb46486a] |
| + | [[mintty>https://mintty.github.io/]]は,MSYS/MSYS2,Cygwin,PuTTYなんかで使われているターミナルエミュレータ。~ |
| + | 以下のような特徴がある。~ |
| + | - xtermと互換性がある。~ |
| + | - 256色(8bit),TrueColor(16bit)をサポート。~ |
| + | - UTF-8をサポート。~ |
| + | - Windows IMEをサポートしている。多バイト文字を使える。~ |
| + | - 画像が表示できる。~ |
| + | - フルスクリーンになる。~ |
| + | - コピペがわりと簡単。~ |
| + | - テキストやファイル,フォルダのドラッグ&ドロップに対応。~ |
| + | - Ctrl+clickでURLを開ける。~ |
| + | - 背景を透過できる。~ |
| + | - レジストリを使わない。~ |
| + | |
| + | 動作が軽いのが良い。まあ,とりあえずこれを使っておけばいいのかもしれない。 |
| + | |
| + | タブ機能が必要な場合は,tmuxを導入すれば可能になる。~ |
| + | |
| + | *** ConEmu [#df337bd4] |
| + | [[ConEmu(Console emulator)>./ConEmu]]は,Windows用のオープンソースで無料で使用できるターミナルエミュレータ。~ |
| + | |
| + | 複数のコンソールをタブで切り替えて操作したり,ウィンドウを分割して表示したり出来る。~ |
| + | |
| + | *** cmder [#g6af12e7] |
| + | [[cmder>https://cmder.app/]]は,ConEmu(ターミナルエミュレータ)とclink(シェル)とGit for Windows(各種コマンド)をパッケージ化したターミナルエミュレータ環境。~ |
| + | 最低限の機能のmini版と,各種コマンドを含んだfull版がある。~ |
| + | - タブが使える。~ |
| + | - タブの入力をロックできる。~ |
| + | - 履歴を検索できる。~ |
| + | - aliasを設定できる。~ |
| + | - Monokaiカラー対応。~ |
| + | - PowerShellモードがある。~ |
| + | |
| + | *** ConsoleZ [#u38c75b9] |
| + | [[ConsoleZ>https://github.com/cbucher/console]]は,Console2の後継のアプリケーション。~ |
| + | ConEmuは設定がいっぱいあってよくわからないと思った場合,ConsoleZがいいかもしれない。見た目も操作も手軽。 |
| + | |
| + | *** ckw-mod [#k1f73d76] |
| + | [[ckw-mod>http://ckw-mod.github.io/]]は,ckwの後継アプリケーションのコマンドプロンプト代替えツール。~ |
| + | 日本人が開発しているので日本語の扱いはバッチリなんだけど,Unicodeには未対応。~ |
| + | 背景画像設定,透過,シェル指定と,やりたいことは一通り出来る。 |
| + | |
| + | *** Hyper [#r08dd6c4] |
| + | [[Hyper>https://hyper.is/]]は,Electronで開発されているターミナルエミュレータ。HTML5とJavaScriptで拡張できる。日本語には未対応。x86版も無い。 |
| + | |
| + | *** Qonsole [#w6092aee] |
| + | [[Qconsole>https://github.com/epimorphics/qonsole]]は,Quake(ゲームじゃん)ライクなターミナルエミュレータ。~ |
| + | ショートカットキーで,スライド表示される。シェルの指定も可能。 |
| + | |
| + | *** MobaXterm [#g9207551] |
| + | [[MobaXterm>https://mobaxterm.mobatek.net/]]は,Windowsでリモートネットワークに関するツール(SSH,X11,RDP,VNC,FTP,MOSHなど)や各種Unixコマンド(bash,ls,cat,sed,grep,awk,rsyncなど)を含んでいる高機能なターミナル環境。 |
| + | |
| + | 無料で使用できるPersonal Edition(使用できる機能に制限がある)とProfessional Edition(制限の無いバージョン。49Euro)がある。~ |
| + | Personal Editionでも用途的には十分でもある。 |
| + | |
| + | MobaXtermには,以下のような多くの機能がある。 |
| + | - PuTTY,KiTTY,Poderosa,TeraTermのようなSSHクライアント兼コンソールエミュレータ~ |
| + | -- コンソールエミュレータはタブ型で,縦・横・縦横分割ができる~ |
| + | -- Xサーバーが入っているのでリモートでXアプリを起動してもWindowsアプリのように動く~ |
| + | -- PuTTYの設定を読み取ってくれるので,移行時に接続先の設定が要らない~ |
| + | -- SSH以外にもrsh/mosh/FTP/SFTP/シリアルポートなどのプロトコルをサポート~ |
| + | -- 二段SSHや二段sftpにも対応している~ |
| + | -- 全ウィンドウ同時コマンド入力とか,驚きな便利機能がある~ |
| + | -- cmd.exeをラップしたコンソールエミュレータとして動作できる~ |
| + | -- msys/msys2とかがインストールされてなくてもbashを起動しviとかの色々なツールが使える~ |
| + | -- マクロ機能が付いていて簡単な自動化もできる~ |
| + | -- コンソールのスクリーンショットを取る機能が付いている~ |
| + | -- SSHポートフォワーディングの時にGUIで分かりやすくホストの関係を表示してくれて-Lとか-Rとか悩まない~ |
| + | -- ウィンドウ(タブ)のサイズを維持したままCTRL+マウスホイールでフォントを拡大縮小できる~ |
| + | デモする時とかにとても便利。~ |
| + | -- 日本語のインライン入力ができない~ |
| + | - WinSCPのようなGUIのSFTPクライアントが付いてる~ |
| + | - X11サーバー(Xdmcpでのログインもできる)が入っている~ |
| + | - RDPやVNCによるリモートデスクトップクライアントも使える~ |
| + | - なんかいろいろなサーバーが付属している~ |
| + | - 高機能な電卓機能が付いてる~ |
| + | 分数の計算とかもできちゃう。方程式も解ける。 |
| + | - ASCII表が見れて,ポンド記号ってHTMLの参照でなんだっけ?とか,Latin-1でウムラウト付きの文字のコードとか思い出せなくても調べられる。 |
| + | - diffツールが付いてる~ |
| + | - 画像ビューワーも付いてる~ |
| + | - パケットキャプチャとかポートスキャナとかが付いてる~ |
| + | - MobAptとかいうGUIのパッケージ管理ツールが付属していて,各種ツールは簡単に追加できる~ |
| + | - ゲームがいっぱい入っている |
| + | |
| + | こんなアホみたいに(褒めている)機能が付いているんで大量のダウンロードが必要でインストールも大変って思うのだが,これがびっくりインストーラーのファイルサイズが小さい。~ |
| + | インストール作業が不要なポータブル版もあるんで,試しで使ってみるのも便利。 |
| + | |
| + | *** CygTerm [#h855b50d] |
| + | [[Cygwin>https://www.cygwin.com/]]環境に入っているWindows用のターミナルエミュレータ。~ |
| + | TeraTerm,PuTTY,Poderosaなどのログインシェルを指定できないSSHなターミナルを,Cygwinの環境へ接続するツール。~ |
| + | TeraTermなどに同梱されていることが多い。TeraTermでは,メニューからFile => Cygwin connection [ALT + G]で使用できる。 |
| + | |
| + | *** Windows Terminal [#e84a4ad8] |
| + | [[Windows Terminal>./Windows Terminal]]はMicrosoftが開発している無料で使用できるWindows10/11用のターミナルエミュレータ。~ |
| + | |
| + | Windows10がリリースされてかなり経っているが,ConPTY APIや[[Windows Terminal>./Windows Terminal]]と,Windowsのターミナルエミュレータ環境も良くなってきている。~ |
| + | |
| + | ** SSH/シリアル通信クライアント [#hb4f814b] |
| + | Windowsで動作する,SSHでリモートコンピュータに接続する時に使用するアプリケーション。~ |
| + | - [[RLogin>https://kmiya-culti.github.io/RLogin/]]~ |
| + | - [[Poderosa>https://poderosa.sourceforge.net/]]~ |
| + | - [[TeraTerm>https://teratermproject.github.io/]]~ |
| + | - [[PuTTY>https://www.putty.org/]]([[KiTTY>https://github.com/cyd01/KiTTY]])~ |
| + | |
| + | ** Windowsで使えるシェル環境 [#y269de07] |
| + | *** MSYS2 [#oe884ee6] |
| + | [[MSYS2>/開発/toolchain/MinGW]]は,WindowsにPosix環境を使えるようにするためのツール群。~ |
| + | MSYS2でのターミナルエミュレータはminttyが標準で使われていて,シェルは''bash''になっている。~ |
| + | MSYS2を導入すれば,多くのPosixコマンドがWindowsで使用できるようになる。 |
| + | |
| + | パッケージマネージャとしてpacmanを採用しているので,足りないコマンドがあればpacman -S [name]ですぐにインストールできる。 |
| + | |
| + | *** Git for Windows [#t793899e] |
| + | [[Git for Windows>https://gitforwindows.org/]]は,Windowsで使用できるGitクライアントなのだが,MSYS2をベースに使っているのである程度のPosixコマンドが使用できる。シェルの''bash''も含まれている。~ |
| + | |
| + | Windowsでgitを使う場合は,通常これをインストールしているはず。 |
| + | |
| + | *** Cygwin [#o63b3205] |
| + | [[Cygwin>https://www.cygwin.com/]]は,WindowsでPosix環境を使用できるようにする環境。Windowsに無いPosix APIをcygwin1.dllでエミュレートして実行できる環境を構築できる。~ |
| + | |
| + | シェルは,bashが使われている。 |
| + | |
| + | *** PowerShell [#see6eadf] |
| + | [[PowerShell>https://learn.microsoft.com/ja-jp/powershell/]]はMicrosoftが開発したWindows7からデフォルトで入っているシェルで,コマンドプロンプト(cmd.exe)の後継というようなツール。~ |
| + | |
| + | .NETライブラリも使えたり出来て,かなりいろいろなことが出来る。しかし,コマンド表記が独特でなかなか馴染めない。 |
| + | |
| + | Windowsでしか使えないことが問題だったが,現在ではオープンソース化されLinuxやMac OSXでも動作するようだ。 |
| + | |
| + | *** Bash on Ubuntu on Windows [#x32ebf8e] |
| + | Windows 10のUpdateで使えるようになったWSL(Windows Subsystem for Linux)上で動くシェルの''bash''。 |
| + | bash自体はUbuntuバイナリだが,WindowsのカーネルのサブシステムでPosixをエミュレートしている。 |
| + | |
| + | いろいろ制限はあるが,手軽にLinuxコマンドが使用できるようになった。 |
| + | |
| + | *** BusyBox for Windows [#gdac84b1] |
| + | BusyBoxは,標準的なUnixコマンドを単一ファイルで提供しているすごいソフト。~ |
| + | シェルにはash(正確にはbusyboxだが)が使用できる。ashは軽量低機能が特徴のシェルで,まあ普段使いにはあまり向かない。~ |
| + | 組み込みLinuxでは,必ずと言っていいほど使われている。~ |
| + | |
| + | [[BusyBox for Windows>http://frippery.org/busybox/]]は,Windowsで動作するようにしたBusyBox。~ |
| + | MSYS2やWSLよりはるかに手軽に導入できる。~ |
| + | |
| + | *** gow [#w223415f] |
| + | [[Gnu on Windows>https://github.com/bmatzelle/gow]]のこと。多数のGNUコマンドが使える。シェルは''bash''。 |
| + | |
| + | *** UnxUtils [#r52312ed] |
| + | [[UnxUtils>https://sourceforge.net/projects/unxutils/files/latest/download]]は多数のGNUコマンドが使える。インストールはzipアーカイブを解凍してパスを通すだけ。~ |
| + | |
| + | 環境変数LESSCHARSETをdosに設定すると,SJISで日本語も表示できる。~ |
| + | |
| + | *** clink [#fa8a5019] |
| + | [[clink>https://mridgers.github.io/clink/]]は,Windowsのcmd.exeを拡張するツール。cmd.exeをbash風に出来る。~ |
| + | cmderでも使用されている。Luaで拡張できるようにもなっている。~ |
| + | |
| + | *** NYAGOS [#ode4c0c9] |
| + | [[NYAGOS(Nihongo Yet Another GOing Shell)>https://github.com/nyaosorg/nyagos]]は,日本人開発者がGo言語でスクラッチから作られたシェル。~ |
| + | Windowsのcmd.exe互換で使用できるように開発されている。Luaで拡張できる。~ |
| + | |
| + | ** その他 [#ja5e12f1] |
| + | 環境によっては役に立つソフト。~ |
| + | |
| + | *** GnuWin32 [#qc7b3aeb] |
| + | grepやsedなどのGnuコマンドだけ必要な人は,[[GnuWin32>https://gnuwin32.sourceforge.net/]]でも良いかも。シェルは含まれていない。~ |
| + | |
| + | *** winpty [#u4a5ca18] |
| + | Windowsでminttyを使うと対話型コマンドがうまく動作しなくなる。~ |
| + | sqlite3,node.js,gitなどは,minttyではうまく動かなかったり,日本語が文字化けしたりする場合がある。~ |
| + | |
| + | このような時に,[[winpty>https://github.com/rprichard/winpty]]をかませてminttyを使うと,これらが解決する。~ |
| + | |
| + | *** cocot [#nb2dc9d5] |
| + | [[cocot>https://github.com/vmi/cocot]]は,ttyの前に割り込んで文字コード変換を行うツール。~ |
| + | cocot bash,cocot ssh,cocot ping,のようにして使う。 |
| + | |
| + | *** iconv [#j9651e04] |
| + | 文字コード変換を行うツール。~ |
| + | 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' |
| + | |
| + | [[Windows版iconvはこちら>https://sourceforge.net/projects/gnuwin32/files/libiconv/1.9.2-1/libiconv-1.9.2-1.exe/download?use_mirror=jaist&download=]]からダウンロードできる。~ |
| + | |
| + | *** nkf [#yfe60b49] |
| + | [[nkf>https://ja.osdn.net/projects/nkf/]]は,iconv同様に文字コード変換を行うツール。~ |
| + | Windows版は[[こちらのサイト>https://www.vector.co.jp/soft/win95/util/se295331.html]]からでもダウンロードできる。~ |
| + | |
| + | ** CygwinとMSYSとMinGWについて [#c61ad9be] |
| + | CygwinとMSYS2/MinGWの環境がよく比較されているので,違いを調べた。~ |
| + | |
| + | *** Cygwin [#s210aec7] |
| + | Windows上で完全なPosix環境を目指して作成されたソフトウェアおよびコマンド群,シェル環境。 |
| + | |
| + | cygwin1.dllが,Posixシステムコールをエミュレーションしている。~ |
| + | Posixシステムコールを利用するものは,cygwin1.dllに依存してしまう問題があるが,Linux・Unixと高い互換性がある。 |
| + | |
| + | ターミナルエミュレータは''mintty'',シェルは''bash'',その他に多数のコマンドが含まれている。~ |
| + | もちろん,GCCやPerlなどもインストーラーで組み込むことができる。 |
| + | |
| + | *** MSYS/MSYS2 [#kdc1f092] |
| + | 多くのPosixコマンドをWindowsで利用できるようにしたパッケージ。~ |
| + | CygwinのようにPosixシステムコールのエミュレーションは行わず,Windowsネイティブで動作するようにしている。 |
| + | |
| + | ターミナルエミュレータは''mintty'',シェルは''bash'',その他に多数のコマンドが含まれている。 |
| + | |
| + | MSYS2はMSYSをフォークして改良している物。 |
| + | |
| + | MSYS2ではpacmanという汎用パッケージマネージャが使用できる。pacmanを使って,MinGW/MinGW64を簡単にインストールできる。 |
| + | |
| + | *** MinGW/MinGW64 [#z4fb8a82] |
| + | Windowsで利用できるGCC。WinAPIヘッダーやlibcなどのライブラリも含まれている。 |
| + | |
| + | MinGWは32bitバイナリしか作成はできないが,MinGW64では32bit/64bitどちらのバイナリも作成できる。 |
| + | |
| + | MinGW/MinGW64はGCCなので,MSYS/MSYS2やCygwin環境から使用できる。~ |
| + | Cygwinで使用した場合,cygwin1.dll非依存のWindowsネイティブアプリケーションを作成することも出来る。 |