GNU/Linux >> Belajar Linux >  >> Linux

Tahun Linux di Desktop (Windows) - Tips dan Trik WSL

Saya telah melakukan banyak pekerjaan di bash/zsh/fish akhir-akhir ini - Linux. Jika Anda tidak tahu, Windows 10 dapat menjalankan Linux sekarang. Tentu, Anda dapat menjalankan Linux di VM, tetapi ini berat dan Anda membutuhkan mesin yang layak. Anda dapat menjalankan shell di bawah Docker, tetapi Anda memerlukan Hyper-V dan Windows 10 Pro. Anda bahkan dapat membuka https://shell.azure.com dan mendapatkan terminal di mana saja - saya melakukannya di Chromebook.

Tapi kebanyakan saya menjalankan Linux secara native di Windows 10. Anda bisa pergi. Cukup buka PowerShell sekali, sebagai Administrator dan jalankan perintah ini dan reboot:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Kemudian buka Windows Store dan unduh Ubuntu, atau Debian, atau Kali, atau apa pun.

  • Ubuntu
  • OpenSUSE
  • SLES
  • Kali Linux
  • GNU/Linux Debian

Apa yang terjadi adalah Anda menjalankan mode pengguna Linux tanpa Kernel Linux. Panggilan sistem (panggilan sistem) yang digunakan oleh Linux yang tidak dimodifikasi ini disalurkan ke Windows. Fork proses Linux? Ini adalah proses pico di Windows dan muncul di task manager.

Ingin mengedit file Windows dan mengeditnya baik di Windows maupun di Linux? Simpan file/kode Anda di /mnt/c/ dan Anda dapat mengeditnya dengan OS lain. Jangan gunakan Windows untuk "menjangkau sistem file Linux". Ada naga.

Setelah Anda menginstal Linux (atau banyak, seperti yang saya lakukan), Anda dapat mengelolanya dan menggunakannya dalam beberapa cara.

Pikirkan ini bodoh atau bodoh? Berhenti membaca dan terus jalankan Linux dan saya berharap yang terbaik untuk Anda. Lebih banyak kekuatan untuk Anda.

Ingin tahu lebih banyak? Ingin mencari cara baru dan kreatif untuk mendapatkan yang TERBAIK dari alat baris perintah UI Windows dan Linux? Baca terus, teman-teman.

wslconfig

WSL berarti "Subsistem Windows untuk Linux." Dimulai dengan Windows 10 (versi 1709 - itu 2017-09, Fall Creators Update. Jalankan "Winver" untuk melihat apa yang Anda jalankan), Anda memiliki perintah yang disebut "wslconfig." Cobalah. Ini mencantumkan distro yang Anda miliki dan mengontrol mana yang dimulai saat Anda mengetik "bash."

Lihat di bawah bahwa default saya untuk "bash" adalah Ubuntu 16.04, tetapi saya dapat menjalankan 18.04 secara manual jika saya suka. Lihat bagaimana saya berpindah dari cmd ke bash dan keluar, lalu masuk kembali, dengan mulus. Sekali lagi, tidak ada VM.

C:\>wslconfig /l /all
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-18.04
openSUSE-42
Debian
kali-rolling

C:\>wslconfig /l
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-18.04
openSUSE-42
Debian
kali-rolling

C:\>bash
128 → $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
128 → $ exit
logout

C:\>ubuntu1804
scott@SONOFHEXPOWER:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
scott@SONOFHEXPOWER:~$

Anda juga dapat mem-pipe sesuatu ke perintah Linux dengan mem-pipe ke wsl atau bash seperti ini:

C:\Users\scott\Desktop>dir | wsl grep "poop"
05/18/2018 04:23 PM <DIR> poop

Jika Anda menggunakan Windows, menjalankan cmd.exe atau powershell.exe, yang terbaik adalah pindah ke Linux dengan menjalankan wsl atau bash karena menyimpan direktori saat ini.

C:\Users\scott\Desktop>bash
129 → $ pwd
/mnt/c/Users/scott/Desktop
129 → $ exit
logout

Dingin! Ingin tahu apa nomor itu sebelum Prompt saya? Itu gula darah saya. Tapi itu posting blog lain.

wsl.conf

Ada file di /etc/wsl.conf yang memungkinkan Anda mengontrol hal-hal seperti jika Linux pilihan Anda mengotomatiskan drive Windows Anda. Anda juga dapat mengontrol hal-hal yang lebih canggih seperti jika Windows membuat file host secara otomatis atau memproses /etc/fstab. Terserah Anda!

Distro

Ada setengah lusin distro yang tersedia dan lebih banyak lagi yang akan datang, saya diberitahu, tetapi ANDA juga dapat membuat/mengemas distribusi Linux Anda sendiri untuk WSL dengan packager/distro-launcher yang bersumber terbuka di GitHub.

Docker dan WSL

Semua orang ingin tahu apakah Anda dapat menjalankan Docker "asli" di WSL. Tidak, itu sedikit terlalu "Inception", dan seperti yang disebutkan, Kernel Linux tidak ada. Binari elf yang tidak dimodifikasi berfungsi dengan baik tetapi Windows berfungsi. TAPI!

Anda dapat menjalankan Docker untuk Windows dan klik "Expose daemon on localhost:2375" dan karena Windows dan WSL/Linux berbagi ruang port yang sama, Anda BISA menjalankan klien Docker dengan sangat senang di WSL.

Setelah Anda menjalankan Docker untuk Windows di latar belakang, instal di Ubuntu dengan mengikuti instruksi biasa. Kemudian perbarui .bashrc Anda untuk memaksa klien buruh pelabuhan lokal Anda berbicara dengan Docker untuk Windows:

echo "export DOCKER_HOST=tcp://0.0.0.0:2375" >> ~/.bashrc && source ~/.bashrc

Ada banyak tutorial "Docker on WSL" yang lebih panjang dan lebih detail, jadi jika Anda menginginkan lebih banyak detail teknis, saya sarankan Anda untuk memeriksanya! Jika Anda menggunakan banyak Volume Mount, menurut saya tulisan Nick sangat berguna.

Sekarang ketika saya menjalankan "gambar buruh pelabuhan" atau apa pun dari WSL, saya berbicara dengan Docker untuk Windows. Berfungsi dengan baik, persis seperti yang Anda harapkan dan Anda berbagi gambar dan wadah di kedua dunia.

128 → $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
podcast test 1bd29d0223da 9 days ago 2.07GB
podcast latest e9dd366f0375 9 days ago 271MB
microsoft/dotnet-samples aspnetapp 80a65a6b6f95 11 days ago 258MB
microsoft/dotnet-samples dotnetapp b3d7f438bad3 2 weeks ago 180MB
microsoft/dotnet 2.1-sdk 1f63052e44c2 2 weeks ago 1.72GB
microsoft/dotnet 2.1-aspnetcore-runtime 083ca6a642ea 2 weeks ago 255MB
microsoft/dotnet 2.1-runtime 6d25f57ea9d6 2 weeks ago 180MB
microsoft/powershell latest 708fb186511e 2 weeks ago 318MB
microsoft/azure-cli latest 92bbcaff2f87 3 weeks ago 423MB
debian jessie 4eb8376dc2a3 4 weeks ago 127MB
microsoft/dotnet-samples latest 4070d1d1e7bb 5 weeks ago 219MB
docker4w/nsenter-dockerd latest cae870735e91 7 months ago 187kB
glennc/fancypants latest e1c29c74e891 20 months ago 291MB

Luar biasa.

Mengode dan Mengedit File

Saya harus mencapai titik ini lagi. Jangan mengubah file Linux menggunakan aplikasi dan alat Windows. Namun, Anda BISA berbagi file dan mengeditnya dengan Windows dan Linux dengan menyimpan kode di sistem file Windows.

Misalnya, pekerjaan saya ada di c:\github jadi juga di /mnt/c/github. Saya menggunakan kode Visual Studio dan mengedit kode saya di sana (atau vim, dari dalam WSL) dan saya menjalankan kode dari Linux. Saya bahkan dapat menjalankan bash/wsl dari dalam Visual Studio Code menggunakan terminal terintegrasinya. Tekan saja "Ctrl+P" di Visual Studio Code dan ketik "Select Default Shell."

Pada edisi Windows 10 Insiders, Windows sekarang memiliki UI yang disebut "Sets" yang akan memberi Anda Tabbed Command Prompts. Di sini saya menginstal Ruby on Rails di Ubuntu di sebelah dua petunjuk lainnya - Cmd dan PowerShell. Ini semua adalah Windows default - tidak ada add-on atau program tambahan untuk pengalaman ini.

Saya menggunakan Rails sebagai contoh di sini karena dukungan Ruby/Rails di Windows dengan ekstensi asli secara historis merupakan tantangan. Ada sekelompok orang yang secara heroik (dan tanpa pamrih) mencoba membuat Ruby on Rails bekerja dengan baik di Windows, tetapi hari ini tidak perlu. Ini berjalan dengan baik di Linux di bawah Windows.

Saya juga dapat menjalankan aplikasi atau alat Windows dari Linux selama saya menggunakan nama lengkapnya dengan ekstensi (seperti code.exe) atau menyetel alias.

Di sini saya telah membuat "kode" alias yang menjalankan kode di direktori saat ini, lalu saya menjalankan VS Code mengedit aplikasi Rails baru saya.

Saya bahkan dapat mencampur dan mencocokkan Windows dan Linux saat melakukan pemipaan. Ini kemungkinan akan membuat orang Windows senang dan sangat menyinggung orang Linux. Atau, jika Anda non-denominasi seperti saya, Anda akan menggalinya!

$ ipconfig.exe | grep IPv4 | cut -d: -f2
172.21.240.1
10.159.21.24

Sekali lagi pengingat:Memodifikasi file yang terletak tidak di bawah /mnt/<x> dengan aplikasi Windows di WSL tidak didukung. Tapi edit barang di /mnt/x dengan apa saja dan kamu keren.

Berbagi Berbagi Berbagi

Jika Anda memiliki Windows 10 Build 17064 atau yang lebih baru (jalankan ver dari windows atau "cmd.exe /c /ver" dari Linux) dan Anda bahkan dapat berbagi variabel lingkungan!

131 → $ cmd.exe /c ver

Microsoft Windows [Version 10.0.17672.1000]

Ada variabel lingkungan khusus yang disebut "WSLENV" yang merupakan daftar variabel lingkungan yang dipisahkan titik dua yang harus disertakan saat meluncurkan proses WSL dari proses Win32 atau Win32 dari WSL. Pada dasarnya Anda memberikan daftar variabel yang ingin Anda jelajahi/bagikan. Ini akan memudahkan hal-hal seperti build ganda lintas platform. Anda bahkan dapat menambahkan tanda /p dan itu akan secara otomatis menerjemahkan jalur antara c:\windows style dan /mnt/c/windows style.

Lihat contoh di Blog WSL tentang cara berbagi GOPATH dan menggunakan VSCode di Windows dan menjalankan Go di kedua tempat.

Anda juga dapat menggunakan baris perintah bawaan khusus yang disebut "wslpath" untuk menerjemahkan nama jalur antara Windows dan WSL. Ini berguna jika Anda berbagi skrip bash, melakukan skrip lintas platform (saya memiliki skrip PowerShell Core yang berjalan di kedua tempat) atau hanya perlu mengganti jenis jalur secara terprogram.

131 → $ wslpath "d:\github\hanselminutes-core"
/mnt/d/github/hanselminutes-core
131 → $ wslpath "c:\Users\scott\Desktop"
/mnt/c/Users/scott/Desktop

Belum ada halaman manual untuk wslpath, tetapi disalin dari masalah GitHub ini, inilah intinya:

wslpath usage:
-a force result to absolute path format
-u translate from a Windows path to a WSL path (default)
-w translate from a WSL path to a Windows path
-m translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

Satu catatan terakhir, setelah Anda menginstal distro Linux dari Windows Store, Anda harus tetap memperbaruinya. Windows Store tidak akan menjalankan "apt upgrade" atau menyentuh Linux Anda setelah diinstal. Selain itu, Anda dapat menginstal Ubuntu 1604 dan 1804 secara berdampingan dan tidak akan merugikan apa pun.

Tautan Terkait

  • Menyiapkan Lingkungan Pengembangan yang Mengkilap dalam Linux di Windows 10
  • Terminal Badass:Pembaruan dotfiles WSL, macOS, dan Ubuntu!!! oleh Jessica Deen

Apakah Anda menggunakan WSL?

Sponsor: Lihat JetBrains Rider:.NET IDE lintas platform. Edit, refactor, uji dan debug aplikasi ASP.NET, .NET Framework, .NET Core, Xamarin atau Unity. Pelajari lebih lanjut dan unduh uji coba 30 hari!


Linux
  1. Cara Mengakses Sistem File Linux di Windows 10 dan WSL 2

  2. Tip dan trik .htaccess Linux

  3. Kali Linux di Windows App Store

  1. Tip dan trik menggunakan CUPS untuk mencetak dengan Linux

  2. Kiat dan trik variabel lingkungan Linux

  3. Tentukan versi OS, Linux dan Windows dari Powershell

  1. 5 Tips dan Trik Command Line yang Menarik di Linux – Bagian 1

  2. Bagus, Buruk, dan Jeleknya Linux Tahun 2014

  3. Tips dan trik menggunakan perintah wget Linux