私はLinuxとMacを使用していますが、すぐにいくつかのコマンドラインを教えます。
Windowsに何をインストールして、基本的なMac / Linux Bashシェルに最も似たターミナルウィンドウを表示できますか?
可能であれば、.bash_aliasesも定義できるようにしたいと思います。
私はLinuxとMacを使用していますが、すぐにいくつかのコマンドラインを教えます。
Windowsに何をインストールして、基本的なMac / Linux Bashシェルに最も似たターミナルウィンドウを表示できますか?
可能であれば、.bash_aliasesも定義できるようにしたいと思います。
回答:
あなたは、インストールすることができますCygwinのかMSYS / MinGWのを、またはあなたが(例えば、使用して仮想マシンに完全なLinuxディストリビューションをインストールすることができVirtualBoxのを)。
Linux用のWindowsサブシステムをインストールできるようになりました。これにより、WindowsでネイティブユーザーモードのLinuxシェルとツールを実行できます。これにより、Windowsで直接Bashシェルを実行でき、Ubuntuに基づいています。
これは、Windows 10のAnniversary Update(2016)で導入されたもので、デフォルトでは有効になっていません。Windows 10 Anniversary Updateマシンで新機能を有効にするには、次の手順を実行します。
少し歴史があります。2015年のプロジェクトAstoriaは、AndroidアプリをWindowsに持ち込むために開始され、Windows Subsystem for Linux(WSL)と呼ばれるLinuxサブシステムを構築しました。プロジェクトAstoriaは、UWP(Universal Windows Platform)戦略を弱体化したため、やがて削除されましたが、一部は保持され、Windowsのbashの基礎を形成しました。コース中、MicrosoftはCanonical(Ubuntu Linuxの作成者)と協力して、サポートされているすべてのツール/バイナリでネイティブイメージを提供しました。
詳細については、
https
://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/ https://blogs.windows.comをご覧ください。 / buildingapps / 2016/03/30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4(ビデオ)
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"
そして、Windowsストアから次のいずれかをインストールします
以下に、2018-05の時点で利用可能なオプションのリストと、2019-01の期間中のWSLに関するいくつかの更新、およびそれぞれの詳細を示します。
Cygwinは以下を提供します。
Cygwinは、LinuxアプリケーションのWindowsへの移植を簡単にすることを目指しています。CプログラムがUnix用に設計されており、パイプ、Unixスタイルのファイルおよびディレクトリアクセスなどの機能を使用する場合、Cygwin用にコンパイルでき、Cygwinはコードと外部 OS(Windows)の間の互換性レイヤーとして機能します。これにより、同じCプログラムをほとんど変更することなく、LinuxとWindowsの両方で動作させることができます。したがって、Linuxプログラムの膨大なリストが遵守され、Cygwinのインストール時に実行できます。ただし、これらのプログラムのユーザーであるあなたは、おそらくUnixに精通している必要があります。たとえば、あなたは次のように引数を渡す必要があるかもしれない/cygdrive/c/autoexec.bat
の代わりに、c:\autoexec.bat
と(Unixの線路終端と出力に対処する準備ができている\n
)の代わりに、Windowsの回線終端装置(\r\n
)。
すべてのCygwinプログラムのコレクションはリポジトリを構成し、Cygwinには従来のLinuxパッケージマネージャーがありませんが、非常に直感に反する方法でいつでもこのリポジトリからプログラムを追加、削除、更新できます(Cygwinのsetup.exeを実行するにはインストールが完了した後はいつでも)
BabunはCygwinであり、フル機能のパッケージマネージャー(協定)、そのシェル、git、自動更新、およびプラグイン指向アーキテクチャのoh-my-zshを備えています。デフォルトのシェルはzshですが、簡単にbashに切り替えることができます。余分な重量を気にしないなら、バニラCygwinからの素晴らしいアップグレードのように思えます。
Mingw-w64は以下を提供します。
MinGWは、主にWindows用のソフトウェア配布および構築プラットフォームです。特に、GCC、make、bashなどのGNUコンパイラツールのWindows移植版です。かなりの量のGNUツールと最小限のUnix互換性レイヤーが含まれています。
Mingw-w64とCygwinの主な違いは優先順位にあります。Cygwinは、すべての主要なUnixシステムコールとライブラリの完全な実装で構成される完全なPOSIX互換性レイヤーを提供することを目指しています。パフォーマンスは互換性に次ぐものです。MinGWはパフォーマンスを目的としているため、Windowsで簡単におよび/または十分に高速に実装できない特定のPOSIX APIを提供しません。また、MinGWの主なターゲットはS / W開発者です。それにもかかわらず、カジュアルなユーザーもそのシェルとユーティリティに含まれる汎用を楽しむことができます。
MSYS2は以下を提供します。
MSYS2は、主にソフトウェア配布とMinGWのようなWindows用の構築プラットフォームですが、Cygwinの方法とMinGWの方法の両方を組み合わせています。MSYS2を使用して、「MinGWプログラム」または「MSYS2プログラム」を作成できます。後のリンクは、MSYS2の互換性レイヤー(msys-2.dll)へのリンクです。このリンク自体は、Cygwinの互換性レイヤーの開発にいくつかの追加/変更を加えたものです。ただし、2つのプロジェクトのリポジトリは完全に無関係です。そのため、MSYS2とCygwinの両方が提供するもののgrep.exe
、完全に異なるバージョンを持つ場合があります。
Git for Windowsは、gitがインストールされたMSYS2のみか、少なくとも MSYS2に基づいています。同じシェル(bash)、ターミナル(Mintty)、パッケージマネージャー(pacman)を提供します。これは、Windows上で主要なGitを実行するための最も一般的な方法であるように思われ、それに伴い素敵なUnix環境が得られます。
WSLは、まったく異なる方法を使用して同じ問題を解決します。WSL上のLinuxシステムで実行するのとまったく同じコードを実行します。これは、カーネル呼び出しをインターセプトし、それらをWindowsカーネル呼び出しに変換します(Wineの反対です)。もちろん、翻訳は完璧ではありませんが、マイクロソフトはベータ版の警告を削除しました。2018年以前はWindows ServerでWSLを使用できなかったため、あまり調査していません。とにかく、Ubuntuのストックインストールで見つかると思われるほとんどのCLIグッズを備えた素敵なbashシェルを入手できます。Microsoftは「WSLはGUIデスクトップまたはアプリケーションのサポートを目的としていない」と公式に述べていますただし、その方法に関する非公式の指示があります。現在のところ(2018年初頭)、WSLの主な欠点は次のとおりであると思われます:a)画面のレンダリングとディスクへのアクセスが非常に遅いb)WindowsからWSL(Linux)ファイルを編集することになっていない c) 64ビットWindowsでのみ実行されます。ここだcygwinのと古いけど素敵な比較(リッチ・ターナーは、WSLチームの一員であることに注意してくださいは、彼がWSLに関する有用な情報をたくさん掲載しています)
上記のツールのほとんどは、WSLを除き、多くの共通技術(ライブラリ、実行可能ファイル、概念)を共有しています。たとえば、MinGWに付属するbashシェルは、それ自体がcygwin.dllのフォークであるmsys-2.dllに依存しています。混乱の余地は十分にあります:-)
Cmderは、Windows用の素敵な端末とbashのようなシェルを提供します。主なコンポーネントは Conemu(ターミナル)です。その上で、それが追加されますクリンクを提供する強力なバッシュスタイルのコマンドライン編集、カスタムプロンプトレイアウトとMonokaiのカラースキームを。ネイティブのWindowsコンソールプログラムとの高度な(または完全な)互換性があります。
Scoopは、多くのGNUツールを含む多くの有名なクロスプラットフォームプログラム用のコマンドラインパッケージマネージャーを提供します。事前にコンパイルされたパッケージをダウンロードします。シェルもターミナルも提供せず、代わりにWindowsのcmd.exeの下で実行されます(すべての制限がありますが、ネイティブWindowsコンソールプログラムとの完全な互換性もあります)。コンパイラスイートも含まれていません(ただし、もちろんコンパイラと開発ツールはscoopでインストールできる典型的なパッケージです)。Scoopがインストールするプログラムの多くは、MinGW / MSYSプロジェクトから直接提供されるか、ツールを使用してビルドされています。
以下のソリューションはアクティブではないようであり、私はそれらをテストしたことはありませんが、他の人のために仕事をしているようです:
Gow(Windows上のGnu)は、シェルなしのCygwinの軽量な代替です。便利なWindowsインストーラーを使用して、ネイティブのwin32バイナリーとしてコンパイルされ、windowsのcmd.exeから利用可能な、約130の非常に便利なオープンソースLinuxアプリケーションをインストールします。可能な限り小さく設計されています(約10 MB)。
UnxUtilsとGnuWin32: UnxUtilsは、一般的なGNU UnixのようなユーティリティのネイティブWin32へのポートのコレクションであり、実行可能ファイルはMicrosoft Cランタイムmsvcrt.dllのみに依存します。主要部分といくつかの更新をダウンロードする必要があります。GnuWin32にはUnxUtilsよりも新しいバージョンがありますが、サポートファイル(DLLなど)が必要です
MSYS&MinGWのは、ように見えているされて廃止され、私はそれらを見たことがないので、MSYS2&MinGWの-W64で。
Minttyは、Cygwin、MSYS2およびそれらの派生物で使用される端末です。Windowsのネイティブコンソールプログラムを実行している場合、Windowsコマンドプロンプトの簡単な代替ではないことに注意してください。単純なテキスト出力を備えたプログラムは通常正常に機能しますが、インタラクティブで全画面のプログラムはしばしば問題を抱えています。読むよりMinttyのホームページ上にもエントリを読んで「のGit Bashのから実行すると、一部のネイティブのコンソールプログラムは仕事をしません」Windowsのよくある質問のためのGit。このエントリには、この種の問題に直面したときに行うべき推奨事項があります。
これらの問題を回避するには、いくつかの方法があります。
留意すべき2つの最も重要なことは次のとおりです。
電源とデバッグが難しい問題の間にはトレードオフがあります。ソリューションが強力であればあるほど、最初はLinuxレイヤーとは無関係と思われる方法でも、より多くのものがうまくいかない可能性があります。
Linuxの経験があまりない場合は、Cygwin / MSYS2 / MinGWなどのより強力なソリューションを使用しないでください。
UnxUtilsとGnuWin32の電力は最小ですが、頭痛を引き起こす可能性も最小です。Cygwinと同様のものは、力と頭痛の両方でトップになります。Cmderは中間のどこかにあります。したがって、最も強力なソリューションが必要な場合は、十分な睡眠をとり、完全に集中してください。新しく不安定な可能性のあるものをテストしている間は、強力なソリューションを使用しないでください。また、cmderのような中程度の複雑さのソリューションはきれいではないことを忘れないでください。
WindowsコマンドをシャドウするLinuxコマンドの問題は、Cygwin / MSYS2 / MinGWなどのソリューションでデバッグが困難なトラブルの一般的な原因です。次に例を示します。timeoutコマンドを使用していた.batファイルがありました。Cygwinの下で実行すると、タイムアウトもLinuxコマンドですが、構文が異なるため失敗します。問題を発見した後、.batファイルの先頭にPATH = ...を追加して、windowsコマンドが優先されるようにしました。しかし、その後、さらに不可解な「入力リダイレクトはサポートされていません」エラーが発生し、理由を見つける前に回避策を講じました。
cmderの問題の例を次に示します。私はCmderでWindowsバージョンのunisonを実行していましたが、いくつかの特別な条件下ではエラーメッセージがまったく表示されずにハングしていました。同じコマンドがcmd.exeの下で常に完全に実行されていました。おもしろいことに、Cygwinでも完全に実行されていました(実際、Unicodeファイル名を持っている場合、cmd.exeはしばしば不正なUnicodeテキストを表示するため、Cygwin端末はcmd.exeよりも優れています)。
2017-05年、私は昔からツールの一部を使用していたにもかかわらず、主にCygWinとcmderを使用していましたが、上記のツールの違いを理解していないことにうんざりしました。それで、私は数時間かけて風景を調べました。このガイドは、私が保管したメモの結果です。私はこの分野の専門家ではありませんが、関連するすべての情報を見つけ、批判的な目でそれを読み、最も重要な部分を明確に提示するように努力しました。何かが間違っていると思われる場合はコメントしてください、私はそれを修正するために最善を尽くします。
最後に、いくつかの用語の問題に対する謝罪:このテキストでは、UNIXまたはPOSIXの代わりにLinuxという用語を時々使用します。私はそれらが同じではないことを知っていますが、そのような長距離からトピックに近づくとそれらを区別することは非常に困難です。難しくないときでも、私が持っていないのには時間がかかります;-)
pacman
、そうではありませんpackman
ありますクリンク利用できるGitHubので。フックライブラリを使用して、Windowsコマンドプロンプトに自身を統合します。
プロジェクトの説明から:
Clinkは、ネイティブのWindowsシェルcmd.exeを、GNU Readlineライブラリの強力なコマンドライン編集機能と組み合わせて、豊富な補完、履歴、および行編集機能を提供します。
(そのため、プログラミング言語としてのbash機能や他のUnixグッズは提供されません)
私は職場でLinuxを使用していますが、Bashから期待するように動作しないcmdでタブ移動することがあります。Clinkを使用すると、これらの欠点のいくつかを克服できます。
最近、私はまた、Linuxシステム機能をエミュレートし、その上にある種のシステムを提供するflinuxと呼ばれる、まだ可能性のない「できる」プロジェクトを発見しました(現在はArch Linuxに基づいています)
cmd.exe
サイトで説明されているように、拡張機能;)
faffaffaffが言ったことに加えて、Git for WindowsにはBashといくつかの一般的なLinuxコマンドラインプログラム(Vim、sed、gawkなど)が含まれています。MSYSに基づいています。ただし、プログラムのバージョンは古いです。たとえば、Bashはバージョン3.1です。Cygwinには、より新しいバージョンのユーティリティがあります。
また、ターミナルエミュレータとしてConEmuを使用します(主にVimの構文強調表示、タブページ、および簡単なコピーと貼り付けのため)。console2は別の人気のあるターミナルエミュレータでもありますが、試していません。
私はちょうどCygwinを内部的に統合したBabunを試しました。
ダウンロードファイルはわずかに大きく、約250 MBです。ただし、インストールは簡単です。何も設定する必要はなく、それだけで機能します!
putty
は実際のLinuxサーバーに接続していました。Windowsではcygwin
、不器用なインストールエクスペリエンスが原因で、使用することに消極的でしたが、常に消極的でした。しかし個人的には、msysよりも使いやすく、vmよりも高速であることがわかりました。cygwinをインストールすると、単にディレクトリをコピーするだけで十分な移植性が得られますが、Windowsのユーザー名に基づいて(少なくともデフォルトでは)各マシン/ユーザーに新しいユーザー名が作成されます。ただし、cygwin / msysはカスタムの「ディストリビューション」とみなされる可能性があるため、一部の[オプション]コマンドスイッチが欠落している可能性があることに注意してください。それらをテストします。