MỤC LỤC v
3.2.19 locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.20 Sử dụng updatedb . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.21 slocate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3 Quản lý tiến trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 Khởi động xeyes . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.2 Dừng một tiến trình . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.3 fg và bg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.4 Sử dụng "&" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.5 Nhiều tiến trình nền sau . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.6 Giới thiệu tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.7 SIGTERM và SIGINT . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.8 "Diệt tận gốc" . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.9 nohup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.10 Sử dụng ps liệt kê tiến trình . . . . . . . . . . . . . . . . . . . . . 37
3.3.11 Hiển thị cây và rừng . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.12 Tùy chọn "u" và "l" . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.13 Sử dụng "top" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.14 nice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.15 renice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4 Gia công văn bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.1 Ôn lại chuyển hướng . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.2 Một ví dụ ống . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.3 Ống giải nén . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.4 Một ống dài hơn . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.5 Gió lốc gia công văn bản bắt đầu . . . . . . . . . . . . . . . . . . 41
3.4.6 cat, sort, và uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.7 wc, head, và tail . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.8 tac, expand, và unexpand . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.9 cut, nl, và pr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.10 tr, awk, và sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.11 od, split, và fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.12 Paste, join, và tee . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.13 Gió lốc kết thúc! Chuyển hướng . . . . . . . . . . . . . . . . . . . 43
3.4.14 Sử dụng » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5 Môđun nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.1 Làm quen với "uname" . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.2 Thêm về đầu ra uname . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.3 Bản phát hành nhân . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.4 Nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.5 Giới thiệu môđun nhân . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.6 Bản tóm tắt môđun nhân . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.7 lsmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.8 Liệt kê môđun . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.9 Môđun third-party . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.10 depmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.11 Làm thế nào để lấy môđun . . . . . . . . . . . . . . . . . . . . . . 46
3.5.12 Sử dụng depmod . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
vi MỤC LỤC
3.5.13 Định vị môđun nhân . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5.14 insmod và modprobe . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5.15 Thực thi rmmod và modprobe . . . . . . . . . . . . . . . . . . . . 48
3.5.16 Túi khôn: modinfo và modules.conf . . . . . . . . . . . . . . . . . 48
3.5.17 modules.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6 Tổng kết và các nguồn tham khảo . . . . . . . . . . . . . . . . . . . . . . 48
3.6.1 Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.2 Tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.6.3 Ý kiến độc giả . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6.4 Thay cho lời kết . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4 Quản trị hệ thống Linux 51
5 Quản trị hệ thống linux nâng cao 52
5.1 Hệ thống tập tin, phân vùng, và các thiết bị khối . . . . . . . . . . . . . . 52
5.1.1 Giới thiệu về thiết bị khối . . . . . . . . . . . . . . . . . . . . . . 52
5.1.2 Các lớp trừu tượng . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.3 Phân vùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.4 Giới thiệu về công cụ fdisk . . . . . . . . . . . . . . . . . . . . . . 53
5.1.5 Sử dụng fdisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.1.6 Thiết bị khối và tổng quan về việc chia phân vùng . . . . . . . . . 54
5.1.7 Loại phân vùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.1.8 Sử dụng fdisk để thiết lập các phân vùng . . . . . . . . . . . . . . 54
5.1.9 Đĩa cứng sau khi được phân vùng sẽ thế nào . . . . . . . . . . . . 54
5.2 Khởi động hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.1 About this sectin . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.2 Bảng ghi khởi động chính - MBR . . . . . . . . . . . . . . . . . . 57
5.2.3 Qúa trình khởi động của hạt nhân . . . . . . . . . . . . . . . . . . 58
5.2.4 Chương trình /sbin/init . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.5 Digging in: LILO . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.6 Digging in: GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.7 Thông tin dmesg . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.8 Thông tin trong /var/log/messages . . . . . . . . . . . . . . . . . . 59
5.2.9 Các thông tin khác . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.10 Cấp thựnc tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.11 Single-user mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.12 Understanding single-user mode . . . . . . . . . . . . . . . . . . . 59
5.2.13 Các cấp thực thi - Runlevels . . . . . . . . . . . . . . . . . . . . . 59
5.2.14 Công cụ telinit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.15 Runlevel etiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.16 "Now" và halt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.17 Cấp độ thực thi ngầm định . . . . . . . . . . . . . . . . . . . . . . 59
5.2.18 Tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3 Cấp phép sử dụng hệ thống tập tin. . . . . . . . . . . . . . . . . . . . . . . 60
5.3.1 Giới thiệu về cấp phép . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.2 Hỗ trợ của hạt nhân . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.3 Hỗ trợ của hệ thống tập tin . . . . . . . . . . . . . . . . . . . . . . 60
5.3.4 Cấu hình hệ thống giấy phép . . . . . . . . . . . . . . . . . . . . . 60
MỤC LỤC vii
5.3.5 Lệnh "quota" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.6 Viewing quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.7 edquota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.8 Understanding edquota . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.9 Making changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.10 Copying quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.11 Group restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.12 The repquota command . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.13 Repquota options . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.14 Monitoring quotas . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.15 Modifying the grace period . . . . . . . . . . . . . . . . . . . . . 60
5.3.16 Kiểm tra qouta khi khởi động . . . . . . . . . . . . . . . . . . . . 60
5.4 Giới thiệu về syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.1 Đọc thông tin nhật ký . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.2 Tailing log files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.3 Grepping logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.4 Ghi nhớ bảo mật . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.5 Chủ đề nâng cao - klogd . . . . . . . . . . . . . . . . . . . . . . . 62
5.4.6 Chủ đề nâng cao - các chương trình ghi nhật ký khác . . . . . . . . 62
5.5 Tóm lược . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6 Tham khảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6 Biên dịch mã nguồn và quản lý gói phần mềm trong linux 65
7 Cấu hình và biên dịch hạt nhân 66
7.1 Giới thiệu hề hạt nhân Linux . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.1 Hạt nhân là Linux . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.2 Giao tiếp với phần cứng . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.3 Điều quản CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.4 Điều quản vào ra I/O . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.5 Trung tâm của hệ thống mạng . . . . . . . . . . . . . . . . . . . . 67
7.1.6 Ôn lại về quá trình khởi động linux . . . . . . . . . . . . . . . . . 67
7.1.7 Giới thiệu về mô đun . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.8 Vị trí của tập tin mô đun . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.9 Modules – not for every process! . . . . . . . . . . . . . . . . . . 67
7.2 Tải mã nguồn của hạt nhân . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2.1 Kernel version history . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2.2 Getting new kernel sources . . . . . . . . . . . . . . . . . . . . . . 67
7.2.3 Unpacking the kernel . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3 Cấu hình hạt nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.1 Let’s talk configuration . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.2 The new way to configure . . . . . . . . . . . . . . . . . . . . . . 67
7.3.3 Các mẹo khi cấu hình . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.4 Code maturity level options . . . . . . . . . . . . . . . . . . . . . 67
7.3.5 Modules and CPU-related options . . . . . . . . . . . . . . . . . . 67
7.3.6 General and parallel port options . . . . . . . . . . . . . . . . . . 67
7.3.7 RAID and LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.8 Hệ thống mạng và các thiết bị liên quan . . . . . . . . . . . . . . . 67
viii MỤC LỤC
7.3.9 IDE support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.10 SCSI support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.11 Miscellaneous character devices . . . . . . . . . . . . . . . . . . . 67
7.3.12 File systems and console drivers . . . . . . . . . . . . . . . . . . . 67
7.3.13 Biên dịch và cài đặt hạt nhân . . . . . . . . . . . . . . . . . . . . . 67
7.3.14 make dep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.15 make bzImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.16 biên dịch mô đun . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4 Cấu hình khởi động . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4.1 Giới thiệu về Lilo . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4.2 Cấu hình Lilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.5 Thiết bị PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.5.1 Thiết bị PCI 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.5.2 Các kía cạnh của thiết bị PCI . . . . . . . . . . . . . . . . . . . . 67
7.5.3 PCI device resources . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6 Linux USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.1 Introducing Linux USB . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.2 Enabling USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.3 UHCI, OHCI, EHCI – oh my! . . . . . . . . . . . . . . . . . . . . 67
7.6.4 The last few steps . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.5 Mounting usbdevfs . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.7 Tóm lược . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.7.1 Tóm lược . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.7.2 Tài nguyên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8 Hệ thống mạng 68
9 USB bảo mật hệ vỏ và chia sẻ tập tin 69
Chương 1
Trước khi bắt đầu
1.1 Về tài liệu này
Chào mừng đến với "Linux những điều cơ bản," cuốn thứ nhất trong bốn cuốn sách hướng
dẫn giúp bạn chuẩn bị cho bài thi 101 của LPI (Linux Professional Institute). Trong cuốn
sách hướng dẫn này, chúng tôi sẽ giới thiệu với bạn bash (vỏ, shell, tiêu chuẩn của Linux),
chỉ cho bạn cách sử dụng thành thạo các câu lệnh cơ bản của Linux như ls, cp và mv, giải
thích về inode, liên kết "cứng" và liên kết "tượng trưng" (hard link và symbolic links) và
nhiều thứ khác. Khi kết thúc cuốn sách hướng dẫn này bạn sẽ có kiến thức vững vàng về
những điều cơ bản khi sử dụng Linux, và thậm chí còn sẵn sàng bắt đầu học cơ bản về
nhiệm vụ quản trị mạng Linux. Khi kết thúc chuỗi sách hướng dẫn này (tám cuốn tất cả),
bạn sẽ có kiến thức cần thiết để trở thành Quản trị viên hệ thống Linux và sẵn sàng đạt tới
chứng chỉ LPIC bậc I của Linux Professional Institute nếu bạn đã dự định như vậy.
Cuốn sách hướng dẫn này (Phần I) nói riêng là lý tưởng với những "người mới" với
Linux, hoặc với những người muốn xem lại hoặc cải tiến sự hiểu biết của mình về những
khái niệm cơ bản của Linux như sao chép (copying) và di chuyển (moving) tập tin, tạo
đường dẫn "cứng" và "tượng trưng", và sử dụng các câu lệnh "chế biến" văn bản cơ bản
song song với "băng chuyền" (pipeline) và "chuyển hướng" (redirection). Dọc theo cuốn
hướng dẫn này, chúng tôi sẽ chia sẻ với các bạn những lời gợi ý, lời mách nước và mánh lới
để giữ cho cuốn hướng dẫn thêm phong phú ("ngon ăn") và có tính thực dụng, thậm chí cho
cả những ai có kinh nghiệm sử dụng Linux đáng kể. Với những "người bắt đầu", nhiều tài
liệu của cuốn hướng dẫn này sẽ mới, nhưng với những người sử dụng Linux kinh nghiệm có
thể tìm thấy cuốn hướng dẫn này như một cách tuyệt vời để "làm béo thêm" kỹ năng Linux
cơ bản.
Với những ai đã qua phát hành (release) 1 của cuốn hướng dẫn này với mục đích khác
hơn là chuẩn bị thi LPI, bạn có khả năng không cần phát hành 2. Tuy nhiên, nếu bạn có dự
tính vượt qua kỳ thi LPI, bạn nên lưu ý đọc bản đã chỉnh sửa này.
1.2 Về tác giả
Cư trú tại Albuquerque, New Mexico, Daniel Robbins là kiến trúc trưởng của Gentoo Linux,
một bản phân phối Linux cao cấp. Tác giả còn viết các bài báo, sách hướng dẫn, những lời
mách nước cho IBM developerWorks và Intel Developer Services và là tác giả đóng góp
2 Trước khi bắt đầu
của vài cuốn sách, gồm có Samba Unleashed và SuSE Linux Unleashed. Daniel thích thú
sử dụng thời gian với vợ, Mary, và con gái, Hadassah. Bạn có thể liên hệ với Daniel qua tại
drobbins@gentoo.org.
Với những câu hỏi kỹ thuật về nội dung của cuốn hướng dẫn này, liên hệ với tác giả,
Daniel Robbins, tại drobbins@gentoo.org.
Chương 2
Cơ bản về Linux
2.1 Giới thiệu về bash
2.1.1 Hệ vỏ (shell)
Nếu bạn đã từng sử dụng hệ điều hành Linux, thì biết rằng sau khi đăng nhập xong, chúng
ta sẽ được đón chào bởi dấu nhắc như sau:
$
Dấu nhắc bạn thấy trên máy của mình có thể trông khác một chút. Nó có thể chứa tên
máy, tên của thư mục hiện thời, hoặc cả hai. Tuy nhiên, bất kể là giấu nhắc của bạn trông
như thế nào, chắc chắn nó chứa ký hiệu nói trên
1
. Chương trình, mà in dấu nhắc nói trên
ra gọi, là "hệ vỏ" (shell). Và rất có thể hệ vỏ shell của bạn là bash - một hệ vỏ shell thông
dụng trong thế giới hệ điều hành chim cánh cụt.
2.1.2 Có phải bạn đang chạy bash không?
Bạn muốn biết mình đang chạy bash hay không bằng hãy gõ:
$ echo $SHELL
/bin/bash
Nếu dòng trên cho ra một thông báo lỗi hoặc kết quả không giống với ví dụ, thì tức là
bạn đang chạy một hệ vỏ shell khác. Trong trường hợp đó, phần lớn ví dụ của cuốn hướng
dẫn này vẫn có thể được áp dụng. Nhưng chúng tôi khuyên bạn nên dùng bash, vì rất có lợi
và nhất là nếu bạn có mục đích trả thi LPI 101. (Cuốn hướng dẫn thứ hai, về quản trị cơ bản,
chúng tôi sẽ hướng dẫn cách thay đổi hệ vỏ shell cho người dùng bằng câu lệnh chsh.
2
)
1
trừ khi bạn đăng nhập với quyền người dùng root. Nếu bạn không biết người dùng root là gì hãy cứ tạm
biết như thế ;). Chúng tôi sẽ nói đến vấn đề này ở các phần tiêp theo
2
nếu bạn là người thích khám phá thì hãy thử làm quen với câu lệnh trên ngay bây giờ! Cú pháp của nó
cũng không quá phức tạp so với các câu lệnh khác của Linux. Tự khám phá luôn là một cách học tốt trong mọi
lĩnh vực! Chúng tôi rất khuyến khích bạn
4 Cơ bản về Linux
2.1.3 Về bash
Bash là từ viết tắt của "Bourne-again shell"
3
. Bash là hệ vỏ shell theo mặc định trên hầu
hết các hệ thống Linux. Công việc của hệ vỏ shell là tuân theo các câu lệnh của người
dùng. Nhờ có hệ vỏ shell bạn có thể tác động qua lại với hệ điều hành. Khi làm xong các
công việc cần thiết, có thể chỉ thị cho hệ vỏ shell thoát ra (exit) hay đăng xuất (logout).
Tại thời điểm này bạn sẽ được đưa trở lại dấu nhắc đăng nhập
4
.
Nhân tiện, bạn có thể đăng xuất bằng cách gõ control-D tại dấu nhắc nói trên.
2.1.4 Sử dụng cd
Như bạn biết và có thể sẽ biết :), nhìn chằm chằm vào dấu nhắc bash không phải là điều
thích thú nhất trên thế gian. Vì vậy, hãy thử sử dụng bash để "đi dạo" một vòng, quanh hệ
thống tệp tin. Tại dấu nhắc, gõ câu lệnh sau (không gõ dấu $
5
:
$ cd /
Chúng ta vừa yêu cầu chuyển sang làm việc tại bash thư mục /. / còn được người dùng
Linux biết đến dưới cái tên root
6
. Trên hệ thống Linux tất cả các thư mục tạo thành một
cây thư mục, và / là thư mục cao nhất của cây này, hay là gốc rễ (root) của nó. cd thiết lập
thư mục mà bạn đang làm việc với nó, còn gọi là "thư mục hiện thời".
Để biết thư mục hiện thời của bash, hãy gõ:
$ pwd
2.1.5 Đường dẫn
Trong ví dụ phía trên, đối số / cho cd gọi là đường dẫn (path). Đối số cho cd biết nơi chúng
ta muốn chuyển đến. Trong trường hợp này, đối số / là đường dẫn tuyệt đối, có nghĩa là nó
chỉ rõ một vị trí trong cây thư mục đối với thư mục gốc (root).
2.1.6 Đường dẫn tuyệt đối
Dưới đây là một số đường dẫn tuyệt đối khác:
/dev
/usr
/usr/bin
/usr/local/bin
3
người dịch: Bourne-again shell là một cách chơi chữ tiếng Anh. "Bourne" đọc giống như borne (sinh ra,
đẻ ra).
4
thường có dạng login:
5
Trong các ví dụ $ ở đầu dòng chỉ để chỉ dấu nhắc của người dùng, nó không phải là thành phần của một
câu lệnh
6
Xin hãy nhớ cái tên này!!! Vì tiếp theo chúng tôi sẽ gọi như vậy trong suốt cuốn sách này
2.1 Giới thiệu về bash 5
Như bạn thấy, mọi đường dẫn tuyệt đối có một điểm chung - bắt đầu với /. Với đường
dẫn /usr/local/bin, ta muốn cd chuyển vào thư mục /, sau đó thư mục usr dưới nó, và sau đó
local và cuối cùng là bin. Đường dẫn tuyệt đối luôn luôn được nhận ra bởi sự có mặt của /
ở đầu.
Có thể bạn đã đoán ra rằng nếu đã có tuyệt đối thì phải có tượng đối. Vâng đúng là có
đường dẫn tương đối. Bash, cd, và các câu lệnh khác luôn luôn biên dịch những đường dẫn
này tương đối với thư mục hiện thời
7
. Đường dẫn tương đối không bao giờ bắt đầu với một
/. Vì thế, nếu chúng ta đang trong thư mục /usr.
$ cd /usr
Thì có thể dùng đường dẫn tương đối để chuyển tới thư mục /usr/local/bin:
$ cd local/bin
$ pwd
/usr/local/bin
2.1.7 Sử dụng
Đường dẫn tương đối có thể chứa một hay nhiều thư mục " ". Thư mục là thư mục đặc
biệt chỉ tới thư mục "bố"
8
. Tiếp tục ví dụ ở trên:
$ pwd
/usr/local/bin
$ cd
$ pwd
/usr/local
Bạn thấy không, thư mục hiện thời của chúng ta bây giờ là /usr/local. Chúng ta đã "quay
ngược trở lại" một thư mục về phía thư mục root, nếu so với thư mục hiện thời lúc đầu
(/usr/local/bin).
Thêm vào đó, chúng ta có thể thêm vào đường dẫn tương đối đã có, để đi tới một thư
mục nằm "kế bên"
9
thư mục hiện thời, ví dụ:
$ pwd
/usr/local
$ cd /share
$ pwd
/usr/share
7
hãy chú ý sự khác nhau giữa hai cách biên dịch
8
thường gọi là thư mục mẹ hơn
9
gọi nôm na là "hàng xóm"
6 Cơ bản về Linux
2.1.8 Ví dụ đường dẫn tương đối
Đường dẫn tương đối có thể khá phức tạp. Sau đây là một số ví dụ, chúng tôi không cho
biết các thư mục thu được. Hãy thử tự hình dung xem bạn sẽ đi tới đâu sau khi gõ những
câu lệnh sau:
$ cd /bin
$ cd /usr/share/zoneinfo
$ cd /usr/X11R6/bin
$ cd /lib/X11
$ cd /usr/bin
$ cd /bin/ /bin
Bây giờ, hãy gõ chúng và xem bạn hình dung có đúng không :)
2.1.9 Thế còn . là gì?
Trước khi kết thúc bài giảng của chúng ta về cd, có một vài điều chúng tôi muốn đề cập
đến. Đầu tiên, có một thư mục đặc biệt khác gọi là ., có ý nghĩa "thư mục hiện thời". Thư
mục này thường không sử dụng như đối số cho câu lệnh cd, mà thường được sử dụng để
thực thi một số chương trình trong thư mục hiện thời. Ví dụ:
$ ./chuongtrinh
Tệp tin thực thi chuongtrinh nằm tại thư mục hiện thời sẽ được chạy.
2.1.10 cd và thư mục nhà
Bây giờ, chúng ta muốn chuyển tới thư mục nhà (home directory), ta gõ:
$ cd
Không có đối số , cd sẽ chyển tới thư mục nhà của người dùng. Thư mục nhà sẽ là /root
cho người dùng cao cấp (superuser) và điển hình là /home/username cho người dùng bình
thường. Nhưng nếu muốn chỉ rõ một tệp tin trong thư mục nhà thì sao? Ví dụ chúng ta muốn
dùng tệp tin làm đối số cho câu lệnh chuongtrinh. Nếu tệp tin "trú ngụ" trong thư mục nhà,
có thể gõ
10
:
$ ./chuongtrinh /home/teppi82/tepcuatoi.txt
10
trong ví dụ này người dùng có tên là teppi82
Không có nhận xét nào:
Đăng nhận xét