Hướng dẫn cơ bản về dòng lệnh terminal: từ ls, cd, mkdir đến Bash, Git và triển khai công cụ AI
Một hướng dẫn nhập môn terminal dành cho người mới bắt đầu, giải thích các khái niệm cơ bản về Terminal, Shell, Bash, Zsh, đường dẫn, lệnh ls, cd, mkdir, git clone, npm run dev.
Rất nhiều người lần đầu tiếp xúc với dòng lệnh terminal đều thấy nó như một "cửa sổ hacker": không có nút, không có biểu tượng, chỉ toàn lệnh tiếng Anh nối nhau. Đặc biệt khi làm việc với GitHub, Vercel, Node.js, Python, Claude Code, Codex hay các dự án AI Agent, các tài liệu thường xuất hiện các lệnh như ls、cd、mkdir、git clone、npm install、npm run dev, khiến người mới dễ nản.
Nhưng command line không hề bí ẩn như vậy. Về bản chất, nó chỉ là một cách vận hành máy tính khác: thay vì dùng chuột để mở thư mục, tạo file, di chuyển file, mở dự án như bình thường, bạn dùng lệnh bằng chữ để thực hiện những thao tác tương tự.
Bài viết này sẽ giải thích theo hướng trực quan nhất về terminal, Shell, Bash, Zsh, đường dẫn, các lệnh phổ biến, và mối liên hệ giữa chúng với GitHub, Vercel, Python, Node.js và triển khai công cụ AI. Khi nắm các khái niệm này, việc đọc tài liệu open-source, hướng dẫn triển khai website, hay tài liệu của AI tools sẽ nhẹ nhàng hơn rất nhiều.
Một, Terminal, Shell, Bash, Zsh là gì?
Trước khi học command line, cần tách bạch một vài khái niệm thường bị nhầm lẫn.
| Tên | Có thể hiểu như thế nào | Giải thích |
|---|---|---|
| Terminal / Dòng lệnh | Cửa sổ nhập lệnh | Giao diện dòng lệnh bạn mở trên Mac, Linux hoặc Windows |
| Shell | Chương trình giải thích lệnh | Chịu trách nhiệm hiểu lệnh bạn nhập rồi giao cho hệ thống thực thi |
| Bash | Một loại Shell phổ biến | Nhiều tutorial Linux mặc định dùng Bash |
| Zsh | Một loại Shell khác | Trên macOS hiện nay phổ biến hơn là Zsh |
| PowerShell | Shell phổ biến trên Windows | Một trong những môi trường dòng lệnh hiện đại trên Windows |
| Git Bash | Môi trường mô phỏng lệnh kiểu Unix trên Windows | Thường có sau khi cài Git for Windows, phù hợp chạy nhiều lệnh trong tutorial GitHub |
Hiểu nhanh như sau:
Bạn nhập lệnh trong Terminal, Shell chịu trách nhiệm diễn giải lệnh, rồi hệ điều hành mới thực thi.Vì vậy, khi nhiều tutorial nói "mở Bash để chạy lệnh", với người mới có thể hiểu tạm:
Mở terminal, rồi nhập các lệnh này.Lưu ý rằng môi trường dòng lệnh giữa các hệ điều hành có khác nhau một chút. Những lệnh như ls, cd, mkdir, rm trong tutorial Mac/Linux không phải lúc nào cũng giống hệt trên PowerShell của Windows; nhưng nếu dùng Git Bash, WSL hoặc môi trường kiểu Unix thì các lệnh này thường gần với hướng dẫn Mac/Linux hơn.
Hai, Bash thực chất là gì? Vì sao tutorial cứ nhắc tới nó?
Bash là viết tắt của Bourne Again Shell, một trình thông dịch lệnh rất phổ biến. Nhiều máy chủ Linux, tutorial triển khai, README của project open-source đều mặc định dùng Bash hoặc cú pháp Shell gần Bash.
Những cách viết bạn thấy trong tutorial thường liên quan đến thói quen của Bash:
cd my-project && npm installexport OPENAI_API_KEY="your_api_key"python main.py --input data.txtVai trò của Bash không phải để lập trình phức tạp như viết code, mà giúp bạn gộp nhiều thao tác hệ thống lại: vào thư mục dự án, cài dependency, đặt biến môi trường, chạy script, xem log, triển khai dự án.
Với người mới, không cần học ngay Bash script toàn diện. Ban đầu chỉ cần nắm vững mấy nhóm sau là đủ:
- Cách chuyển thư mục;
- Cách xem file;
- Cách tạo, sao chép, di chuyển, xóa file;
- Cách chạy chương trình;
- Cách hiểu tham số và tuỳ chọn;
- Cách đọc các ký hiệu như
&&、|、>、>>; - Cách nhận biết một lệnh có nguy hiểm hay không.
Khi đã quen các nền tảng này rồi, việc học biến, vòng lặp, điều kiện, và file script sẽ không còn gấp gáp nữa.
Ba, cấu trúc cơ bản của command line
Một lệnh đầy đủ thường gồm ba phần:
command [options] [arguments]Ví dụ:
ls -la ~Có thể tách như sau:
| Phần | Ví dụ | Ý nghĩa |
|---|---|---|
| Lệnh Command | ls | Hành động cần thực hiện |
| Tuỳ chọn Options | -la | Thay đổi hành vi của lệnh |
| Đối số Arguments | ~ | Đối tượng mà lệnh tác động |
Lấy thêm ví dụ:
mkdir -p images/iconsNghĩa là: tạo đường dẫn thư mục images/icons; nếu thư mục images chưa có thì cũng tạo luôn.
Nhiều người mới ngại command line vì xem cả dòng lệnh như một chuỗi tiếng Anh khó hiểu. Thực chất chỉ cần tách ra, thường đọc được như sau:
python main.py --input data.txt --output result.mdLệnh này có thể hiểu là:
python: chạy bằng Python;main.py: file script cần chạy;--input data.txt: file đầu vào làdata.txt;--output result.md: file đầu ra làresult.md.
Bốn, đường dẫn: "địa chỉ" trong thế giới command line
Đường dẫn là vị trí của file hoặc thư mục trên máy.
Ví dụ trên Mac:
~/GitHub/LamjinlabWebsiteNó giống như địa chỉ một thư mục:
用户主目录 ~
└── GitHub
└── LamjinlabWebsiteCác ký hiệu đường dẫn thường gặp:
| Ký hiệu | Ý nghĩa | Ví dụ |
|---|---|---|
/ | Dấu phân cách đường dẫn, cũng có thể là thư mục gốc | /Users/yourname |
~ | Thư mục chính của người dùng hiện tại | ~/Desktop |
. | Thư mục hiện tại | ./package.json |
.. | Thư mục cha | cd .. |
Ví dụ:
cd ..Nghĩa là quay lên một cấp thư mục.
Ví dụ khác:
cd ~/GitHub/LamjinlabWebsiteNghĩa là vào thư mục GitHub/LamjinlabWebsite dưới thư mục chính.
Nếu đường dẫn có khoảng trắng, nên đặt trong dấu nháy:
cd "My Projects"Hoặc dùng dấu gạch chéo ngược để escape dấu cách:
cd My\ ProjectsVới người mới, cách dùng dấu nháy trực quan hơn và ít lỗi hơn.
Năm, các lệnh cơ bản thường dùng
Đây là các lệnh mới nên học trước.
1. pwd: xem vị trí hiện tại
pwd = print working directory, nghĩa là in thư mục đang làm việc.
pwdVí dụ đầu ra:
/Users/yourname/GitHub/LamjinlabWebsiteKhi không chắc đang ở thư mục nào, gõ pwd trước.
2. ls: liệt kê file và thư mục
ls = list, nghĩa là liệt kê nội dung thư mục hiện tại.
lsCách dùng phổ biến:
ls -lHiển thị chi tiết.
ls -aHiển thị file ẩn.
ls -laHiển thị cả chi tiết và file ẩn.
File ẩn thường bắt đầu bằng . như:
.env
.gitignore
.DS_StoreTrong đó .env, .env.local thường dùng để lưu cấu hình nhạy cảm như API Key, địa chỉ database, nên không nên đưa lên GitHub bừa bãi.
3. cd: chuyển thư mục
cd = change directory, nghĩa là chuyển sang thư mục khác.
cd DesktopVào thư mục Desktop.
cd ..Lên cấp cha.
cd ~Quay về thư mục chính của người dùng hiện tại.
cd -Quay về thư mục vừa rời đi trước đó.
Điểm này rất tiện khi bạn chuyển qua lại giữa các dự án.
4. mkdir: tạo thư mục
mkdir = make directory, nghĩa là tạo thư mục.
mkdir imagesTạo một thư mục tên images.
Cách viết phổ biến, an toàn hơn:
mkdir -p images/iconsTác dụng của -p là: nếu đường dẫn trung gian chưa có thì tự tạo; nếu thư mục đã tồn tại thì không báo lỗi.
Ví dụ:
mkdir -p ~/ai-agent-workflow-ppt/imagesNghĩa là tạo đường dẫn:
~/ai-agent-workflow-ppt/imagesNếu ai-agent-workflow-ppt chưa tồn tại, nó cũng sẽ được tạo luôn.
5. touch: tạo file rỗng
touch thường dùng để tạo một file rỗng.
touch README.mdLệnh này tạo file tên README.md.
Trong project website, bạn có thể thấy:
touch .env.localThông thường nghĩa là tạo file biến môi trường local để lưu cấu hình như API Key, địa chỉ database.
6. cat、less、head、tail: xem nội dung file
cat giúp xem nhanh nội dung file văn bản.
cat README.mdNếu file ngắn, cat rất tiện; với file dài có thể dùng less để xem theo trang:
less README.mdThao tác hay dùng: nhấn phím Space để lật trang, q để thoát.
Nếu chỉ muốn xem đầu file:
head README.mdNếu chỉ muốn xem cuối file:
tail README.mdKhi xem log, tail rất thường gặp, ví dụ:
tail -f app.log-f có nghĩa là theo dõi file liên tục, thường dùng để quan sát log chạy của chương trình.
7. cp: sao chép file hoặc thư mục
cp = copy, nghĩa là sao chép.
Sao chép file:
cp a.txt b.txtSao chép thư mục thường cần -r:
cp -r images images-backup-r là copy đệ quy, tức là sao chép cả nội dung bên trong thư mục.
8. mv: di chuyển hoặc đổi tên
mv = move, nghĩa là di chuyển.
Đổi tên file:
mv old.md new.mdDi chuyển file:
mv article.md content/posts/ai/Vì vậy mv có hai cách dùng phổ biến: di chuyển file và đổi tên file.
9. rm: xóa file hoặc thư mục
rm = remove, nghĩa là xóa.
Xóa file:
rm test.txtXóa thư mục:
rm -r test-folderNgười mới cần hết sức cẩn thận với rm, đặc biệt là:
rm -rf some-folder-r là xóa đệ quy, -f là xóa cưỡng bức. Lệnh này không đưa file vào thùng rác như GUI, mà xóa trực tiếp, nên phải kiểm tra đường dẫn kỹ trước khi chạy.
10. echo: in chuỗi ký tự
echo dùng để in một đoạn văn bản, thường kết hợp > hoặc >> để ghi vào file.
echo "hello"Kết quả:
helloGhi vào file:
echo "hello" > test.txtDòng này ghi hello vào test.txt.
Sáu, mẹo tương tác thường dùng
1. Tự động hoàn thành bằng Tab
Sau khi nhập một phần lệnh hoặc tên file, nhấn Tab, terminal sẽ cố gắng tự động hoàn tất.
Ví dụ trong thư mục hiện tại có folder:
LamjinlabWebsiteBạn có thể nhập:
cd LamRồi nhấn Tab, hệ thống có thể tự điền thành:
cd LamjinlabWebsite2. Dùng phím mũi tên lên/xuống xem lịch sử lệnh
Nhấn ↑ để lấy lệnh trước, nhấn ↓ để đi về phía sau.
Rất hữu ích khi phải chạy lại nhiều lệnh, ví dụ:
npm run devNếu lệnh này vừa chạy gần đây, bấm ↑ sẽ lấy lại ngay, không cần gõ lại.
3. Ctrl + C để dừng chương trình
Nếu một lệnh chạy mãi hoặc bạn muốn dừng chương trình hiện tại, nhấn:
Ctrl + CVí dụ server dev local, script Python, chương trình Node.js đều có thể dừng bằng cách này.
4. clear xóa màn hình
Nếu nội dung terminal quá nhiều, nhập:
clearĐể làm sạch khu vực hiển thị hiện tại.
5. history xem lịch sử lệnh
Khi cần tìm lại các lệnh đã chạy:
historyNó sẽ liệt kê một loạt lịch sử. Người mới có thể dùng để rà lại mình vừa làm gì.
Bảy, giải thích các ký hiệu thường gặp
1. &&: chạy lệnh tiếp theo nếu lệnh trước thành công
Ví dụ:
mkdir -p images && lsNghĩa là: tạo thư mục images trước, nếu thành công mới chạy ls để xem nội dung thư mục hiện tại.
2. ;: luôn chạy lệnh sau, bất kể lệnh trước thành công hay không
Ví dụ:
mkdir images; lsNghĩa là: thử tạo thư mục images, rồi chạy ls; kể cả khi bước trước lỗi, bước sau vẫn có thể tiếp tục chạy.
Vì vậy khi cài dependency hoặc triển khai dự án, nên ưu tiên hiểu && vì nó nhấn mạnh "bước trước thành công mới vào bước tiếp".
3. |: toán tử pipe
Pipe sẽ đưa kết quả đầu ra của lệnh trước cho lệnh sau xử lý tiếp.
Ví dụ:
ls | grep "mdx"Nghĩa là: liệt kê nội dung thư mục rồi lọc ra các dòng chứa mdx.
4. > và >>: chuyển hướng output
> ghi output vào file và ghi đè nội dung cũ:
echo "hello" > test.txt>> thêm output vào cuối file:
echo "world" >> test.txtNgười mới cần lưu ý: > sẽ ghi đè nội dung, nên hãy kiểm tra trước khi dùng.
5. *: ký tự đại diện
* đại diện cho nhiều ký tự.
Ví dụ:
ls *.mdNghĩa là liệt kê tất cả file có đuôi .md trong thư mục hiện tại.
Ví dụ khác:
rm *.logNghĩa là xóa toàn bộ .log trong thư mục hiện tại. Lệnh này có rủi ro xóa nên hãy xác nhận kỹ vị trí trước khi chạy.
Tám, hiểu lệnh qua ví dụ thực tế
Ví dụ bạn thấy một lệnh như:
mkdir -p ~/ai-agent-workflow-ppt/images && ls ~/ai-agent-workflow-ppt/Có thể tách thành hai phần:
mkdir -p ~/ai-agent-workflow-ppt/imagesNghĩa là tạo thư mục images trong dự án.
ls ~/ai-agent-workflow-ppt/Nghĩa là xem nội dung thư mục ai-agent-workflow-ppt.
Ký hiệu && ở giữa nghĩa là:
Lệnh tạo ở trước phải thành công mới thực hiện lệnh xem ở sau.Như vậy cả lệnh có ý:
Đầu tiên tạo thư mục images, rồi xem nội dung thư mục dự án.Các lệnh dạng này thường an toàn vì chỉ tạo thư mục và xem danh sách, không có thao tác xóa.
Chín, lệnh dòng lệnh và GitHub liên quan gì nhau?
GitHub là nền tảng lưu trữ của nhiều dự án open-source, còn Git là công cụ quản lý phiên bản. Dự án trên GitHub bạn nhìn thấy thường cần Git để tải về máy.
Lệnh phổ biến nhất là:
git clone https://github.com/example/project.gitLệnh này nghĩa là sao chép repository GitHub từ xa về máy của bạn.
Sau khi tải, thường vào thư mục dự án:
cd projectRồi xem file dự án:
lsNhiều README open-source viết:
git clone https://github.com/example/project.git
cd project
npm install
npm run devNgười mới không nên copy toàn bộ rồi chạy một lần. Cách tốt hơn là hiểu từng dòng:
1. git clone: tải dự án; 2. cd project: vào thư mục dự án; 3. npm install: cài dependency; 4. npm run dev: khởi động server phát triển.
Như vậy bạn biết từng bước đang làm gì và dễ truy vết lỗi hơn.
Mười, command line và Node.js, npm liên quan thế nào?
Nhiều dự án web, dự án front-end, Next.js, Vercel đều dùng Node.js và npm.
npm có thể hiểu là công cụ quản lý package trong hệ sinh thái Node.js. Các công dụng phổ biến gồm cài dependency, chạy script, khởi tạo server phát triển, build dự án.
Các lệnh phổ biến:
npm installCài dependency dự án, thường đọc file package.json ở thư mục hiện tại.
npm run devChạy script dev được định nghĩa trong package.json, thường dùng để khởi động local dev server.
npm run buildChạy script build, thường để tạo bản production.
npm startChạy script start, hành vi tùy thuộc project định nghĩa trong package.json.
Vì vậy khi thấy npm run dev, bạn không cần chỉ nhớ máy móc. Hãy mở package.json xem ví dụ như:
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}Điều này có nghĩa là:
npm run devthực thi thực chất lànext dev;npm run buildthực thi thực chất lànext build;npm startthực thi thực chất lànext start.
Nắm được điều này thì tutorial dự án frontend sẽ rõ hơn nhiều.
Mười một, command line và Python, AI tools liên quan gì?
Nếu bạn chỉ duyệt web, có thể không cần command line. Nhưng nếu muốn dùng thêm AI tools, project open-source và workflow tự động hóa, command line gần như không thể tránh.
Ví dụ:
python main.pyDùng để chạy script Python.
python -m venv .venvDùng để tạo virtual environment của Python.
pip install -r requirements.txtDùng để cài dependency cho dự án Python.
vercel deployDùng để triển khai dự án website.
claudeCó thể dùng để khởi chạy các công cụ CLI kiểu Claude Code, tùy cách cài đặt của bạn.
Nhiều dự án AI Agent, Claude Code, Codex, Cursor, Next.js, FastAPI, Vercel về bản chất đều nhờ command line để cài, chạy, debug và deploy.
Vì vậy học command line không phải để "trông có vẻ chuyên nghiệp", mà để thực sự kiểm soát project của mình.
Mười hai, lỗi người mới dễ mắc
1. Không biết đang ở thư mục nào
Giải pháp:
pwdXác nhận vị trí trước.
2. Gõ sai đường dẫn
Giải pháp: dùng nhiều hơn Tab autocomplete, giảm việc gõ tay đường dẫn dài.
3. Quên phân biệt chữ hoa/thường trong tên file
Nhiều hệ thống, chữ hoa/thường trong tên file ảnh hưởng đến thực thi lệnh.
Ví dụ:
README.md
readme.mdChúng có thể được xem là hai file khác nhau.
4. Dùng sai lệnh xóa
Đặc biệt:
rm -rfCần xác nhận đường dẫn thật kỹ trước khi chạy, không copy nguyên văn lệnh lạ rồi thi hành ngay.
5. Copy lệnh lạ rồi chạy ngay
Đây là thói quen nguy hiểm nhất của người mới. Trước khi chạy bất kỳ lệnh nào, nên hiểu ít nhất ba câu:
- Lệnh này có thể xóa file không?
- Lệnh này có thể ghi đè file không?
- Lệnh này có thể đẩy thông tin nhạy cảm ra ngoài không?
Nếu lệnh có rm -rf, sudo, curl ... | bash, chmod 777, >... thì càng cẩn trọng.
6. Không đọc thông báo lỗi
Nhiều lỗi đã chỉ rõ điểm sai. Ví dụ:
No such file or directoryThường có nghĩa là file/thư mục không tồn tại, có thể do đường dẫn sai.
Permission deniedThường có nghĩa là không có quyền thực thi hoặc truy cập.
command not foundThường có nghĩa là lệnh không tồn tại, có thể do công cụ chưa cài hoặc biến môi trường chưa cấu hình.
EADDRINUSEHay gặp ở local dev server, nghĩa là port đã bị chiếm. Ví dụ port 3000 đã có một dự án đang chạy.
Mười ba, trình tự học gợi ý
Nếu bạn là người mới hẳn, mình gợi ý theo thứ tự:
1. Học trước pwd、ls、cd, hiểu mình đang ở đâu; 2. Sau đó học mkdir、touch、cp、mv, hiểu cách tạo và di chuyển file; 3. Rồi học rm một cách thận trọng, biết cách xóa file nhưng không lạm dụng; 4. Tiếp theo học cat、less、head、tail, học xem file và log; 5. Tiếp tục học &&、|、>、>>, hiểu cách ghép các lệnh; 6. Cuối cùng học git clone、npm install、npm run dev、python main.py, đưa command line vào dự án thực tế.
Chỉ cần nắm các nội dung này, bạn đã có thể hiểu phần lớn lệnh cơ bản trong README của rất nhiều project GitHub.
Mười bốn, kết luận
Command line không phải huyền bí, cũng không phải công cụ cao cấp chỉ dành cho lập trình viên. Nó chỉ là một cách vận hành máy tính khác.
Bạn có thể hiểu như sau:
Giao diện đồ họa thao tác máy tính bằng chuột và nút bấm;
Dòng lệnh thao tác máy tính bằng chữ và chỉ thị.Khi bạn đã thuộc các lệnh cơ bản như ls、cd、mkdir、pwd、git clone、npm run dev, việc học tiếp các tài liệu về GitHub, Vercel, Python, Node.js, Claude Code, AI Agent sẽ mạch lạc hơn nhiều.
Điều quan trọng không phải là nhớ hết lệnh một lần, mà là quen dần qua thực hành. Khi gặp lệnh không hiểu, hãy tách ra đọc: nó làm gì? Tuỳ chọn là gì? Mục tiêu tác động là ai? Như vậy command line sẽ không còn là một dãy ký tự lạ, mà trở thành công cụ bạn hiểu, kiểm soát và tái sử dụng được.
Câu hỏi thường gặp
Bài này phù hợp với trình độ nào?
Xem phần "đối tượng áp dụng" trong nội dung chính; chuyên mục Lập trình của trang này có bài từ cơ bản đến quy trình AI programming ở nhiều cấp độ, mỗi bài đều có nền tảng giả định khác nhau.
Công cụ hoặc lệnh trong bài có khác nhau giữa các hệ thống không?
Có. Môi trường terminal, định dạng đường dẫn và cú pháp lệnh trên macOS, Linux, Windows có khác biệt. Nếu bài không chỉ rõ hệ thống cụ thể, nên đối chiếu tài liệu chính thức để điều chỉnh.
Nên kết hợp học lập trình với công cụ AI nào?
Claude Code và Codex hiện là hai AI coding tool có năng lực mạnh, có thể dùng để giải thích code, hoàn thiện logic, debug lỗi và sinh script. Giới thiệu công cụ có thể tham khảo bài CC Switch và bộ câu hỏi phỏng vấn Vibe Coding.
Thói quen quan trọng nhất khi học lập trình là gì?
Làm thực hành quan trọng hơn xem tutorial. Nên sớm chọn một dự án thật (dù nhỏ) để luyện, khi gặp khó khăn hãy đọc tài liệu và code, thay vì chỉ đọc xong lý thuyết rồi dừng.
Nguồn tham khảo
- GNU Bash Reference Manual
- GNU Bash Manual:Shell Commands
- GNU Coreutils Manual
- GNU Coreutils:mkdir invocation
- Apple Support:Terminal User Guide for Mac
- Microsoft Learn:Windows Terminal Documentation
- Git Documentation:git clone
- Pro Git Book
- npm Docs:scripts
- npm Docs:npm-run-script
- The Art of Command Line
- MDN Web Docs
Terminal là môi trường nền tảng của các công cụ AI programming. Nếu muốn tìm hiểu sâu hơn về cách dùng Claude Code hoặc Codex trong terminal, có thể tham khảo Bài giới thiệu công cụ CC Switch và bộ câu hỏi phỏng vấn Vibe Coding.
Share