Linux Introduction

41
H ĐIU HÀNH LINUX NHNG TÌM HIU CƠ BN H và tên: Mã Sinh viên: Lp: Đinh Xuân Sâm 081C900130 08I2 1 1

Transcript of Linux Introduction

Page 1: Linux Introduction

HỆ ĐIỀU HÀNH LINUX

NHỮNG TÌM HIỂU CƠ BẢN

Họ và tên:Mã Sinh viên:Lớp:

Đinh Xuân Sâm081C900130

08I2

1 1

Page 2: Linux Introduction

MỤC LỤC MỤC LỤC

Mục lục

I Hệ thống Linux 3

1 System Info 3

II Basic 4

2 Khởi động hệ thống 52.1 Quá trình “Khởi động” . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Các tùy chọn: . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.2 Boot : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Đăng nhập, đăng xuất 73.1 Đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.1.1 GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.1.2 CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.2 Đăng xuất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.1 GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.2 CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.3 Sumary: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4 Làm quen với Command line 104.1 Shell & Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.1.1 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.1.2 bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.1.3 Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4.2 Lệnh căn bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.2.1 Khởi động một Shell . . . . . . . . . . . . . . . . . . . . . . 114.2.2 Căn bản sử dụng lệnh . . . . . . . . . . . . . . . . . . . . . 124.2.3 Một số lưu ý . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.2.4 Các ví dụ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

5 man, info và -h 145.1 -h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5.1.1 Thông tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155.1.2 Ví dụ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5.2 man và info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2.1 man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2.2 info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 2

Page 3: Linux Introduction

MỤC LỤC MỤC LỤC

III File, Folder & Permission 19

6 Everything is file 20

7 Directories Structure 207.1 Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

7.1.1 Ví dụ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

8 File & Folder Permission 238.1 Quyền hạn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258.2 Thay đổi quyền hạn đối với một tệp tin, thư mục . . . . . . . . . . 26

9 Thao tác với các tệp tin, thư mục 289.1 Một số thao tác cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . 28

10 Thay đổi quyền hạn đối với tệp tin 30

11 Copy, nén, giải nén, lưu trữ tệp 31

IV Redirection and Pipe 32

12 Khái niệm 3312.1 Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3312.2 Pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3412.3 Redirection & Pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

13 Ví dụ ngắn: 3413.1 Tạo tệp mới sử dụng Redirection và Pipe . . . . . . . . . . . . . . . 3413.2 Đếm số lượng tệp và thư mục trong thư mục bất kỳ . . . . . . . . . 3513.3 Đếm số lượng thư mục con của một thư mục bất kỳ . . . . . . . . . 3513.4 Đếm số từ của một dòng bất kỳ trong một tệp văn bản . . . . . . . 3613.5 Liệt kê các tệp, thư mục con . . . . . . . . . . . . . . . . . . . . . . 3613.6 Đếm tổng số tiến trình . . . . . . . . . . . . . . . . . . . . . . . . . 3613.7 Đếm số lượng người dùng đã đăng ký . . . . . . . . . . . . . . . . . 3713.8 Đếm số lượng người dùng đang đăng nhập . . . . . . . . . . . . . . 3713.9 Ví dụ hơi ngắn :3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

13.9.1 Tình huống, yêu cầu, hướng giải quyết: . . . . . . . . . . . . 3713.9.2 Điều kiện thực tế: . . . . . . . . . . . . . . . . . . . . . . . . 3813.9.3 Tiến hành: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

14 env 39

3 3

Page 4: Linux Introduction

DANH SÁCH BẢNG DANH SÁCH HÌNH VẼ

Danh sách bảng

1 Thông tin hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Ký hiệu một số thư mục đặc biệt . . . . . . . . . . . . . . . . . . . 223 File Permission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Bin ↔ Dec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Standard Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Danh sách hình vẽ

1 Cấu trúc thư mục của Linux . . . . . . . . . . . . . . . . . . . . . . 212 Kết quả của lệnh ls -lh . . . . . . . . . . . . . . . . . . . . . . . . 243 Chi tiết nội dung của trường thứ chứa thông tin quyền hạn . . . . . 254 Standard Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Redirection and Pipe . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 4

Page 5: Linux Introduction

1 SYSTEM INFO

Phần I

Hệ thống Linux

1 System Info

Đây là hệ thống Linux được sử dụng để tiến hành việc tìm hiểu và thực hành vớiLinux.

System Information

i686-pc-linux-gnu

OS : Linux

Version : 3.0.6-gentoo

Platform : i686

Distributor : Gentoo

Description : Gentoo Base System

Release : 2.0.3

— More —

Apps : Version

Bash : 4.1.9

GCC : 4.5.3-r1

GRUB : 0.97

GDB : 2.20.11

— WM —

Awesome : 3.4.9

Bảng 1: Thông tin hệ thống

5 5

Page 6: Linux Introduction

Phần II

Basic

6 6

Page 7: Linux Introduction

2 KHỞI ĐỘNG HỆ THỐNG

2 Khởi động hệ thống

Yêu cầu: Khởi động hệ thống.

Quá trình khởi động một hệ thống Linux cũng khá đơn giản, ở đây đúng với hệthống trên, tức một chiếc PC chạy Linux, dùng GRUB 0.97 làm bootloader.

Tất nhiên cũng có sự khác nhau ít nhiều giữa các hệ thống Linux, ví dụ: mộtmáy chủ hẳn sẽ khác với một PC, hay những máy sử dụng các bootloader khácnhau, hay cấu hình các bootloader khác nhau, vv. . .

Việc khởi động một hệ thống nói chung thường được ngầm hiểu là khởi độngmột hệ thống đã được cái đặt sẵn trên ổ đĩa cứng HDD của máy. Việc khởi độngtừ cdrom hay một thanh USB Flash, thậm chí qua mạng LAN là thường đượcdùng trong quá trình cài đặt hệ thống.

Tuy nhiên, đối với Linux, còn có khái niệm Live Mode, tức những bản phânphối (Distro) Linux có thể chạy trực tiếp từ CDROM hay một thanh USB Flash,nên việc khởi động (boot) một bản Linux còn có thể tiến hành từ cdrom, hay usbflash bất kỳ. Và sau khi khởi động là quá trình sử dụng hệ thống đó, chứ khôngphải là quá trình cài đặt.

Điều này chúng ta có thể thấy rất rõ ở một số bản phân phối Linux phổ biếnnhư Ubuntu, Linux Mint, Fedora. Hay các đĩa cứu hộ recurse, tất nhiên cũng sửdụng nhân (Kernel) Linux như Parted Magic, Gparted, vv. . .

Đặc điểm này rất khác biệt đối với Windows - như chúng ta từng quen. Khinhắc đến việc khởi động từ cdrom hay usb thì đối với Windows, có chăng là quátrình cài đặt hệ thống.

Đây thực sự là điểm mạnh của các bản phân phối Linux, nhờ đó, chúng ta cóthể trải nghiệm các bản phân phối Linux trước khi cài đặt vào HDD.

Việc boot Linux từ LAN (PXE chẳng hạn.) thường1 là trong quá trình cài đặtmột hệ thống mới. Quá trình này chúng ta cần các file boot của bản phân phốimuốn cài đặt, một tftp server, hoặc thêm một dhcp server, nếu cần.

2.1 Quá trình “Khởi động”

Bây giờ là chi tiết quá trình khởi động hệ thống [1] đã được nêu trên. Việc đầutiên chúng ta cần làm đó là bấm nút nguồn (Power) của máy. Thực ra không phải,mà là kiểm tra nguồn điện cho máy đã sẵn sàng chưa, việc bấm nút nguồn là thaotác tiếp theo :).

Giả sử mọi việc diễn ra tốt đẹp. Sau quá trình POST của BIOS ta sẽ gặpmenuboot2 của bootloader Đây là danh sách các Hệ điều hành tùy chọn để khởi

1Tức đa số các trường hợp2Thực ra có thấy hay không thấy là việc chúng ta cấu hình bootloader như thế nào.

7 7

Page 8: Linux Introduction

2.1 Quá trình “Khởi động” 2 KHỞI ĐỘNG HỆ THỐNG

động. Một mục (entry) của menuboot tương ứng một Hệ điều hành chúng ta cóthể khởi động3.

Menuboot có thể rất khác đối với các bootloader khác nhau hoặc các phiênbản (version) khác nhau của cùng một bootloader (GRUB 1 vs GRUB 2) hay cáccấu hình khác nhau đối với cùng một bootloader.

2.1.1 Các tùy chọn:

Tại menuboot chúng ta có thể lựa chọn các mục để khởi động Hệ điều hành tươngứng. Ngoài ra, chúng ta còn có thể thực hiện một số thao tác khác. Đối với hệthống này bootloader là GRUB 1, nên có một số lựa chọn dễ thấy như sau:

e: Chỉnh sửa mục đang được chọn. Chúng ta sử dụng lệnh này để chỉnh sửa, thêmbớt các tùy chọn đối so với cấu hình vốn có.

c: Vào chế độ lệnh (command mode) của GRUB. Tại đây bạn có thể sử dụng cáclệnh của GRUB4 để có những thao tác cao cấp (Advance) hơn. Ví dụ, bootmột OS hay một phiên bản nhân Linux nào đó bằng tay (Manually). Điềunày khá thú vị5!. :)

b: Nhấn phím này để boot.

2.1.2 Boot :

Trong trường hợp đối với hệ thống này, tôi sẽ chọn mục có dòng: “Gentoo withlinux-3.0.6-gentoo-n2i6”, rồi nhấn Enter. Và quá trình khởi động hệ thống mới thựcsự bắt đầu.

Trong suốt quá trình boot hệ thống, chúng ta sẽ thấy những gì đang diễn rađược hiện lên trên màn hình, nếu bạn không sử dụng splash7, hoặc ít nhất là trướckhi splash được hiển thị.

Quá trình khởi động kết thúc, sẽ đưa ta đến màn hình đăng nhập vào hệ thống.Chuyển sang mục “Đăng nhập, đăng xuất”.

3Thực ra với Linux thì đó có thể là một nhân khác, hoặc cùng một nhân nhưng với nhữngtùy chọn boot - dành cho bootloader, khác.

4Thực ra GRUB cũng chỉ là một chương trình.5Thực ra là đôi khi thôi!6Thực ra tôi cũng không nhớ chính xác, nhưng cũng chẳng quan trọng :).7Thực ra điều này cũng còn tùy chúng ta sử dụng splash như thế nào.

8 8

Page 9: Linux Introduction

3 ĐĂNG NHẬP, ĐĂNG XUẤT

3 Đăng nhập, đăng xuất

3.1 Đăng nhập

Màn hình đăng nhập có thể là chế độ đồ họa (GUI ) hoặc chế độ dòng lệnh (CLI ).Việc chuyển đổi qua lại 2 chế độ này rất dễ dàng và nhanh chóng. Hai chế độ cóthể khác nhau đôi chút, nhưng về “roadmap” chung thì đều giống nhau, tức: nhậpusername, nhập password và đăng nhập.

3.1.1 GUI

Nếu màn hình đăng nhập là giao diện đồ họa, thì màn hình đang nhập rất có thểlà “theme” của một chương trình nào đó, được gọi là các chương trình “DisplayManager “ - viết tắt là DM. Có rất nhiều chương trình như thế, có thể liệt kê mộtsố như: GDM (Gnome Display Manager), KDM (KDE Display Manager), XDM(X Display Manager), WDM (Wing Display Manager), Slim, Quigy, vv. . .

Giao diện đăng nhập có thể rất khác nhau, tùy thuộc vào chúng ta sử dụngDM nào, và đương nhiên, là tùy thuộc việc chúng ta cấu hình DM đó như thế nàonữa. Tất nhiên, việc thao tác thì cũng rất đơn giản - như trên đã nói.

Đối với tôi, trên hệ thống này, sử dụng GDM làm DM, với chủ đề (theme)login-scan-fusion, và thao tác đăng nhập của tôi:

1. Nhập n2i → Nhấn “Enter”.

2. Nhập ************ → Nhấn “Enter”.

Xong. ./

3.1.2 CLI

Việc đăng nhập từ chế độ dòng lệnh cũng không khác là bao, thao tác cũng khôngcó nhiều và cũng chằng khó gì hơn so với sử dụng GUI cả. Có điều, việc đăng nhậptừ CLI thường . . . nhanh hơn! :) Ví dụ:

n2i-System login: n2i

Password:

n2i@n2i-System ~ $_

Chú giải:

n2i-System: hostname.

n2i: username.

Password: Chỉ thị nhập mật khẩu password để xác thực thao tác đăng nhập.

9 9

Page 10: Linux Introduction

3.2 Đăng xuất 3 ĐĂNG NHẬP, ĐĂNG XUẤT

∼: Thư mục nhà (home) của người dùng hiện tại, trong trường hợp này tức/home/n2i/.

$: Dấu nhắc lệnh chỉ thị rằng đây là người dùng bình thường8.

Lưu ý: Tại chỉ thị nhập mật khẩu, Linux sẽ không hiện bất cứ ký tự nào khibạn đang nhập mật khẩu, bạn chỉ cần nhập đúng mật khẩu của mình là được. Nếumuốn chỉnh sửa? Bạn có thể! Cứ dùng phím Backspace trên bàn phím và xóa đinhững ký tự bạn cho rằng là sai, tất nhiên bạn phải nhớ là mình đã nhập nhữnggì :), và đánh lại các ký tự cần thiết. Tốt hơn hết là xóa hết tất cả nếu bạn cảmgiác là sai ở đâu đó, sau đó đánh lại mật khẩu. Điều này sẽ chắc chắn hơn.

Đến đây chúng ta đã xong việc “Đăng nhập” vào hệ thống.

3.2 Đăng xuất

Các thao tác đăng xuất khỏi phiên làm việc cũng rất đơn giản, thậm chí đơn giảnhơn việc đăng nhập vào hệ thống nhiều. Điều đó dẫn đến thời gian để quá trìnhđăng xuất diễn ra cũng rất nhanh, thường là trong nháy mắt. Có nhiều trườnghợp, nhưng chúng ta sẽ chia ra hai trường hợp như trên mục “Đăng nhập” đã nói.

3.2.1 GUI

Nếu bạn đang ở trong một phiên làm việc, có sử dụng một Desktop Environment(DE) nào đó, như GNOME, KDE, XFCE, LXDE, Enlightement, vv... Hay mộtWindow Manager (WM), như: Awesome, PekWM, WMII, vv...

Có rất nhiều các DE hay WM trên Linux. Và tất nhiên, sử dụng cái nào, vànhư thế nào là tùy vào điều kiện, sở thích, khả năng, yêu cầu, mục đích, vv... củachúng ta. Bởi tất cả đều miễn phí, tự do lựa chọn và sử dụng, đầy đủ tài liệu, vàhơn hết, cộng đồng sử dụng và hỗ trợ rất nồng nhiệt.

Để đăng xuất khỏi các phiên làm việc như vậy, các thường thấy nhất là sửdụng các menu của các DE hay WM. Ví dụ: nếu là Gnome2 thì bật menu chínhcủa Gnome2, chúng ta sẽ thấy mục “Log out”, tới đây thì đơn giản, bạn chỉ cầnnhấp chuột vào menu đó, và, phiên làm việc của bạn kết thúc.

Tương tự, trong các DE hay WM khác, chúng ta cũng sử dụng mục “Log out”ở các menu tương ứng của các DE hay WM đó. Nhưng không hẳn hoàn toàn luônluôn như thế, đó chỉ là “roadmap” chung mà thôi.

Ví dụ: trong Gnome3 hoặc Unity (Mặc định trong Ubuntu từ phiên bản 11.04),chúng ta có thể chọn “Log out” từ menu sổ xuống của các tiểu dụng chỉ dẫn(Indicator Applets). Hay tìm kiếm trong “Dash” của Gnome3 hay Unity mục Logout và lựa chọn nó, kết quả cũng sẽ tương tự.

8Tức so với root, chứ không phải so với người dùng... bất bình thường :).

10 10

Page 11: Linux Introduction

3.2 Đăng xuất 3 ĐĂNG NHẬP, ĐĂNG XUẤT

Cũng theo ý tưởng trên, nếu chúng ta dùng một chương trình kiểu “ApplicationsLauncher ” như Synapse hay Gnome Do, thì việc tìm kiếm và chọn lựa cũng diễnra như thế, và nhanh chóng hơn, bởi chúng ta hầu như không cần rời tay khỏi bànphím trong khi thao tác. Tất cả các thao tác có thể chỉ diễn ra trong 1 đến 2s, rấtnhanh.

Việc chúng ta tìm mục “Log out” ở đâu, như thế nào phụ thuộc rất nhiều vàoviệc chúng ta sử dụng DE hay WM nào, cấu hình chúng ra sao và thói quen sửdụng cũng rất quan trọng. Mục “Log out” thậm chí không tồn tại, đặc biệt khibạn sử dụng một WM nào đó, mà không sử dụng một chương trình quản lý phiênlàm việc (Session Manager) nào. Tuy nhiên, có những mục có chức năng tươngtự.

Ví dụ: trong Awesome WM, ta chọn “quit Awsome”, hay sử dụng tổ hợp phím:Mod49 + Shift + q để kết thúc phiên làm việc của Awesome, cũng chính là kếtthúc phiên làm việc của mình.

Kết:

Tóm lại, không thể liệt kê hết các các cách để người dùng thoát khỏi một phiênlàm việc của mình được - đang nói ở chế độ đồ họa. Vì điều đó phụ thuộc rất lớnviệc mỗi người sử dụng những gì, cấu hình ra sao, thói quen sử dụng, sở thích,điều kiện, khả năng,... trên chính hệ thống của họ. Điều này nghe như là một điểmbất lợi nhỉ?! :)

Không như Windows, chúng ta có một số hữu hạn các cách để đăng nhập hayđăng xuất phiên làm việc của mình, ví dụ: Đăng nhập thì ta nhập tên người dùngvà mật khẩu tại màn hình đăng nhập, sau đó nhấn “Enter ”. Và đăng xuất? Vào“Start” chọn “Log out”. Ví dụ thế.

Với Linux, ta có muôn hình cách làm các thao tác trên. Như ví dụ đối vớiAwesome WM ở trên thì cũng chỉ là những gì mặc định (Default) của WM ấy, vàthự sự trên hệ thống của chúng ta như thế nào thì chính chúng ta có thể (dễ dàng)quyết định điều đó. Cụ thể: để chỉnh sửa các cấu hình của bạn đối với AwesomeWM, chúng ta chỉnh sửa file ∼/.config/awesome/rc.lua10. Cụ thể, bạn tham khảotài liệu của Awesome. Tương tự đối với các DE hay WM khác.

Chính khả năng tùy biến — cầu hình cao (High Configuration) là một điểmhấp dẫn của Linux, cũng như là một yêu tố tạo nên cảm giác tuyệt vời khi sử dụngLinux.

Mỗi hệ thống Linux của mỗi người, thường mang dấu ấn rất cá nhân của chínhngười đó – tối thiểu là về phần giao diện. Bạn thử xem? :)

Với tôi, trên hệ thống này, để đăng xuất, tôi thường sử dụng tổ hợp phím nhưtrên.

9Thường là phím có Logo Windows trên bàn phím.10Đây là một file ngôn ngữ Lua, có thể bạn sẽ phải học Lua để chỉnh sửa nó! :)

11 11

Page 12: Linux Introduction

4 LÀM QUEN VỚI COMMAND LINE

3.2.2 CLI

Nếu chúng ta đang sử dụng Linux với CLI, và muốn kết thúc phiên làm việc củamình, thì cũng có nhiều tùy chọn. Ví dụ: sử dụng 2 lệnh, đó là: exit và logout.Và một tổ hợp phím: ^D, tức: Ctrl + D.

Thực ra cũng có ít nhiều sự khác nhau giữa exit và logout, nhưng chúng tasẽ không đi sâu vào vấn đề này – ít nhất là bây giờ.

3.2.3 Sumary:

Như vậy là chúng ta đã tìm hiểu qua các thao tác khởi động, đăng nhập, đăngxuất hệ thống Linux, tiếp theo, sẽ đến phần tìm hiểu cách sử dụng cơ bản.

4 Làm quen với Command line

4.1 Shell & Terminal

Lời nói đầu: Linux là một hệ điều hành tựa UNIX (Unix-like), vốn là hệ điềuhành chỉ có chế độ dòng lệnh, hay chính xác hơn là “text mode”.

Mọi thao tác đối với hệ thống đều có thể thực hiện từ chế độ “text mode”, đặcbiệt là trong việc quản trị hệ thống Linux. Đối với những nhu cầu của một ngườidùng bình thường, chế độ “text mode” cũng đáp ứng được hầu hết các nhu cầuthường thấy như nghe nhạc, xem ảnh, lướt web, thậm chí xem phim, vv... Bạnbăn khoăn, nghi ngờ điều đó là sự thật? Hmm, không thử sao biết! ;)

4.1.1 Shell

Shell là gì? Shell là một trình thông dịch (Interpreter). Tức Shell cũng chỉ là cácchương trình như bao chương trình khác.

Tại sao gọi là trình thông dịch? Khi người dùng nhập vào các lệnh nội trú(internal), ngoại trú (external), tại dấu nhắc lệnh (prompt) của Shell. Hay thậmchí là chạy các tệp shell script.

Ngay sau khi hoàn thành thao tác nhập, ví dụ nhấn phím “Enter” khi nhậplệnh, thì Shell sẽ lần lượt chuyển đổi các câu lệnh sang mã máy (Binary), để CPUcó thể thực thi11, rồi trả lại kết quả quá cho Shell, Shell hiển thị kết quả của cáccâu lệnh lên cho người dùng. Cơ bản là vậy.

Trên Linux, và UNIX nói chung, có rất nhiều loại Shell cho chúng ta lựa chọnkhi sử dụng. Ví dụ một số các Shell phổ biến như: sh, bash, csh, tcsh, ksh, zsh, vv...Nhưng ở đây chúng ta sẽ chỉ giới thiệu và tìm hiểu về bash shell. Đây là một shellmặc định phổ biến trong các bản phân phối Linux hiện nay.

11Tất nhiên cũng phải thông qua nhân nữa.

12 12

Page 13: Linux Introduction

4.2 Lệnh căn bản 4 LÀM QUEN VỚI COMMAND LINE

4.1.2 bash

bash là shell chuẩn của dự án GNU (GNU’s Not UNIX ). Thường được gọi là GNUbash. bash là từ viết tắt của Bourne Again Shell. bash là shell mở rộng và cải tiếnnhiều điểm dựa trên sh (Bourne Shell) shell, vốn của UNIX.

4.1.3 Terminal

Để thao tác trên một hệ thống Linux, chúng ta thường sử dụng một thiết bị vốnđược kết nối với hệ thống đó, để gửi, hiển thị các yêu cầu và kết quả các thao tác,xử lý, gọi là thiết bị đầu cuối (terminal).

Các thiết bị đầu cuối thường gặp đó là bàn phím và màn hình máy tính. Chúngđược kết nối với hệ thống Linux một cách trực tiếp hoặc từ xa qua các kết nốimạng, sử dụng các cách thức khác nhau. Ví dụ: thao tác với một hệ thống Linuxở xa, thông qua kết nối SSH (Secure Shell).

Đối với một PC, có thể nói màn hình và bàn phím chính là terminal cho hệthống đó.

Tuy nhiên không phải lúc nào cũng hoàn toàn vậy. Nếu bạn sử dụng một hệthống Linux có sử dụng hệ thống X Window, hiểu nôm na đó là sử dụng GUI. Thìkhi ấy màn hình không hoàn toàn là terminal của hệ thống đó nữa.

Để có một ‘terminal’, chúng ta cần sử dụng một chương trình giả lập thiết bịđầu cuối (Terminal Emulator) hay chương trình đầu cuối (Terminal Application).

Một Terminal Emulator là một chương trình tương tự như một terminal thựcsự. Có rất nhiều chương trình như vậy trên Linux, một số chương trình phổ biếncó thể liệt kê như: Gnome Terminal, XTerm, RXVT, Konsole, vv... Rất nhiều!

4.2 Lệnh căn bản

4.2.1 Khởi động một Shell

Shell là một chương trình, muốn sử dụng thì chúng ta phải khởi động shell trướckhi có các thao tác dựa trên shell.

Nếu bạn đăng nhập vào hệ thống ở chế độ “text mode”, thì bạn sẽ rơi vào môitrường làm việc là shell mặc định của tài khoản người dùng của bạn.

Nếu bạn đăng nhập vào hệ thống sử dụng chế độ đồ họa, để khởi động mộtshell, bạn phải khởi động một trong các Terminal Emulator như đã nói ở trên.

Để chuyển đổi qua lại giữa 2 chế độ, đồ họa và “text mode” – hay tty. Ta thườngsử dụng tổ hợp phím Ctrl + Alt + F[123456] 12.

12Tức chỉ được duy nhất 1 số, nhưng các giá trị có thể chọn là một trong bất kỳ các số đó.Dãy số này có thể thay đổi, tùy chúng ta đã cấu hình như thế nào.

13 13

Page 14: Linux Introduction

4.2 Lệnh căn bản 4 LÀM QUEN VỚI COMMAND LINE

4.2.2 Căn bản sử dụng lệnh

Thao tác nhập lệnh được thực hiện tại dấu nhắc lệnh của shell, các ký tự đại diệnthường thấy là:

- $: Dấu nhắc lệnh của người dùng bình thường.

- #: Dấu nhắc lệnh của người dùng đang dùng quyền quản trị.

Khi thao tác nhập lệnh trong các shell, chúng ta có thể sử dụng rất nhiều cáclệnh, bao gồm các lệnh nội trú, và ngoại trú.

Lệnh nội trú: Là các lệnh xây dựng sẵn (built-in) trong shell, đây là các lệnhcó thể sử dụng không phụ thuộc vào gì khác khi shell đã khởi động.

Để liệt kê các lệnh nội trú của shell đang sử dụng, ví dụ đối với bash shell, tasử dụng lệnh help, ví dụ: $ help. Lệnh này liệt kê các lệnh nội trú của shell hiệntại cũng như cú pháp sử dụng của mỗi lệnh tương ứng.

Để hiểu chi tiết cách sử dụng của một lệnh bất kỳ, ta cũng sử dụng lệnh help,với tham số là tên lệnh ta muốn xem rõ cú pháp sử dụng, ví dụ: $help help.

Lệnh ngoại trú: Chính là các chương trình đã cài đặt trong hệ thống, có rấtrất nhiều các lệnh, chương trình như thế. Việc tìm hiểu cách sử dụng, cú pháp cáclệnh đó như thế nào, ta sẽ nói ở mục sau.

Bạn lo lắng rằng sẽ không nhớ chính xác được tên các lệnh muốn dùng, điềuđó khiến bạn gõ sai tên lệnh? Thực sự thì chúng ta không cần lo lắng về điều này,vì các shell của Linux có chế độ auto-complete rất tuyệt vời.

Nếu bạn không chắc tên đầy đủ của lệnh bạn muốn dùng, rất đơn giản, bạn chỉcần gõ vài ký tự đầu của lệnh mà bạn nhớ “mang máng” được, sau đó nhấn phímTab trên bàn phím, khi đó, shell sẽ tự động điền đúng tên lệnh cho bạn. Hoặc,nếu có nhiều hơn một khả năng các tên lệnh bắt đầu với các ký tự bạn đã nhập,thì shell sẽ liệt kê tất cả các khả năng đó ra cho bạn lựa chọn, bạn lặp lại với việcnhập những ký tự đầu tiếp theo, và nhấn Tab cho đến khi đúng lệnh bạn muốn.

Ngoài ra, nếu thực sự không nhớ được chút nào về tên lệnh cần dùng, chúngta cũng có thể tìm kiếm bằng nhiều cách, sử dụng những “từ khóa” (key word) màchúng ta mường tượng được sự liên quan đến lệnh hay chương trình đó.

Ví dụ để tìm kiếm một lệnh nào đó, chúng ta thường sử dụng:$ man -k <key-word>, hay $ apropos <key-word>13.

13Nói thật là tôi nhớ tên cũng như cách sử dụng lệnh rất kém, nên 2 điểm này lại hình nhưcàng làm cho tôi thêm lười nhớ hơn! :P

14 14

Page 15: Linux Introduction

4.2 Lệnh căn bản 4 LÀM QUEN VỚI COMMAND LINE

4.2.3 Một số lưu ý

Thứ nhất, Linux phân biệt chữ HOA và chữ thường, bao gồm cả trong tên lệnhvà các tham số của lệnh.

Vì vậy, ABC là rất khác xa với Abc hay aBC hay những gì như thế. Tươngtự, thư mục Desktop sẽ không phải là thư mục desktop nào đó. Không thể đánhđồng được, và phải cẩn thận khi sử dụng. Điều này rất khác xa với Windows, nhưchúng ta từng biết.

Thứ hai, lệnh trong Linux là một chuỗi ký tự liên tiếp, không có khoảng trắng,có thể các từ khác nhau được kết nối bằng các ký tự như ‘-’. Điều này cũng cóngoại lệ, bạn sẽ thấy.

Thứ ba, các lệnh trong Linux thường có các tùy chọn. Các tùy chọn này thườngđược chia làm 2 nhóm: 1) Các tùy chọn ngắn, thường chỉ có 1 hoặc 2 ký tự thuộcnhóm chữ, tức [A-Z],[a-z], được bắt đầu bằng một ký tự đặc biệt, đó là: -. 2) Cáctùy chọn dài, là các tùy chọn gồm một hoặc nhiều từ, được bắt đầu bằng một cặpký tự: -, tức --. Các tùy chọn dài, có nhiều từ thường được nối với nhau bằng kýtự: -.

4.2.4 Các ví dụ:

Chúng ta sẽ cùng điểm qua một số lệnh thường gặp khi làm việc trên một hệ thốngLinux, đầu tiên đó là lệnh: whoami, lệnh này cho biết bạn là ai (?!), hay đúng hơn,là cho biết tên người dùng mà bạn đang sử dụng để đánh chính cái lệnh này là gì.Ví dụ:

n2i@n2i-System ~ $ whoami

n2i

Ngoài ra, còn có lệnh who am i sẽ cho biết thêm nhiều thông tin hơn so vớilệnh trên. Thử chứ?

Tiếp theo đó là lệnh: pwd (print working directory). Lệnh này cho chúng ta biếtmình đang ở thư mục nào trên cây thư mục. Ví dụ:

n2i@n2i-System ~ $ pwd

/home/n2i

Bạn nhận thấy gì không? Như vậy là chúng ta đã biết được một điều rằng...mình là ai, và mình đang ở đâu – trong hệ thống này14!

Tiếp theo chúng ta sẽ giới thiệu nhanh qua một số câu lệnh thường dùng khác.Để liệt kê nội dung của một thư mục, tức liệt kê các tệp tin và thư mục có

trong thư mục đó, ta sử dụng lệnh ls. Cú pháp là: ls [path]. Trong đó, path làđường dẫn đến thư mục chúng ta muốn xem nội dung. Mặc định sẽ là thư mụchiện tại.

14Nghe có vẻ nực cười nhỉ, nhưng nhiều khi không hề buồn cười chút nào.

15 15

Page 16: Linux Introduction

5 MAN, INFO VÀ -H

Lưu ý: Có đôi điều cần biết, thực ra cần nhớ thì đúng hơn.Nếu trong cú pháp của lệnh, tham số được bỏ giữa 2 dấu [ và ], thì ngầm hiểu

rằng, tham số đó có thể có hoặc không cần chỉ định. Ví dụ, với câu lệnh ls ở trên,nếu không chỉ định đường dẫn cụ thể, thì tham số lệnh sẽ nhận tham số là mặcđịnh, tức thư mục hiện tại.

Trường hợp khác, nếu đó là 2 dấu < và >, thì tham số là bắt buộc.Ngoài ra còn một số trường hợp có sự ràng buộc, phụ thuộc (Dependence) giữa

các tham số.Ví dụ sử dụng lệnh ls:

n2i@n2i-System ~ $ ls

...

n2i@n2i-System ~ $ ls Desktop/

...

Tiếp theo là lệnh cd: Đây là lệnh dùng dể di chuyển vị trí làm việc đến mộtthư mục nào đó, cú pháp: cd <path>. Ví dụ:

n2i@n2i-System ~ $ cd Desktop/

n2i@n2i-System ~/Desktop $_

Trên đây là một số ví dụ rất ngắn về một vài lệnh thường gặp khi thao táctrên một hệ thống Linux bất kỳ. Các lệnh đã được nêu ở trên bao gồm một lệnhnội trú và 2 lệnh thuộc gói coreutils – đây là gói tối quan trọng trên một hệ thốngLinux, thường thì các bản phân phối Linux đều có gói này, điều này tạo nên mộtsự thống nhất, giống nhau ở một số câu lệnh, công cụ cơ bản của các bản phânphối Linux.

Có rất nhiều, rất nhiều các câu lệnh trên Linux, chỉ riêng gói coreutils thôi,cũng đã có rất nhiều công cụ cho bạn sử dụng. Một số câu lệnh thường gặp nhấtnhư: cat, touch, df, top, free, vv...

Chúng ta sẽ tìm hiểu cách để làm sao hiểu được các công cụ này là gì, dùngnhư thế nào. Chúng ta sẽ điểm qua các cách lấy thông tin trợ giúp của một côngcụ bất kỳ.

5 man, info và -h

Linux có rất nhiều các công cụ, tiện ích, vv... Mỗi trong một số đó lại có một hoặcnhiều lệnh. Mỗi lệnh lại có một hoặc rất nhiều các cách sử dụng cũng như các tùychọn khác nhau. Và khó mà nhớ hết những gì cần nhớ, đối với việc sử dụng mộtlệnh nào đó trên Linux, hoặc giả chúng ta chưa biết chút thông tin gì về các lệnh,công cụ, tiện ích ấy.

Tiếp theo đây là một số cách để lấy thông tin trợ giúp hoặc thông tin đầy đủvề một lệnh, công cụ hay tiện ích nào đó trong quá trình sử dụng Linux.

16 16

Page 17: Linux Introduction

5.1 -h 5 MAN, INFO VÀ -H

5.1 -h

5.1.1 Thông tin

-h là gì? -h chính là một tùy chọn của một lệnh nào đó, chỉ thị cho lệnh hiển thịmột số thông tin trợ giúp ngắn gọn cho người dùng.

Đây là một kiểu tùy chọn ngắn của dòng lệnh, ký tự - được đặt ngay trướcchữ h chỉ rõ điều đó. h ở đây có thể là viết tắt của từ help, tức trợ giúp.

Bạn có sự liên tưởng gì không? Có kiểu tùy chọn ngắn. Vậy còn kiểu tùy chọndài thì sao?

h là ký tự viết tắt. Vậy nếu không dùng ký tự viết tắt, mà là sử dụng một hoặcnhiều từ đầy đủ thì thế nào? Tất nhiên, chúng ta có câu trả lời cho những câu hỏiđó.

Đó chính là --help, một kiểu tùy chọn dài, đầy đủ của một lệnh nào đó. Cáctùy chọn dài, tức các từ khóa của tùy chọn bao gồm một hoặc nhiều từ, được bắtđầu bằng cặp ký tự: -, tức là --.

Với tùy chọn --help, câu lệnh sẽ đưa ra những trợ giúp thường là đầy đủ hơn,hoặc không thì kết quả tối thiểu cũng như tùy chọn -h.

Thông thường, một câu lệnh trên Linux thường có cả 2 tùy chọn trên để ngườidùng có thể truy cứu thông tin trợ giúp một cách dễ dàng. Nhưng cũng có ngoạilệ, một số lệnh không có một trong hai tùy chọn trên, hoặc thậm chí, không có cảhai. Ngược lại, cũng có một số lệnh lại có các một tùy chọn help.

5.1.2 Ví dụ:

Cùng điểm qua một số ví dụ về sử dụng các tùy chọn -h và --help.

n2i@n2i-System ~ $ ifconfig -h

...

n2i@n2i-System ~ $ cd --help

...

n2i@n2i-System ~ $ file-roller --help-gtk

...

Bạn có thể lấy thêm rất nhiều các ví dụ khác.

Ở các ví dụ trên, bạn có thể thấy một lệnh, đó là file-roller, mà có thểkhi bạn thử ở một hệ thống Linux nào đó và gặp thông báo trả lại là: No such

command hay Command not found, hay những gì tương tự thế. Thì rất có thể làhệ thống đó chưa cài đặt chương trình đó.

file-roller là một trình quản lý các định dạng tệp tin nén (Compression)(Archiver Manager). Đây là trình quản lý các tệp tin nén sử dụng giao diện GTK(GIMP Toolkit), mặc định của GNOME, và được cài đặt mặc định trong các bảnphân phối sử dụng DE là GNOME, ví dụ như Ubuntu.

17 17

Page 18: Linux Introduction

5.2 man và info 5 MAN, INFO VÀ -H

Và đương nhiên, muốn sử dụng công cụ đó trên hệ thống của bạn, thì bạn phảicài đặt nó – giả sử như công cụ chưa được cài đặt.

Ngay cả ifconfig, một lệnh phổ biến, thì đôi khi bạn cũng không tìm thấynó trên một hệ thống nào đó, vậy nếu có gặp trường hợp như vậy, bạn cũng đừngnên ngạc nhiên, hay lo lắng quá.

5.2 man và info

Rất nhiều các chương trình, công cụ trên Linux rất phức tạp, chúng không chỉnhận các tùy chọn dòng lệnh như là các tham số duy nhất để hoạt động. Mà chúngcòn có các tệp cấu hình (Configuration file) hay hơn thế nữa, các chương trìnhliên quan, phụ thuộc chẳng hạn.

Vậy để sử dụng những chương trình như vậy một cách đúng và hiệu quả, chúngta phải biết rõ các thông tin cần thiết về chương trình ấy chứ?! Nhưng bằng cáchnào?

Đây là lúc chúng ta nhờ đến 2 công cụ gần như được sử dụng thường xuyênnhất đối với những chương trình mới, và... người mới! :) Đó là man và info.

Giới thiệu đôi chút về man và info. Thông tin đầy đủ vui lòng sử dụng man

hoặc info để biết thêm chi tiết về các lệnh này.

5.2.1 man

man là tiện ích quản lý và hiển thị các trang man(ual) (man page). Các trang manđược chia thành các mục (Section) riêng biệt. Bao gồm 8 mục, với những chủ đềkhác nhau.

Các trang man là các tệp định dạng văn bản thô (plain text), được tạo ra vàđóng gói sẵn. Để hiển thị một trang man nào đó khi được chỉ định, man tìm kiếmcác tệp văn bản tương ứng các mục do người dùng chọn lựa, nếu tìm thấy man sửdụng một công cụ khác để hiển thị các tệp văn bản thô, đó là less15.

Cú pháp sử dụng của lệnh man: man [section] <key-word>. Trong đó:

section: Bạn muốn xem trang man thuộc mục nào.

key-word: Từ khóa, hay là tên lệnh, tệp tin, vv... mà bạn muốn xem trang man.

Đây là một vài ví dụ khi sử dụng lệnh man:

n2i@n2i-System ~ $ man 1 passwd

...

n2i@n2i-System ~ $ man 5 passwd

...

15Thực ra đó là bzless, vì tệp văn bản thô kia thường được lưu trữ ở dạng nén.

18 18

Page 19: Linux Introduction

5.2 man và info 5 MAN, INFO VÀ -H

Bạn hãy thử 2 ví dụ trên và xem xét sự khác nhau giữa kết quả của 2 lệnh.Có sự khác nhau đó là vì lệnh trên nhận tham số có cùng từ khóa nhưng đượcchỉ định các mục khác nhau, đó là các mục: a) 1: User Commands và b) 5: FileFormats and Conventions.

5.2.2 info

info cũng là một công cụ để truy cứu thông tin về một lệnh, hay tệp tin, vv...nào đó. info có đôi sự khác biệt lớn so với man, một trong số đó là info sử dụngmột định dạng văn bản khác so với man, điều đó cho phép trong info có thể cócác siêu liên kết HyperLink giữa các mục, khiến cho việc truy cứu thông tin đầyđủ hơn.

Cú pháp sử dụng của info cũng khá giống với man, nhưng chúng ta không cầnchỉ định số của mục chúng ta cần xem, hay đúng hơn, tham số đó không hẳn làmột chữ số. Ta có đôi ví dụ:

n2i@n2i-System ~ $ info cd

...

Hoặc phức tạp hơn chút:

n2i@n2i-System ~ $ info coreutils ‘ls invocation’

...

Như vậy là chúng ta đã tìm hiểu qua man và info là gì, dùng cho việc gì. Trênđây chỉ là một chút thông tin về 2 tiện ích này. Để có thông tin đầy đủ hơn, bạncó thể sử dụng chính chúng để biết thêm về chúng, ví dụ như:

n2i@n2i-System ~ $ man man

...

n2i@n2i-System ~ $ man info

...

n2i@n2i-System ~ $ info info

...

n2i@n2i-System ~ $ info man

...

Sumary

Trong phần này chúng ta đã tìm hiểu những điều cơ bản nhất để làm việc với mộthệ thống Linux. Đó là khởi động một hệ thống Linux như thế nào, đăng nhập,đăng xuất một phiên làm việc. Tìm hiểu Terminal là gì, lướt qua một số lệnh cơbản, cũng như cách lấy trợ giúp về các câu lệnh, tệp tin, vv...

19 19

Page 20: Linux Introduction

5.2 man và info 5 MAN, INFO VÀ -H

Phần tiếp theo chúng ta sẽ tìm hiểu về cấu trúc thư mục, tệp tin, quyền hạnđối với tệp tin, và một số thao tác đối với tệp tin và thư mục trên Linux.

20 20

Page 21: Linux Introduction

Phần III

File, Folder & Permission

21 21

Page 22: Linux Introduction

7 DIRECTORIES STRUCTURE

Phần này giới thiệu cơ bản về cấu trúc tệp tin, thư mục và quyền hạn đối với tậptin, thư mục trên Linux.

6 Everything is file

Mọi thứ trên Linux đều là các tệp tin. Bạn ngạc nhiên không? Vậy các card mạng,ổ đĩa, vv... thì sao? Những điều đó sẽ được đề cập ngay sau đây.

Trên Linux, tất thảy mọi thứ đều có thể coi như là các tệp tin. Từ một tậptin bình thường, như các tệp văn bản thô (plain text), các tệp có thể thực thi(Executable). Ngay cả những gì bạn thấy nó là một thư mục, hay thậm chí đó làcác thiết bị của máy tính, ... đều được ánh xạ vào một tệp tin nào đó trên hệthống.

Tệp tin trên Linux được chia làm một số nhóm, bao gồm:

- Ordinay or Plain files: Ký hiệu: -. Là các tệp tin mà ta vẫn biết đó là cáctệp tin16. Đó có thể là một tệp âm thanh định dạng mp3, một tệp văn bảnthô, một tệp có thể thực thi, vv...

- Directories: Ký hiệu: d. Là một loại tệp đặc biệt, chúng chứa danh sách cáctệp tin, “thư mục” con của nó.

- Special or Device files: Đây thực sự là một loại tệp tin đặc biệt. Trên Linux,mỗi một thiết bị phần cứng của máy tính được ánh xạ thành một tệp tintương ứng trên hệ thống.Các thao tác đối với thiết bị phần cứng đó, là các thao tác với tệp tin tươngứng này. Trong nhóm này lại được chia thành 2 loại, đó là các 1) character(c) device và 2) block (b) device.

Thực ra còn có một loại tệp tin nữa đó là các link (Liên kết), và có ký hiệu là:l.

Trên đây là những điều cơ bản về tệp tin trên Linux, để có đủ thông tin chitiết bạn có thể tìm hiểu thêm từ các trang báo mạng, blog, các bài viết, đặc biệtlà các trang Wiki. Có rất nhiều topic nói về chủ đề này ngoài kia.

7 Directories Structure

Trong mục này chúng ta sẽ tìm hiểu đôi chút về cấu trúc thư mục của Linux, mộtđiều góp phần tạo nên sự thống nhất, ổn định và hiệu quả của hệ thống Linux.

Các thư mục trên một hệ thống Linux được tổ chức thành một cây, tạm gọi làcây thư mục (Directories Tree). Cây này có gốc là thư mục /, gọi là Root.

16Nghe có vẻ buồn cười nhỉ! :P

22 22

Page 23: Linux Introduction

7 DIRECTORIES STRUCTURE

Đường dẫn đến mọi tập tin, thư mục, ngõ ngách của hệ thống Linux đều xuấtphát từ đây. Một số các thư mục, vốn được quy định sẵn, và được chuyên biệt vềchức năng. Chúng ta có thể hiểu thêm cấu trúc thư mục của Linux qua sơ đồ sau:

Hình 1: Cấu trúc thư mục của Linux

Một thiết bị lưu trữ khi được lắp vào hệ thống Linux, để có thể sử dụng chúng,tức đọc ghi dữ liệu trên thiết bị đó, trước hết chúng ta phải thực hiện một thaotác, tạm gọi là gắn, ghép (mount) hay “ánh xạ” thiết bị đó vào một thư mục nàođó mà ta muốn trong cây thư mục của Linux. Bất cứ chỗ nào bạn muốn.

Ví dụ, để đọc ghi dữ liệu trên một phân vùng nào đó của ổ HDD trên máy,chúng ta phải mount phân vùng đó vào một thư mục nào đó và đọc ghi dữ liệutrong thư mục đó, như mọi thư mục khác.

Thực ra thì điều này còn phụ thuộc vào quyền hạn của chúng ta đối với thưmục đó nữa, điều này sẽ đề cập đến sau.

23 23

Page 24: Linux Introduction

7.1 Path 7 DIRECTORIES STRUCTURE

Tương tự, việc mount các thiết bị đó như thế nào cũng sẽ không được đề cậpđến trong tài liệu này. Bời vì tài liệu này cũng không đề cập đến một số vấn đềliên quan, yêu cầu cơ bản đối với người dùng trước khi có thể thực hiện các thaotác đó – ít nhất là một cách chính xác.

Việc đọc ghi dữ liệu nhiều khi không chỉ đơn giản là việc mount các thiết bịvào một thư mục tương ứng nào đó trên cây thư mục. Mà đôi lúc chúng ta cầnphải quan tâm đến những vấn đề khác đối với các tập tin, thư mục mình muốntương tác đến, đó là các “quyền hạn” (Permission).

7.1 Path

Chúng ta đã biết thư mục và tệp tin trên Linux được tổ chức theo dạng cây. Vàcâu hỏi đặt ra là làm thế nào để truy cập, chỉ định một thư mục, tệp tin nào đómà ta muốn?

Chính lúc này chúng ta cần đến một khái niệm mới, đó là đường dẫn (Path).Path chính là đường dẫn đến một thư mục, tệp tin nào đó trên cây thư mục

của Linux. Path được bắt đầu bằng một ví trí nào đó trong cây thư mục mà tamuốn bắt đầu, và chứa tên của tất cả các thư mục, tệp tin mà đường dẫn đi qua,được sắp xếp theo thứ tự truy xuất, và được phân chi bởi một ký tự đặc biệt, trênLinux ký tự đó là /.

Ký tự này cũng chính là ký hiệu của thư mục Root – gốc của cây thư mục.Path có 2 loại, nhưng trước khi đề cập đến các loại của Path, chúng ta điểm

qua ký hiệu của một số thư mục đặc biệt, được quy định sẵn trên hệ thống Linux.

Ký hiệu Ý nghĩa

/ Thư mục Root

. Thư mục hiện hành

.. Thư mục cha của .

∼ Thư mục nhà

Bảng 2: Ký hiệu một số thư mục đặc biệt

Chính các ký hiệu này giúp cho việc các Path được rút ngắn, việc sử dụng đượctiện lợi hơn, không chỉ đơn giản là vì nó được rút ngắn hơn.

Bây giờ chúng ta sẽ đề cập đến các loại của Path. Path có 2 loại, đó là:

- Tuyệt đối: Xuất phát từ /

- Tương đối: Xuất phát từ một thư mục khác /, chủ yếu là bắt đầu bằng mộttrong 3 ký tự cuối trong bảng [2]

24 24

Page 25: Linux Introduction

8 FILE & FOLDER PERMISSION

7.1.1 Ví dụ:

Để dễ hình dung về cách sử dụng Path, ta sẽ lấy một vài ví dụ ngắn. Giả sử thưmục hiện hành là ∼, trong đó có các thư mục con như Desktop, Documents, vv...

n2i@n2i-System ~ $ ls | grep ^D

Desktop

Documents

Downloads

...

n2i@n2i-System ~ $ ls /home/n2i/Desktop/

...

n2i@n2i-System ~ $ ls ../n2i/Desktop/

...

n2i@n2i-System ~ $ ls ./Desktop/

...

n2i@n2i-System ~ $ ls ~/Desktop/

...

n2i@n2i-System ~ $ ls Desktop/

...

n2i@n2i-System ~ $ ls Desktop

...

Các câu lệnh chứa từ Desktop ở trên đều trả về cùng một kết quả, nhưng thamsố cho lệnh ls là đường dẫn tới thư mục Desktop là có sự thay đổi, dễ dàng nhậnra sự thay đổi đó. Bạn đoán xem đâu là đường dẫn tuyệt đối, và đâu là tương đối?

2 cậu lệnh cuối có một chi tiết nhỏ khác biệt, theo bạn đó là gì?Như vậy là là chúng ta đã có những hiểu biết cơ bản về tệp tin, hệ thống thư

mục, cũng như cách truy cập các tập tin, thư mục sử dụng đường dẫn trên Linux.Tiếp theo chúng ta sẽ giới thiệu qua về một số thuộc tính của tập tin, thư mục

trên hệ thống Linux.Một câu hỏi nhỏ trước khi chuyển sang vấn đề mới. Theo như sơ đồ ở trên, tức

sơ đồ [1], đã chỉ rõ rằng thư mục /home/ là thư mục mà các thư mục con là thưmục nhà của những người dùng trên hệ thống. Nhưng câu hỏi là tại sao vẫn có1 một thư mục là /root/ là thư mục nhà dành cho người dùng root. Mà khôngphải là một thư mục nào đó khác, ví dụ: /home/root/. Tại sao lại có sự “ưu tiên”đối với người dùng root như vậy?

8 File & Folder Permission

Bảo mật tệp tin, thư mục là một phần quan trọng của bất kỳ hệ điều hành nào,và Linux cũng không phải là ngoại lệ. Để bắt đầu tìm hiểu về mảng này trong

25 25

Page 26: Linux Introduction

8 FILE & FOLDER PERMISSION

Linux, chúng ta chạy một lệnh ngắn tương tự như sau:

n2i@n2i-System ~ $ ls -l

Và kết quả của câu lệnh trên sẽ rất giống với bức hình sau đây:

Hình 2: Kết quả của lệnh ls -lh

Dễ dàng nhận thấy rằng kết quả của lệnh trên bao gồm 7 trường, như trênhình. Theo thứ tự từ phải qua trái, ta có ý nghĩa của các trường như sau:

1: Tên của các thư mục, tệp tin được liệt kê.

2: Thời gian mà tệp, thư mục được tạo ra hoặc lần chỉnh sửa cuối.

3: Dung lượng của tệp tin, thư mục.

4: Nhóm sở hữu.

5: Người dùng sở hữu.

6: Số lượng số inode liên kết đến tập tin, thư mục đó.

7: Quyền hạn đối với tệp tin, thư mục đó

Trong khuôn khổ phần này, chúng ta sẽ chỉ tìm hiểu 3 trường được nhắc đếnở trên, đó là các trường: 4, 5, và 7. Chúng ta sẽ lần lượt điểm qua các trường vừaliệt kê.

Nhóm sở hữu

Trường số 4 chỉ rõ rằng tệp tin, thư mục đó thuộc sở hữu của nhóm người dùngnào. Nhóm người dùng này có thể hiện thời có hoặc không tồn tại trên hệ thống.

26 26

Page 27: Linux Introduction

8.1 Quyền hạn 8 FILE & FOLDER PERMISSION

Chủ sở hữu

Trường số 5 chứa thông tin của người dùng sở hữu tệp tin, thư mục đó. Tươngtự, người dùng đó hiện thời có thể đang hoặc không tồn tại trên hệ thống.

8.1 Quyền hạn

Đối với một tệp tin, thư mục bất kỳ. Có 3 quyền cơ bản có thể áp dụng được đólà: 1) Đọc (Read), 2) Ghi (Write), và 3) Thực thi (Execute).

Trường số 7 mang cấu trúc chứa thông tin quyền hạn đối với tệp tin, thư mụcmang nó. Đây dường như là trường chứa nhiều thông tin nhất, cũng như quantrọng nhất. Trong trường này lại có thể được chia thành 4 phần, như sau:

Hình 3: Chi tiết nội dung của trường thứ chứa thông tin quyền hạn

Ý nghĩa của các phần trong trường chứa thông tin quyền hạn:

1: Ký tự chỉ rõ tệp là loại tệp nào. Ký tự này có thể là:

-: Tệp tin bình thường.

b: Một block device.

c: Một character device.

d : Là một thư mục.

l : Là một liên kết.

2: Quyền hạn của người sở hữu.

3: Quyền hạn của nhóm sở hữu.

4: Quyền hạn của những người dùng và nhóm người dùng khác.

Phần thứ nhất của trường quyền hạn đã được nói rõ ở đây 8.1. Tiếp theo lànội dung và ý nghĩa của các phần tiếp theo, tức 2, 3 và 4.

27 27

Page 28: Linux Introduction

8.2 Thay đổi quyền hạn đối với một tệp tin, thư mục8 FILE & FOLDER PERMISSION

Các phần sau của trường quyền hạn, quyết định quyền hạn của người sở hữu,nhóm sở hữu và những người dùng khác trên tệp tin, thư mục đó. Mỗi trường đềucó cấu trúc giống nhau, đó là bao gồm 3 ký tự, hay chính xác hơn, đó là 3 bit dữliệu.

Bởi vậy, mỗi một bit trong đó chỉ được nhận một và chỉ một giá trị trong 2giá trị: 0 hoặc 1, hay nói cách khác, giá trị của một bit chỉ được nhận duy nhấtmột ký tự của một nhóm ký tự đã được quy ước sẵn. Cấu trúc của mỗi phần vàý nghĩa của các bit dữ liệu:

File Permission

Bit: 1st 2nd 3rd

Mean: Read Write Execute

Value:r w x

- - -

Ví dụ

For: User Group Other

Permission: rwx r-x --x

Bin: 111 101 001

Dec: 7 5 1

Bảng 3: File Permission

8.2 Thay đổi quyền hạn đối với một tệp tin, thư mục

Như đã nói ở trên, quyền hạn đối với một tệp tin bất kỳ, bao gồm 3 quyền cơ bản:1) Read, 2) Write và 3) Execute.

Các quyền này lại được chia làm 3 phần chính, bao gồm: i) u – User, ii) g –Group và iii) o – Other.

Cơ bản

Để thay đổi quyền hạn đối với tệp tin, chúng ta sử dụng một số lệnh như sau:

- chmod: Thay đổi quyền hạn.

- chown: Thay đổi chủ sở hữu.

- chgrp: Thay đổi nhóm sở hữu.

28 28

Page 29: Linux Introduction

8.2 Thay đổi quyền hạn đối với một tệp tin, thư mục8 FILE & FOLDER PERMISSION

Cách sử dụng của các lệnh trên có thể lướt qua như sau:Lệnh chown: Thay đổi chủ sở hữu.

chown [OPTION]... [OWNER][:[GROUP]] FILE...

Trong đó:

- OPTION: Các tùy chọn dòng lệnh

- OWNER: Người dùng được chỉ định là chủ sở hữu.

- GROUP: Thuộc nhóm nào.

- FILE: Tệp tin bạn muốn thay đổi chủ sở hữu.

Để áp dụng lệnh này với một thư mục, chúng ta cần thêm một vài tùy chọncho tham số dòng lệnh. Một ví dụ:

n2i@n2i-System ~ $ chown guest n2i-own-file

Lệnh chgrp: Thay đổi nhóm sở hữu.

chgrp [OPTION]... GROUP FILE...

Trong đó:

- OPTION: Các tùy chọn dòng lệnh

- GROUP: Nhóm người dùng.

- FILE: Tệp tin áp dụng.

Ví dụ:

root@n2i-System ~ # chgrp n2i root-own-file

Lệnh chmod: Thay đổi quyền hạn.

chmod [OPTION]... MODE[,MODE]... FILE...

Trong đó:

- OPTION: Các tùy chọn dòng lệnh

- MODE: Chế độ áp dụng quyền hạn.

- FILE: Tệp tin áp dụng.

Trong câu lệnh chmod, MODE là một chuỗi ký tự có dạng:

[ugoa][-+=][rwx]

Xét từ trái sang phải, dễ dàng nhận thấy rằng MODE gồm ba phần phân biệt rõràng. Đó là:

29 29

Page 30: Linux Introduction

9 THAO TÁC VỚI CÁC TỆP TIN, THƯ MỤC

ugoa: Đối tượng người dùng được áp dụng quyền hạn.

u: User, tức chủ sở hữu.

g: Group.

o: Other.

a: All, tức áp dụng cho cả 3 nhóm trên.

-+=: Chỉ thị việc cấp hoặc rút quyền.

rwx: Các quyền đối với tập tin. Như đã nói bao gồm:

r: Read.

w: Write.

x: Execute.

Vậy, câu lệnh chmod sẽ rất giống thế này:

n2i@n2i-System ~ $ chmod u+rwx,g+rx,o-rwx one-file

Nâng cao

MODE của lệnh chmod là một chuỗi ký tự như đã nói ở ngay trên.Ngoài ra, nó còn có thể là các chữ số thập phân. Vậy, tại sao lại sử dụng các

chữ số, và chúng được “lấy” ở đâu ra?Theo như bảng [3], ta thấy rằng: Việc quy định quyền cho mỗi nhóm đối tượng

tương ứng bao gồm 3 bit dữ liệu. Tức ở hệ Nhị phân (Binary).Sự chuyển đổi giá trị các bit này sang hệ Thập phân sẽ giúp người dùng dễ

nhớ, và dễ thao tác hơn.Vậy, sự chuyển đổi này là như thế nào, và các giá trị tương ứng ra sao? Ta có

bảng [4].Vậy cách sử dụng như thế nào? Ta xem ví dụ: hai câu lệnh sau đây có cùng

một ý nghĩa.

n2i@n2i-System ~ $ chmod u+rwx,g+rx,o-rwx one-file

n2i@n2i-System ~ $ chmod 741 one-file

Ngắn gọn và dễ nhớ!

9 Thao tác với các tệp tin, thư mục

9.1 Một số thao tác cơ bản

Phiên làm việc ngắn:

30 30

Page 31: Linux Introduction

9.1 Một số thao tác cơ bản 9 THAO TÁC VỚI CÁC TỆP TIN, THƯ MỤC

Permission

Bin value r,w,x Dec number

000 --- 0

001 --x 1

010 -w- 2

011 -wx 3 (2 + 1 )

100 r-- 4

101 r-x 5 (4 + 1 )

110 rw- 6 (4 + 2 )111 rwx 7 (4 + 2 + 1 )

Bảng 4: Bin ↔ Dec

n2i@n2i-System ~ $ pwd

/home/n2i

n2i@n2i-System ~ $ cd xsd/

n2i@n2i-System ~/xsd $ ls | grep all

all-hwex.pdf

all-notes.pdf

allupdate-20.txt

...

n2i@n2i-System ~/xsd $ cat allupdate-20.txt | wc -l

265

n2i@n2i-System ~/xsd $ cd -

n2i@n2i-System ~ $ cat /dev/null > .xsession-errors

n2i@n2i-System ~ $ touch newfile

n2i@n2i-System ~ $ cat > newfile

This is a new line in one new file

^D

n2i@n2i-System ~ $ file newfile

new: ASCII text

n2i@n2i-System ~ $ rm newfile

n2i@n2i-System ~ $ mv xsd/allupdate-20.txt .

n2i@n2i-System ~ $ rm -r xsd/

n2i@n2i-System ~ $ which mplayer

/usr/bin/mplayer

n2i@n2i-System ~ $ cd Videos

31 31

Page 32: Linux Introduction

10 THAY ĐỔI QUYỀN HẠN ĐỐI VỚI TỆP TIN

n2i@n2i-System ~/Videos $ mplayer VietLUG.flv

...

n2i@n2i-System ~ Videos $ cp VietLUG.flv /media/data/videos-arch/

n2i@n2i-System ~ Videos $ cd !$

n2i@n2i-System /media/data/videos-arch $ !mpl

mplayer VietLUG.flv

...

n2i@n2i-System /media/data/videos-arch $ cd ~

n2i@n2i-System ~ $ ls ~guest/

...

n2i@n2i-System ~ $ ls -ilh ~root

cd: cannot open directory /root: Permission denied

n2i@n2i-System ~ $ ^D

10 Thay đổi quyền hạn đối với tệp tin

Một số ví dụ ngắn:

n2i@n2i-System ~ $ ls -lh pkgs-link

-rw-r--r-- 1 root root 8.5K Dec 20 16:39 pkgs-link

n2i@n2i-System ~ $ mkdir update

n2i@n2i-System ~ $ mv pkgs-link update/

n2i@n2i-System ~ $ chown n2i update/update-new

chown: changing ownership of ‘update/update-new’: Operation

not pemitted

n2i@n2i-System ~ $ su root

Password:

root@n2i-System n2i # chmod 700 update/update-new

-rwx------ 1 root root 8.5K Dec 20 16:39 pkgs-link

root@n2i-System n2i # chown n2i update/update-new

root@n2i-System n2i # ls -lh update/

-rwx------ 1 n2i root 8.5K Dec 20 16:39 pkgs-link

root@n2i-System n2i # chgrp n2i update/update-new

root@n2i-System n2i # ls -lh update/

-rwxr----- 1 n2i n2i 8.5K Dec 20 16:39 pkgs-link

root@n2i-System n2i # chown root:root update/update-new

root@n2i-System n2i # ls -lh update/

-rwxr----- 1 root root 8.5K Dec 20 16:39 pkgs-link

root@n2i-System n2i # chmod u-x,g+rx,o-rwx update/update-new

root@n2i-System n2i # ls -lh update/

-rw-r-x--- 1 root root 8.5K Dec 20 16:39 pkgs-link

32 32

Page 33: Linux Introduction

11 COPY, NÉN, GIẢI NÉN, LƯU TRỮ TỆP

root@n2i-System n2i # chown -R root update

root@n2i-System n2i # ls -ldh update

drwxr-xr-x 2 root n2i 4.0K Dec 20 16:42 update

root@n2i-System n2i # rm -rf update

root@n2i-System n2i # ^D

n2i@n2i-System ~ $

n2i@n2i-System ~ $ ^D

11 Copy, nén, giải nén, lưu trữ tệp

33 33

Page 34: Linux Introduction

Phần IV

Redirection and Pipe

34 34

Page 35: Linux Introduction

12 KHÁI NIỆM

12 Khái niệm

Redirection và Pipe là gì?

12.1 Redirection

Redirection, hiểu nôm na là “tái định hướng”. Vậy tái định hướng cái gì? Sao phảitái định hướng? Mục này sẽ giới thiệu ngắn gọn về tái định hướng và cách sử dụng.

Trong máy tính điện toán, hay hẹp hơn, là các chương trình máy tính. Khi mộtchương trình thực thi, chương trình đó nhận và trả các luồng17 thông tin.

Có 3 luồng cơ bản, gọi là các “ luồng chuẩn” (Standard Streams). Bao gồm:

Standard Streams

Handle Name Description

0 stdin Standard input

1 stdout Standard output

2 stderr Standard error

Bảng 5: Standard Streams

Các luồng này vốn được sử dụng như thế nào? Ta có sơ đồ:

Hình 4: Standard Streams

Khi sử dụng “tái định hướng” tức chúng ta chuyển hướng vào ra các luồngchuẩn của một chương trình.

Ví dụ: Thay vì ta có stdout thường được xuất ra thiết bị xuất chuẩn, có thểlà màn hình, hay một Terminal Emulator. Thì ta “chuyển hướng” stdout vào mộttập tin nào đó, như những ví dụ sau đây.

17Streams: Được đề cập cụ thể trong nhiều ngôn ngữ bậc cao, gần nhất như: C++, Java, ...

35 35

Page 36: Linux Introduction

12.2 Pipe 13 VÍ DỤ NGẮN:

Việc sử dụng tái định hướng giúp cho một số thao tác đơn giản, nhanh chóngvà ngắn gọn hơn.

Sử dụng như thế nào? Trên một hệ thống Unix-Base hoặc Unix-like: Linux làmột hệ điều hành tựa Unix (Unix-like). Chúng ta sử dụng một số ký tự sau đểthực hiện chuyển hướng các luồng chuẩn đã nói ở trên:

>: Chuyển hướng Standard Streams “ra” một tệp mới. Sẽ tạo tệp mới nếu tệp chưatồn tại. Sẽ ghi đè (Overwrite) nội dung nếu tệp đã tồn tại và chứa nội dung.

>>: Tương tự như >, nhưng thay vì ghi đè nội dung thì sẽ nối thêm (Append) nộidung vào tệp đã tồn tại và chứa nội dung.

<: Chuyển hướng Standard Streams “từ” một tệp tin thay vì từ một StandardStandard.

12.2 Pipe

Pipe: nôm na là đường ống18. Tại sao gọi là đường ống? Và việc “lắp” các đườngống đó như thế nào?

Pipe là việc tái định hướng stdout của một lệnh nào đó thành stdin của lệnhtiếp theo. Tạo thành một “đường ống” dẫn dữ liệu, dữ liệu được trao đổi giữa cácứng dụng (lệnh) mà không cần thông qua một thiết bị nhập xuất chuẩn nào.

Ta sử dụng ký tự | để tạo các đường ống giữa các lệnh. Sử dụng như thế nàothì các ví dụ sau sẽ nói khá rõ.

12.3 Redirection & Pipe

Kết lại mục này, việc sử dụng và sự hoạt động của “tái định hướng” và “đườngống” có thể thấy rõ qua sơ đồ sau:

13 Ví dụ ngắn:

13.1 Tạo tệp mới sử dụng Redirection và Pipe

Sử dụng lệnh cal(lendar) và xuất kết quả vào tệp tin, chứ không phải là thiết bịxuất chuẩn (stdout).

n2i@n2i-System ~ $ cal -m > this-month

n2i@n2i-System ~ $ cat this-month

December 2011

Mo Tu We Th Fr Sa Su

18Nghe trông ngộ quá, cảm giác như chẳng liên quan gì! :|

36 36

Page 37: Linux Introduction

13.2 Đếm số lượng tệp và thư mục trong thư mục bất kỳ 13 VÍ DỤ NGẮN:

Hình 5: Redirection and Pipe

1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30 31

13.2 Đếm số lượng tệp và thư mục trong thư mục bất kỳ

Liệt kê tất cả những gì có trong thư mục ∼ và đếm số lượng tệp tin + thư mụccó trong ∼.

n2i@n2i-System ~ $ ls -l ~ | grep ^[-d] | wc -l

227

13.3 Đếm số lượng thư mục con của một thư mục bất kỳ

Chỉ đếm số lượng các thư mục con mà thôi.

n2i@n2i-System ~ $ ls -l ~ | grep ^[d] | wc -l

47

37 37

Page 38: Linux Introduction

13.4 Đếm số từ của một dòng bất kỳ trong một tệp văn bản13 VÍ DỤ NGẮN:

13.4 Đếm số từ của một dòng bất kỳ trong một tệp vănbản

Giả sử ta muốn đếm số từ, ký tự, vv... trong một tệp tin có hàng ngàn hoặc hơnsố dòng. Ví dụ ở đây có một tệp plain text có hơn 15000 dòng. Thử đếm số từtrong dòng thứ 10000 của tệp này: in ra dòng thứ 10000 và đếm số từ trong dòngđó cho ta kết quả.

n2i@n2i-System ~ $ wc -l jarg262.txt linux-path

15023 jarg262.txt

94750 linux-path

109773 total

n2i@n2i-System ~ $ time awk ‘NR==10000’ jarg262.txt | wc -w

12

real 0m0.005s

user 0m0.002s

sys 0m0.001

13.5 Liệt kê các tệp, thư mục con

Yêu cầu: Liệt kê các thư mục con, tệp tin trong một thư mục nào đó mà có thờigian được tạo ra là tháng 09 (năm nay).

Linux thực ra không lưu thời điểm mà tệp tin, thư mục được tạo (Created).Linux chỉ lưu thời điểm mà thư mục, tệp tin đã được thay đổi (Modified) vàothuộc tính của tệp tin.

Nếu từ khi được tạo ra tới thời điểm hiện tại mà tệp tin, thư mục chưa bị thayđổi ít nhất một lần thì có thể coi như thời gian thay đổi tệp tin trong thuộc tínhcủa tệp tin chính là thời điểm tệp tin, thư mục được tạo ra.

Những tệp tin, thư mục con của ∼ được tạo ra hoặc chỉnh sửa lần cuối trongtháng 09:

n2i@n2i-System ~ $ ls -lt --time-style=+%m/%Y | grep ^[-d] |\

grep 09/2011

-rw-r--r-- 1 n2i n2i 795 09/2011 hanoimod.c

-rw-r--r-- 1 n2i n2i 149 09/2011 TKB

-rw-r--r-- 1 n2i n2i 13965 09/2011 how-to-configure-cpu

freqd

13.6 Đếm tổng số tiến trình

Tool pstree liệt kê tất cả các tiến trình hiện có trên hệ thống theo dạng cây, cógốc là tiến trình init, mỗi dòng là một tiến trình. vậy để tính số tiến trình hiện

38 38

Page 39: Linux Introduction

13.7 Đếm số lượng người dùng đã đăng ký 13 VÍ DỤ NGẮN:

đang chạy trên hệ thống, ta lấy kết quả của lệnh pstree và đếm số dòng:

n2i@n2i-System ~ $ pstree | wc -l

33

13.7 Đếm số lượng người dùng đã đăng ký

Mỗi entry trong file /etc/passwd là thông tin của một người dùng đã được đăngký trong hệ thống. Đó có thể là những người dùng hệ thống hoặc một người dùngbình thường.

n2i@n2i-System ~ $ cat /etc/passwd | wc -l

13.8 Đếm số lượng người dùng đang đăng nhập

Dùng lệnh who để liệt kê tất cả những người dùng đã đăng nhập vào và đang hoạtđộng trên hệ thống. Cắt lấy trường user từ kết quả của lệnh who.

Sau đó dùng lệnh uniq để loại bỏ những kết entry trùng nhau do kết quả củalệnh who. Ta có số lượng kết quả thực sự.

n2i@n2i-System ~ $ who

root tty1 2011-12-22 16:26

n2i tty7 2011-12-22 15:26 (:0)

n2i pts/0 2011-12-22 15:27 (:0)

n2i pts/1 2011-12-22 15:27 (:0)

n2i@n2i-System ~ $ who | cut -d " " -f 1 | uniq | wc -l

2

13.9 Ví dụ hơi ngắn :3

13.9.1 Tình huống, yêu cầu, hướng giải quyết:

Thông tin:

- Tình huống: Máy này sử dụng mạng thông qua USB 3G. Muốn cài đặt mộtsố gói mới và cập nhật hệ thống.

- Vấn đề: Việc cập nhật và cài đặt phải tải nhiều gói, và tổng dung lượng rấtlớn. Sử dụng 3G có dung lượng, băng thông hạn hẹp và cước phí cao.

- Ý tưởng: Lấy đường link tải các gói, cho vào tệp mới, sau đó đưa đi máy kháccó kết nối mạng – tất nhiên không phải là dùng 3G, tải mớ gói về, sao chépvào thư mục cache của trình quản lý gói tại máy này.

39 39

Page 40: Linux Introduction

13.9 Ví dụ hơi ngắn :3 13 VÍ DỤ NGẮN:

13.9.2 Điều kiện thực tế:

Hệ thống quản lý gói của Gentoo là Portage và sử dụng emerge như trình quảnlý. emerge có 2 tùy chọn đáng chú ý – trong tình huống này:

-f: (--fetch-only) Chỉ tải gói, mà không tiến hành biên dịch và cài đặt.

-p: (--pretend) Tiến hành “giả lập” các tùy chọn cho emerge.

Kết hợp 2 tùy chọn này trong câu lệnh của emerge chúng ta sẽ có danh sáchcác liên kết tải các gói cài đặt – và một số thông tin khác.

Kết quả của lệnh emerge -pf <atom>... có dạng:

atom1-url1 atom1-url2 ....

atom2-url1 atom2-url2 ...

...

Trong đó:

atom: Tên gói cần cài đặt, tất nhiên có thể có rất rất nhiều gói.

atom1-url1: Liên kết tải (url1 ) của gói thứ nhất (atom1 ) tại mirror đầu tiên.Tương tự cho các mirror khác và các gói khác.

Nhận xét:

- Mỗi dòng là danh sách các liên kết tải của cùng một gói tại các mirror khácnhau.

- Các liên kết trong một dòng phân biệt nhau bằng một khoảng trắng: ‘ ’.

13.9.3 Tiến hành:

Khởi chạy emerge với 2 tùy chọn đã nói ở trên, lọc ra các dòng là các liên kết, cắtlấy một liên kết trong mỗi dòng tùy ý, sau đó cho tất cả các liên kết đã chọn vàomột tệp plain text tùy ý.

root@n2i-System n2i # emerge -pfuND world | grep ^http |\

cut -d " " -f 1 > allupdate-22

Một lưu ý nhỏ: Để Windows có thể hiển thị bình thường tệp tin vừa tạo ra ởtrên, cần làm một thao tác nhỏ, đó là chuyển đổi kiểu (kết thúc dòng trong EOL)tệp tin từ Unix sang kiểu của Windows: Tức \n sang \r\n hay LF sang CRLF. Cóthể sử dụng một tool nhỏ:

40 40

Page 41: Linux Introduction

14 ENV

n2i@n2i-System ~ $ unix2dos allupdate-22 allupdate.txt

Sau đó có thể dễ dàng đưa tệp này sang một máy khác, có thể chạy bất cứ OSnào và import những liên kết trong tệp tin kia vào một trình quản lý tải tệp tinnào đó để tải.

14 env

Lệnh env liệt kê tất cả các biến môi trường hiện có. Để xem một biến nào đó vídụ HOME hay TERM:

n2i@n2i-System ~ $ env | grep -i ^home

HOME=/home/n2i

n2i@n2i-System ~ $ env | grep -i ^term

TERM=xterm

n2i@n2i-System ~ $

41 41