# The Linux Command Line của William Shotts: nền shell cho FDE trước khi SSH vào máy chủ của khách

> Lúc bạn đăng nhập vào máy chủ của khách hàng, không có giao diện đồ hoạ nào đỡ cho bạn. Cuốn sách miễn phí này dạy đúng phần nền bạn cần cho khoảnh khắc đó.

Bản gốc: https://fdetimes.net/vi/sach-khoa-hoc/sach-linux-command-line-william-shotts-fde/

Thử hình dung: bạn SSH vào máy ảo của khách hàng để xem vì sao pipeline dữ liệu ngừng chạy. Máy đó không có IDE của bạn, không có alias quen tay, còn người phía khách thì đang chờ trên cuộc gọi.

Những phút đầu tiên của phiên đó phụ thuộc vào việc bạn dùng shell thạo đến đâu. *The Linux Command Line* của William Shotts dạy đúng phần nền ấy, và bạn có thể tải bản PDF miễn phí ngay trên trang của tác giả, LinuxCommand.org.

## Một cuốn sách cho người bắt đầu từ số không

Bài điểm sách trên Linux Pro Magazine nhận xét rằng cuốn sách không giả định người đọc biết gì từ trước. Theo bài viết, đây có lẽ là cuốn dễ đọc nhất về chủ đề này, dù vẫn bao quát đủ rộng và đủ sâu.

Nhà xuất bản thì hứa hẹn nhiều hơn: một khoá học trọn vẹn về cách Linux thực sự vận hành. Sách đi qua điều hướng hệ thống file, pipeline, tiến trình, Vim và shell scripting.

Cũng nên biết giới hạn từ đầu. Shotts nói rõ tập *Adventures with the Linux Command Line*, phần bổ sung cho sách, không phải cẩm nang quản trị hệ thống, chỉ là những chủ đề thú vị như Midnight Commander, terminal multiplexer, AWK, Vim và SQL.

Với một FDE, đọc log, chuyển file hay chạy job là việc cần trước; vận hành máy chủ ở mức sâu có thể học từ nguồn khác sau.

## Bốn thói quen nên giữ lại sau khi gấp sách

**Ghép lệnh thay cho click chuột.** Tutorial *Learning the Shell* mở đầu bằng nhận xét rằng giao diện đồ hoạ có ích cho nhiều việc nhưng không hợp với mọi việc. Ở chỗ khách, câu đó thành chuyện rất cụ thể.

Thử một ca giả định: khách báo đĩa đầy. Bạn gõ `df -h` để biết phân vùng nào đầy, rồi `du -sh /var/log/* | sort -h | tail -5` để ra năm thư mục log lớn nhất. Hai dòng lệnh, và bạn có câu trả lời ngay trên cuộc gọi.

**Xem trước shell sẽ biến dòng lệnh thành gì.** I/O Redirection và Expansion là hai trong mười phần của tutorial, và cả hai đều có thể gây lỗi đắt giá trên máy của người khác. Muốn gửi log cho đồng đội, `lệnh > ketqua.txt 2>&1` ghi cả output lẫn lỗi vào một file; thiếu `2>&1`, file gửi đi có thể thiếu đúng dòng báo lỗi.

Expansion còn nguy hiểm hơn. Trước khi chạy `rm` với wildcard trên máy của khách, hãy chạy `echo` với đúng wildcard đó để xem nó sẽ thành danh sách file nào.

**Điểm mấu chốt:** Trên máy chủ của người khác, hãy xem trước lệnh sẽ làm gì rồi mới cho nó chạy.

**Đọc quyền file trước khi xin sudo.** Permissions cũng là một phần của tutorial. Gặp "Permission denied" trong thư mục dữ liệu của khách, hãy đọc `ls -l` để biết file thuộc user và group nào trước khi nhờ đến khách; hỏi đúng chỗ thì đội IT phía khách nể bạn hơn.

**Giữ tiến trình sống khi rớt SSH.** Job Control cứu bạn khi lệnh import chạy dở thì phiên SSH rớt. Cách an toàn nhất là tách nó khỏi phiên từ đầu, ví dụ `nohup ./import.sh > import.log 2>&1 &`, rồi theo dõi bằng `tail -f import.log`.

Nếu lỡ chạy ở tiền cảnh, bấm Ctrl+Z, gõ `bg` rồi `disown`. Với việc kéo dài hàng giờ, mở `tmux` trước khi chạy là thói quen tốt; terminal multiplexer cũng là một chủ đề trong tập *Adventures*.

## Nên đọc theo thứ tự nào?

Người mới với dòng lệnh, hoặc kỹ sư quen làm trên macOS và IDE, nên bắt đầu bằng mười phần của *Learning the Shell*. Hãy gõ lại từng lệnh trên một máy ảo sạch, đừng chỉ đọc.

Sau đó đọc sách để hiểu sâu, và để *Adventures* lại cuối, khi các lệnh cơ bản đã thành phản xạ. Nếu bạn đã viết bash script hằng ngày, có thể đọc lướt và chỉ dừng ở những chương bạn còn ngập ngừng khi gõ.

Về chuyện xin việc, khi đọc tin tuyển FDE, hãy để ý xem công việc có đòi làm trên hạ tầng của khách không; nếu có, nền shell là thứ đáng chứng minh. Thay vì ghi "thành thạo Linux" trong CV, hãy kể một sự cố cụ thể: máy của ai, bạn đã gõ gì, mất bao lâu.

## Bạn đã sẵn sàng SSH vào máy của khách chưa?

Thử trả lời ba câu sau trước khi xem đáp án, rồi chạy lại trên máy ảo.

Câu một: `lệnh 2>&1 > out.txt` và `lệnh > out.txt 2>&1` khác nhau ở đâu? Đáp án: shell đọc redirection từ trái sang phải. Ở cách viết đầu, lỗi được trỏ về chỗ output đang trỏ lúc đó, tức màn hình, nên file chỉ có output; cách viết sau mới gom cả hai vào file.

Câu hai: trong thư mục có `a.tmp`, `b.tmp` và `config.yaml`, `echo rm *.tmp` in ra gì? Đáp án: `rm a.tmp b.tmp`. Nếu dòng in ra có file bạn không muốn mất, bạn vừa tránh được một sự cố.

Câu ba: script đã chạy ở tiền cảnh được 40 phút và mạng đang chập chờn. Bạn làm gì để không mất job nếu phiên SSH rớt? Đáp án: Ctrl+Z, `bg`, `disown`. Lỗi hay gặp nhất là bấm Ctrl+C theo phản xạ, và job đã chạy 40 phút mất trắng.

Trả lời trôi chảy cả ba câu thì bạn đã có phần nền mà cuốn sách hứa hẹn. Nếu còn vấp, hãy quay lại đúng phần tương ứng của tutorial.

## Trước khi tải hoặc mua

Bản miễn phí trên LinuxCommand.org là Seventh Internet Edition, dày 596 trang, phát hành theo giấy phép Creative Commons BY-NC-ND. Bản in thứ ba của No Starch Press dày 544 trang, ISBN 9781718504523, được nhà xuất bản giới thiệu có gần 40 trang nội dung mới.

Ngày phát hành khác nhau tuỳ định dạng: Apple Books ghi bản ebook ngày 17/2/2026, còn Penguin Australia ghi bản bìa mềm ngày 3/3/2026. Bản nào cũng được, miễn là bạn gõ lệnh trên máy ảo trước khi phải gõ trên máy của khách.

**Thử ngay tuần này:**

- Làm hết mười phần của tutorial Learning the Shell trên LinuxCommand.org, chạy từng lệnh trên một máy ảo Linux sạch, không dùng dotfiles của bạn.
- Trả lời ba câu tự kiểm tra ở cuối bài mà không xem đáp án, rồi chạy thử trên máy ảo để biết mình đúng hay sai.
- Viết lại một gạch đầu dòng trong CV, kể một sự cố bạn đã xử lý qua SSH trên một môi trường Linux không phải của bạn.

## Nguồn

- [LinuxCommand.org - The Linux Command Line](https://linuxcommand.org/tlcl.php)

- [The Linux Command Line, 3rd Edition - Penguin Books Australia](https://www.penguin.com.au/books/the-linux-command-line-3rd-edition-9781718504523)

- [The Linux Command Line, 3rd Edition (Apple Books)](https://books.apple.com/fr/book/the-linux-command-line-3rd-edition/id6745158323)

- [LinuxCommand.org - Learning the Shell](https://linuxcommand.org/lc3_learning_the_shell.php)

- [LinuxCommand.org - Adventures with the Linux Command Line](https://linuxcommand.org/lc3_adventures.php)

- [Book Review: The Linux Command Line](https://www.linuxpromagazine.com/index.php/layout/set/print/Online/Features/Book-Review-The-Linux-Command-Line)
