Linux Introduction
-
Upload
sam-dinh-xuan -
Category
Technology
-
view
203 -
download
0
Transcript of 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
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
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
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
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
Phần II
Basic
6 6
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Phần III
File, Folder & Permission
21 21
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
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
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
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
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
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
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
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
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
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
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
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
Phần IV
Redirection and Pipe
34 34
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
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
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
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
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
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
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