Linux ve Mac kullanıyorum ve yakında bazı komut satırı öğelerini öğreteceğim.
Windows'ta temel bir Mac / Linux Bash kabuğuna en çok benzeyen bir terminal penceresi vermek için ne yükleyebilirim?
Mümkünse .bash_aliases de tanımlayabilmek istiyorum.
Linux ve Mac kullanıyorum ve yakında bazı komut satırı öğelerini öğreteceğim.
Windows'ta temel bir Mac / Linux Bash kabuğuna en çok benzeyen bir terminal penceresi vermek için ne yükleyebilirim?
Mümkünse .bash_aliases de tanımlayabilmek istiyorum.
Yanıtlar:
Sen yükleyebilir Cygwin veya MSYS / MinGW veya (kullanarak, örneğin bir sanal makine, tam bir Linux dağıtımı yükleyebilir VirtualBox ).
Artık Windows'ta yerel kullanıcı modu Linux kabuğunu ve araçlarını çalıştırmanızı sağlayan Linux için Windows Alt Sistemini yükleyebilirsiniz . Bu, Bash kabuğunu doğrudan Windows'ta çalıştırmanıza izin verir ve Ubuntu'ya dayanır.
Bu, Windows 10'da Yıldönümü Güncelleştirmesi (2016) ile birlikte sunuldu ve varsayılan olarak etkin değildir. Windows 10 Yıldönümü Güncelleme makinesinde yeni özelliği etkinleştirmek için aşağıdakileri yapın:
Astoria, 2015 projesine geri döndüğünde Astoria, Windows'a Android uygulamaları getirmeye başladı ve bu amaçla Linux için Windows Subsystem (WSL) adlı bir Linux alt sistemi kurdular. Sonunda proje Astoria, UWP (Evrensel Windows Platformu) stratejisini baltaladığı için bırakıldı, ancak bazı kısımlar tutuldu ve Windows için bash'ın temelini oluşturdu. Microsoft, kurs boyunca desteklenen tüm araçları / ikili dosyaları içeren yerel bir görüntü sağlamak için Canonical (Ubuntu Linux'un yaratıcıları) ile birlikte çalıştı.
Burada daha fazla bilgi bulabilirsiniz,
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 / bash-on-ubuntu pencerelerinde çalıştırma /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (video)
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"
Ve aşağıdakilerden herhangi birini Windows mağazasından yükleyin: Ubuntu, Debian, OpenSUSE, Kali Linux
2019-05 itibariyle, 2019-01 boyunca WSL ile ilgili birkaç güncellemenin yanı sıra, her biriyle ilgili biraz ayrıntı içeren mevcut seçeneklerin bir listesi.
Cygwin aşağıdakileri sağlar:
Cygwin, Linux uygulamalarını Windows'ta taşımayı kolaylaştırmayı amaçlamaktadır. Bazı C programları Unix için tasarlanmışsa ve borular, Unix tarzı dosya ve dizin erişimi vb. Gibi özellikleri kullanmayı bekliyorsa, Cygwin ve Cygwin, kod ve yabancı işletim sistemi arasında bir uyumluluk katmanı olarak hareket edecektir (Windows) . Bu, aynı C programının çok az veya hiç değişiklik yapmadan hem Linux hem de Windows'ta çalışmasını sağlar. Cygwin'i kurduğunuzda çok sayıda Linux programı uygulanmış ve çalıştırılabilir. Ancak, bu programların kullanıcısı, muhtemelen Unix’i iyi bilmeniz gerekecektir. Örneğin, /cygdrive/c/autoexec.bat
bunun yerine argümanları iletmeniz ve Windows satır sonlandırması ( ) yerine c:\autoexec.bat
Unix satır sonlandırması ( \n
) ile çıkış yapmaya hazır olmanız gerekebilir \r\n
.
Tüm Cygwin programlarının toplanması bir depo içerir ve Cygwin'in geleneksel bir Linux paket yöneticisi bulunmamasına rağmen, bu depodaki programları istediğiniz zaman çok sezgisel bir şekilde ekleyebilir, kaldırabilir ve güncelleyebilirsiniz (Cygwin's setup.exe kurulum tamamlandıktan sonra herhangi bir zamanda )
Babun , tam özellikli bir paket yöneticisi (pakt), kabuğu, git, otomatik güncellemeleri ve eklenti odaklı mimarisi için oh-my-zsh ile Cygwin'dir . Varsayılan kabuk zsh olmasına rağmen kolayca bash'a geçebilirsiniz. Ekstra ağırlığa aldırış etmiyorsanız vanilya Cygwin'den güzel bir yükseltme gibi görünüyor.
Mingw-w64 aşağıdakileri sağlar:
MinGW, öncelikle bir yazılım dağıtımı ve Windows için bir yapı platformudur. Özellikle, GCC, make, bash, vb. Gibi GNU derleyici araçlarının bir Windows bağlantı noktasıdır. Adil miktarda GNU aracı ve minimal bir Unix uyumluluk katmanı içerir.
Mingw-w64 ve Cygwin arasındaki temel fark önceliklidir: Cygwin, tüm büyük Unix sistem çağrılarının ve kütüphanelerinin tam bir uygulamasını içeren eksiksiz bir POSIX uyumluluk katmanı sağlamayı amaçlamaktadır; performans uyumluluğa ikincildir. MinGW, performansı hedeflediğinden, Windows altında kolayca ve / veya yeterince hızlı uygulanamayan belirli POSIX API'leri sağlamayacaktır. Ayrıca MinGW'nin ana hedefi S / W geliştiricileridir. Bununla birlikte, sıradan kullanıcılar kabuğunu ve genel amaç dahil programları da kullanabilirler.
MSYS2 aşağıdakileri sağlar:
MSYS2 ayrıca öncelikle MinGW gibi Windows için bir yazılım dağıtımı ve bir yapı platformudur, ancak hem Cygwin'in hem de MinGW'nin birleşimini birleştiriyor. MSYS2'yi "MinGW programları" veya "MSYS2 programları" oluşturmak için kullanabilirsiniz . Daha sonra, Cygwin'in uyumluluk katmanının gelişimini birkaç ekleme / değişiklikle yakından takip eden MSYS2'nin (msys-2.dll) uyumluluk katmanına bağlanması . Bununla birlikte, 2 projenin havuzları tamamen ilişkili değildir. Bu nedenle, hem MSYS2 hem de Cygwin'in sağlamasına grep.exe
rağmen, tamamen farklı bir sürüme sahip olabilirler.
Windows için Git, yüklü Git ile birlikte yalnızca MSYS2'dir veya en azından MSYS2'yi temel almaktadır . Aynı kabuk (bash), terminal (Mintty) ve paket yöneticisi (pacman) sağlar. Baskın Git'in Windows'ta çalışmasını sağlamanın en popüler yolu ve bununla birlikte güzel bir Unix ortamı elde etmek gibi görünüyor.
WSL tamamen aynı yöntemi kullanarak aynı problemi çözer. WSL'deki bir Linux sisteminde çalıştıracağınız kodun aynısını, çekirdek çağrılarını engelleyen ve onları Windows çekirdek çağrılarına çeviren (Wine'ın tam tersi) çevirirsiniz. Elbette çeviri mükemmel olamaz ama Microsoft beta uyarısını iptal etti . WSL, 2018'den önce Windows Server'da bulunmadığı için bu kadar fazla ilgilenmedim. Her neyse, bir stok Ubuntu kurulumunda bulmayı beklediğiniz çoğu CLI ürününün bulunduğu güzel bir bash kabuğu alırsınız. Microsoft, resmen "WSL'nin GUI masaüstlerini veya uygulamalarını desteklemeyi amaçlamadığını" belirtti.ancak bunun nasıl yapılacağına dair resmi olmayan talimatlar var. Görünüşe göre işler şu anda (2018'in başlarında) WSL'nin ana dezavantajları şunlardır: a) Ekranı ve disk erişimini çok yavaşlatmak b) WSL (Linux) dosyalarını Windows'dan düzenlemeniz gerekmiyor) c) yalnızca 64 bit Windows'ta çalışır. İşte cygwin ile eski ama güzel bir karşılaştırma (Rich Turner'ın WSL ekibinin bir üyesi olduğunu ve WSL ile ilgili birçok yararlı bilgi yayınladığını unutmayın)
WSL dışında, yukarıdaki araçların çoğu ortak bir teknolojiyi (kütüphaneler, çalıştırılabilirler, kavramlar) paylaşır. Örneğin, MinGW ile birlikte gelen bash kabuğu, cygwin.dll dosyasının bir çatalı olan msys-2.dll dosyasına bağlıdır. Yani evet karışıklık için bol bol yer var :-)
Cmder sadece güzel bir terminal ve Windows için bash benzeri bir kabuk sağlar. Ana bileşeni Conemu'dur (terminal). Ekler Bunun üzerine çın sağlar Güçlü Bash tarzı komut satırı düzenleme , özel bir istemi düzen ve Monokai renk düzenini. Yerel pencere konsolu programlarıyla yüksek düzeyde (veya belki de tamamen) uyumludur.
Scoop , birçok GNU aracı da dahil olmak üzere birçok tanınmış platformlar için komut satırı paket yöneticisi sağlar. Önceden derlenmiş paketleri indirir. Ne kabuk ne de terminal sağlamıyor, ancak bunun yerine windows 'cmd.exe altında çalışıyor (tüm kısıtlamalarıyla değil, aynı zamanda yerel Windows konsol programlarıyla tam uyumluluğu ile). Ayrıca derleyici paketi içermez (ancak derleyiciler ve geliştirme araçları, kepçe ile yükleyebileceğiniz tipik paketlerdir). Scoop'un yüklediği programların çoğu doğrudan MinGW / MSYS projesinden geliyor ya da araçlarını kullanarak inşa edildi.
Aşağıdaki çözümler aktif görünmüyor ve ben onları hiç test etmedim ama başkaları için işi yapıyor gibi görünüyorlar:
Gow (Windows'ta Gnu), kabuksuz Cygwin'in hafif alternatifidir. Yerel win32 binaryleri olarak derlenen ve windows 'cmd.exe aracılığıyla erişilebilen yaklaşık 130 derece açık kaynak kodlu Linux uygulaması yükleyen kullanışlı bir Windows yükleyici kullanıyor. Mümkün olduğu kadar küçük olacak şekilde tasarlanmıştır (yaklaşık 10 MB).
UnxUtils & GnuWin32 : UnxUtils , yalnızca Microsoft C-runtime msvcrt.dll dosyasına bağlı olarak çalıştırılabilen ortak GNU Unix benzeri yardımcı programların yerel Win32'ye bağlantı noktaları koleksiyonudur. Ana bölümü ve birkaç güncellemeyi indirmelisiniz. GnuWin32'nin UnxUtils'ten sonraki sürümleri vardır, ancak destekleyici dosyalar gerektirir (örn. DLL'ler)
MSYS'i & MinGW görünüyor gelmiş edilmiş obsoleted böylece onlara bakmadım MSYS2 & MinGW-W64 ile.
Mintty, Cygwin, MSYS2 ve türevlerinde kullanılan terminaldir. Windows yerel konsol programlarını çalıştırıyorsanız, Windows Komut İstemi için ağrısız bir değiştirme olmadığını unutmayın. Basit metin çıktısı olan programlar genellikle iyi çalışsa da, etkileşimli ve tam ekran programların sık sık sorunları olur. Oku mintty ana sayfasında daha fazla ve ayrıca girişi "Git Bash çalıştırılan Bazı yerli konsol programları çalışmıyor" okumak , Windows SSS için Git . Bu giriş, bu tür sorunlarla karşılaştığınızda yapmanız gereken önerilere sahiptir:
Bu sorunlara geçici bir çözüm bulmak için birkaç yöntem var:
- Winpty yardımcı programını kullanarak sorunları olan programları çalıştırın . Bu, daha hoş mintty terminalini kullanmaya devam etmenizi sağlar, ancak birçok program için geçici çözüm gerekiyorsa, hantal hale gelebilir.
- [cmd.exe'yi kullanın] ve "Hızlı Düzenleme", makul boyut ve geri kaydırma ve uygun unicode yazı tipi için yapılandırın. [Cmd.exe] 'nin diğer tuhaflıkları ile birlikte yaşamak zorunda kalacaksınız.
- Conemu yükleyin ve kullanın .
Akılda tutulması gereken en önemli iki şey şunlardır:
güç ve hata ayıklamak zor arasında bir ticaret var. Çözüm ne kadar güçlüyse, başlangıçta Linux katmanınızla alakasız görünecek şekillerde bile o kadar fazla şey yanlış gidebilir.
Çok fazla Linux deneyiminiz yoksa, Cygwin / MSYS2 / MinGW gibi daha güçlü çözümleri kullanmayın.
UnxUtils ve GnuWin32 en az güce ve aynı zamanda size baş ağrısına neden olma potansiyeline sahiptir. Cygwin ve benzeri, hem güç hem de baş ağrısında çıtayı üste alacak. Cmder ortada bir yerlerde. Böylece en güçlü çözümlere ihtiyaç duyduğunuzda iyi bir uyku çekin ve tamamen konsantre olun. Yeni ve muhtemelen kararsız bir şeyi test ederken güçlü çözümler kullanmaktan kaçının. Ayrıca cmder gibi orta karmaşıklık çözümlerinin lekesiz olmadığını da unutmayın.
Linux komutları, pencereleri gölgelendirme komutlarını Cygwin / MSYS2 / MinGW gibi çözümlerde hata ayıklamak zor bir nedenidir. İşte bir örnek: timeout komutunu kullanan bir .bat dosyam vardı. Cygwin altında çalıştırıldığında başarısız olur çünkü zaman aşımı aynı zamanda bir Linux komutudur ancak farklı sözdizimi vardır. Sorunu tespit ettikten sonra, windows komutunun önceliğini sağlamak için .bat dosyasının en üstüne bir PATH = ... ekleyebileceğimi öğrendim. Ama sonra daha şifreli bir "Girdi yeniden yönlendirme desteklenmiyor" hatası aldım ve nedenini bulmadan önce bir geçici çözüm için çözüm buldum.
İşte cmder ile ilgili bir sorun örneği. Unison'un Windows sürümünü Cmder altında çalıştırıyordum ve bazı özel koşullar altında kesinlikle hiçbir hata mesajı ile asılı kalıyordu . Aynı komut her zaman cmd.exe altında mükemmel çalışıyordu. Komik olan şey, aynı zamanda mükemmel bir şekilde Cygwin'in altında çalışmasıydı (aslında Unicode dosya adlarına sahipseniz bir Cygwin terminali cmd.exe'den daha iyidir, çünkü cmd.exe genellikle Unicode metni hatalı biçimlendirir).
2017-05 boyunca, bazılarını uzun zamandan beri kullanmama rağmen (çoğunlukla CygWin ve cmder, ancak geliştirme amacıyla) kullanmamla birlikte, yukarıdaki araçların farklılıklarını anlamaktan bıktım. Bu yüzden manzarayı kırmak için birkaç saat harcadım. Bu rehber, tuttuğum notların sonucudur. Bu alanda uzman değilim ama tüm ilgili bilgileri bulmak, eleştirel bir gözle okumak ve en önemli kısımları net bir şekilde sunmak için çok çalıştım. Bazı şeyler yanlış görünüyorsa lütfen yorumlayın ve düzeltmek için elimden geleni yapacağım.
Sonunda bazı terminoloji konularında bir özür: Bu yazıda bazen Linux terimini UNIX veya POSIX yerine kullanıyorum. Bunların aynı olmadığını biliyorum ama bu kadar uzun bir mesafeden bir konuya yaklaşırken aralarındaki farkı ayırt etmek çok zor. Zor olmasa bile, sahip olmadığım zaman alıyor ;-)
pacman
değilpackman
En az miktarda MinGW ve ayrıca en az MSYS seti indirip kurmanızı öneririm . MinGW yükleyici, hangi paketleri kurmak istediğinizi seçmeniz için size kolay bir GUI sağlar. İstediğiniz tek BASH ise, kurulum birkaç megabayttan fazla sürmez.
GÜNCELLEME: Ben taşındı MSYS2 çok daha gelişmiş olduğunu ve paket yönetimi için Arch Linux pacman aracının limanı vardır. MSYS2 yükleyicisi ihtiyacınız olan her şeye sahiptir, ayrıca kesinlikle mükemmel olan mintty'yi kullanır .
Orada da çın mevcut GitHub'dan de . Kanca kitaplıklarını kullanarak kendisini Windows komut istemine entegre eder.
Proje tanımından:
Clink, yerel Windows shell cmd.exe dosyasını, zengin tamamlama, geçmiş ve satır düzenleme yetenekleri sağlayan GNU Readline kütüphanesinin güçlü komut satırı düzenleme özellikleriyle birleştirir.
(bu nedenle bir programlama dili olarak bash dili veya başka bir Unix ürünü sunmaz)
İşyerinde Linux kullanıyorum ve kendimi bazen Bash'den beklediğim gibi davranmayan cmd içinde sekmeyi buluyorum. Clink ile bu eksikliklerin bazılarının üstesinden gelebilirim.
Son zamanlarda, Linux sistemi işlevlerini taklit eden ve bunun üzerine bir tür sistem sağlayan (şu anda Arch Linux'a dayanan) flinux adlı umut verici ancak henüz bir şey yapamayan 'proje keşfettim.
cmd.exe
Sadece sitede açıklandığı gibi bir uzantısı ;)
Faffaffaff'ın söylediğine ek olarak , Git for Windows , Bash ve bazı genel Linux komut satırı programlarını (örn. Vim , sed ve gawk ) içerir. MSYS'e dayanıyor . Programların sürümü eski olsa da, örneğin Bash sürüm 3.1. Cygwin , yardımcı programların daha yeni sürümlerine sahip olacaktı.
Ayrıca ConEmu'yu terminal emülatörü olarak kullanıyorum (çoğunlukla Vim'de vurgulanan sözdizimi, sekme sayfalarında ve kolay kopya yapıştırmada). console2 da denememiş olmama rağmen başka bir popüler terminal emülatörüdür.
Bu, yeni bir Windows makinesi kurduğumda yaptığım ilk şeylerden biri:
Az önce Cygwin'i dahili olarak entegre eden Babun ile denedim ve bana da tadı güzel :)
İndirme dosyası yaklaşık 250 MB büyüklüğünde. Ancak kurulum basittir; bir şey yapılandırmanıza gerek yoktur ve sadece işe yarar!
putty
gerçek bir linux sunucusuna bağlanmak için. pencerelerde her zaman hem isteksiz hem de kullanmaya istekliydimcygwin
, beceriksiz kurulum deneyimim yüzünden isteksizdim. Ama şahsen, msys'den daha kullanışlı ve vm'den daha hızlı buldum. bir kere kurulduktan sonra, cygwin bir şekilde taşınabilir hale gelir, sadece dizinini kopyalamak yeterlidir, ancak Windows kullanıcı adına göre her makine / kullanıcı için yeni bir kullanıcı adı oluşturacaktır (varsayılan olarak, en azından). Ancak, cygwin / msys özel bir "dağıtım" olarak görülebildiğinden, bazı [isteğe bağlı] komut anahtarlarının eksik olabileceğini unutmayın. onları test et.