Cách Tôi Setup PowerShell Vả Vỡ Mồm Bash

Cách Tôi Setup PowerShell Vả Vỡ Mồm Bash

Powershell thứ làm dev C# buồn chán vì syntax dài dòng mà dễ hiểu đến đau lòng


Chào các bạn, tôi là PowerShell

Bạn nghĩ rằng Bash là "đỉnh của chóp" trong thế giới shell? Thôi xong, bạn đã nhầm. Tôi là PowerShell, ngầu hơn, mạnh mẽ hơn, và đặc biệt là... dễ khiến các dev C# cảm thấy “quen quen mà lạ lạ”.

Hôm nay, tôi sẽ hướng dẫn bạn cách setup PowerShell sao cho vả Bash lăn đùng ra chấn thương tâm lý, và cũng tiện khiến các dev C# cảm thấy như đang code trong Visual Studio nhưng đầy cảm giác quyền lực.


Bước 1: Cài Đặt PowerShell

Để trở nên quyền năng, đầu tiên bạn phải cài đặt PowerShell.

1. Windows

Có sẵn rồi. Win + X, chọn Terminal, PowerShell cười nhếch mép: "Bash đâu? Để tôi xử lý!"

2. Mac và Linux

# Tải về PowerShell
brew install --cask powershell # Nếu bạn là fan của Homebrew trên Mac
sudo apt-get install powershell # Nếu bạn yêu thích Ubuntu

Bước 2: Tùy Biến Như Một "Pro"

PowerShell không chỉ là Shell, nó là IDE thu nhỏ dành cho Console.

1. Gắn Theme Ngầu Như DevOps

Install-Module oh-my-posh -Scope CurrentUser
oh-my-posh init pwsh | Out-String | Invoke-Expression
Set-PoshPrompt -Theme Paradox

Kết quả: Giao diện đỉnh cao khiến Bash nhìn phát khóc. Bạn sẽ có một prompt vừa màu mè vừa chuyên nghiệp như hacker thực thụ

2. Tích Hợp Công Cụ Ghi Log Và Debug

Install-Module PSReadLine -Force
Set-PSReadLineOption -EditMode Windows

Bây giờ, bạn gõ nhầm là nó highlight đỏ mặt luôn. Dev Bash thì sao? Gõ sai phát, nó bảo "command not found". Sad story.


Bước 3: Lập Trình Như Dev C# (Nhưng Tự Hào Là Dev PowerShell)

Làm việc với JSON dễ hơn đập hộp iPhone

Trong Bash:

cat file.json | jq '.key'

Trong PowerShell:

$json = Get-Content -Path "file.json" | ConvertFrom-Json
$json.key

Rõ ràng, Bash xử lý JSON như một ông cụ khó tính. PowerShell thì lại giống người bạn cùng lớp nhiệt tình, "để tôi parse cho, bạn cứ xài!"


Xử Lý Hệ Thống File

Bash:

mv file1.txt /path/to/destination/

PowerShell:

Move-Item -Path file1.txt -Destination /path/to/destination/

Syntax dài dòng hơn? Có chứ! Nhưng đây là cách dev C# yêu thích: “Dài nhưng rõ ràng, không cần đoán mò” 🤥🤥🤥.


Tập hợp vũ khí mạnh nhất: z, scoop, fzf và hơn thế nữa!

1. Cài z - Kẻ lười biếng trong PowerShell

Bạn đã bao giờ cảm thấy việc gõ cd chuyển thư mục thật mệt mỏi? Đừng lo, z sẽ giải cứu bạn.

Lợi ích của z:

  • Chỉ cần nhớ vài chữ cái trong tên thư mục và gõ:powershellSao chép mãz proj
    (PowerShell sẽ dịch bạn tới thư mục C:\Users\*****\Documents\MyAwesomeProjects mà không cần gõ cả đống ký tự!)

Cách cài z trong PowerShell:

  1. Cài PSReadLine nếu chưa có:
Install-Module PSReadLine -Scope CurrentUser -Force
  1. Cài z bằng scoop (nếu đã cài scoop, nếu chưa thì đọc mục sau 😁):
scoop install z
  1. Thêm đoạn này vào profile của bạn ($PROFILE):
Import-Module z

2. Scoop - Package Manager đỉnh cao của Windows

Bạn có thể nghĩ rằng chỉ Linux mới có các package manager như apt hay yum. Nhưng không! Windows cũng có Scoop, và nó dễ thương không kém gì Bash.

Cách cài Scoop:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

Đoạn trên là Bash style, đúng kiểu dân chơi, nhưng chạy trên PowerShell 😎!

Lợi ích của Scoop:

  • Cài phần mềm siêu nhanh:
scoop install fzf
  • Quản lý dễ dàng: cập nhật toàn bộ phần mềm:
scoop update *

3. FZF - Tìm kiếm thần tốc

Bạn đã nghe qua cụm từ "mọi thứ chỉ là một cú gõ phím"? FZF chính là minh chứng cho điều đó.

FZF là gì?

  • Một công cụ tìm kiếm fuzzy giúp bạn tìm mọi thứ trong terminal: thư mục, file, thậm chí cả lịch sử lệnh.
  • Ví dụ:
Get-ChildItem | fzf

Cài FZF với Scoop:

scoop install fzf

Tích hợp FZF với PowerShell:

  1. Thêm đoạn sau vào $PROFILE:
function fcd {
    Set-Location -Path (Get-ChildItem -Directory | fzf | ForEach-Object { $_.FullName })
}
  1. Bây giờ, bạn chỉ cần gõ fcd để tìm và chuyển tới thư mục. Không cần cd nhàm chán nữa 🫠!

Những Cú Vả Đau Thấu Của PowerShell

  1. Tương tác với .NET
    PowerShell:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("Hello from PowerShell!")

Bạn thấy Bash làm được điều này chưa? Không. Bash là ông chú bảo thủ, thích mọi thứ text-based. PowerShell thì hiện đại, thích GUI và biết chơi lớn.

  1. Pipeline mạnh mẽ hơn Bash
    Bash:
ls | grep "abc" | awk '{print $1}'

PowerShell:

Get-ChildItem | Where-Object {$_.Name -like "*abc*"} | Select-Object Name

Nhìn code Bash giống như bạn đang học võ trong truyện kiếm hiệp. Code PowerShell lại giống như đang tham gia lớp học toán logic cấp đại học. Dễ hiểu hơn và mạnh mẽ hơn!


Bonus: Hài Kịch PowerShell và Dev C#

  • Dev C#: "Ơ, syntax dài dòng nhưng mà giống code C# nhỉ!"
  • PowerShell: "Đúng vậy, tôi là con lai của Bash và .NET Framework!"
  • Bash: "Thôi đừng so sánh, tôi xấu hổ lắm rồi 🥲🥲🥲"

Tạm Kết

PowerShell không chỉ là một công cụ, nó là tuyên ngôn: “Tôi làm việc thông minh hơn”. Nếu bạn là fan của C#, thích rõ ràng, cấu trúc, và đầy sức mạnh, hãy thử PowerShell ngay!

Bash à, không ghét bạn đâu, nhưng mà... giờ tôi thích PowerShell hơn. 😏

To Be Continued...

Thật ra, còn rất nhiều thứ hay ho mà mình chưa kịp kể. Bạn nghĩ đây là "setup PowerShell vả vỡ mồm Bash", nhưng thực ra tôi chỉ mới… bật chế độ "warm up" thôi!

  • Chưa kể tới cách tích hợp Git thần thánh với PowerShell.
  • Chưa kịp khoe profile PowerShell đẹp lung linh như bầu trời đêm đầy sao.
  • Chưa dám tiết lộ cú twist rằng bạn vẫn sẽ dùng Bash trong WSL để chơi cả hai bên.
  • Chưa muốn hô to trong nhà nuôi con AI làm thú cưng bằng copilot trong Powershell.

Vì vậy, hãy chuẩn bị sẵn tâm lý chờ phần tiếp theo.

Đừng quên chia sẻ kinh nghiệm của bạn với mình ở phần comment ???. Chúng ta cùng tạo nên cuộc cách mạng PowerShell nào! 🎉