Bài giảng Hệ điều hành Unix - Linux - Chương 3: Hệ thống file - Đặng Thu Hiền

pdf 58 trang huongle 3010
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành Unix - Linux - Chương 3: Hệ thống file - Đặng Thu Hiền", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_dieu_hanh_unix_linux_chuong_3_he_thong_file_dan.pdf

Nội dung text: Bài giảng Hệ điều hành Unix - Linux - Chương 3: Hệ thống file - Đặng Thu Hiền

  1. Hệ điều hành UNIX-Linux Chương 3. Hệ thống file tck12 Đặng Thu Hiền Khoa Công nghệ thông tin Trường Đại học Công nghệ Đại học Quốc gia Hà Nội 1
  2. Khái niệm cơ bản n Một đối tượng điển hình trong các hệ điều hành đó là file n Tệp (file) là đơn vị lưu trữ nhỏ nhất trong hệ điều hành Unix/Linux n File là một tập hợp dữ liệu có tổ chức được hệ điều hành quản lý n Cách tổ chức dữ liệu trong file thuộc về chủ của nó là người đã tạo ra file n File có thể là: n một văn bản (trường hợp đặc biệt là chương trình nguồn trên C, shell script ) n một chương trình ngôn ngữ máy, n Hệ điều hành tổ chức việc lưu trữ nội dung file trên các thiết bị nhớ lâu dài và đảm bảo các thao tác lên file. n Hệ điều hành đảm bảo các chức năng liên quan đến file nên người dùng không cần biết file của mình lưu ở vùng nào trên đĩa từ, bằng từ cách nào đọc/ghi lên các vùng của đĩa từ mà vẫn thực hiện được yêu cầu tìm kiếm, xử lý lên các file n Hệ điều hành quản lý file theo tên gọi của file (tên file) và một số thuộc tính liên quan đến file 2
  3. Khái niệm cơ bản n Để làm việc được với các file, hệ điều hành không chỉ quản lý nội dung file mà còn phải quản lý các thông tin liên quan đến các file. n Thư mục (directory) là đối tượng được dùng để chứa thông tin về các file, hay nói theo một cách khác, thư mục chứa các file n Các thư mục cũng được hệ điều hành quản lý trên vật dẫn ngoài và vì vậy, theo nghĩa này, thư mục cũng được coi là file 3
  4. Tên file/thư mục n Tên file trong Linux có thể dài tới 256 ký tự n Gồm các chữ cái, chữ số, dấu gạch nối, gạch chân, dấu chấm n Tên thư mục/file trong Linux có thể có nhiều hơn một dấu chấm n Ví dụ: This_is.a.VERY_long.filename n Xâu con của tên file từ dấu chấm cuối cùng được gọi là phần mở rộng của tên file (hoặc file). n Phần mở rộng ở đây không mang ý nghĩa như một số hệ điều hành khác (chẳng hạn như MS-DOS) n Phân biệt chữ hoa và chữ thường đối với tên thư mục/file n Nếu trong tên thư mục/file có chứa khoảng trống, đặt tên vào trong cặp dấu nháy kép để sử dụng. n Một số ký tự không được sử dụng trong tên thư mục/file: !, *, $, &, # n Tập các tệp có trong máy do Unix/Linux quản lý được gọi là “hệ thống tệp” 4
  5. Ký hiệu chỉ nhóm file n Có thể sử dụng các ký hiệu đặc biệt * và ? để chỉ định nhóm các tệp n Ví dụ: n ab*: Tất cả các tệp có tên bắt đầu bằng ab n ab*.c: Tất cả các tệp có tên bắt đầu bằng ab và kết thúc bằng .c n a?cd: Tất cả các tệp có tên bắt đầu bằng chữ a, sau đó là một ký tự bất kỳ rồi kết thúc là cd 5
  6. Cấu trúc hệ thống file n Cấu trúc logic dạng cây n Một số tên thư mục đặc biệt: n “/”: Thư mục gốc n “.”: Thư mục hiện hành n “ ”: Thư mục cha n Ví dụ: n “/”: Thư mục gốc n “usr” là thư mục con của “/” và là thư mục cha của “lib”, “local” 6
  7. Một số thư mục đặc biệt n Thư mục gốc / n Đây là thư mục gốc chứa đựng tất cả các thư mục con có trong hệ thống. n Thư mục /root n Thư mục /root có thể được coi là "thư mục riêng" của siêu người dùng. Thư mục này được sử dụng để lưu trữ các file tạm thời, nhân Linux và ảnh khởi động, các file nhị phân quan trọng (những file được sử dụng đến trước khi Linux có thể gắn kết đến phân vùng /user), các file đăng nhập quan trọng, bộ đệm in cho việc in ấn, hay vùng lưu tạm cho việc nhận và gửi email. Nó cũng được sử dụng cho các vùng trống tạmthời khi thực hiện các thao tác quan trọng, ví dụ như khi xây dựng (build) một gói RPM từ các file RPM nguồn. n Thư mục /bin n thư mục "binaries" lưu trữ các chương trình khả thi có trên hệ thống Khi có nhiều hơn các file khả thi có trong Linux, có thêm các thư mục /sbin, / usr/bin được sử dụng để lưu trữ 7
  8. Một số thư mục đặc biệt n Thư mục /dev n Chứa các trình điều khiển thiết bị n Thư mục /etc n Lưu trữ tất cả các thông tin hay các file cấu hình hệ thống n Thư mục /lib n Lưu trữ các thư viện hàm và thủ tục n Thư mục /lost+found n Lưu file được khôi phục sau khi có bất kỳmột vấn đề hoặc gặp một lỗi về ghi đĩa n Thư mục /mnt n Nơi để kết nối các thiết bị (ví dụ đĩa cứng, đĩa mềm ) vào hệ thống file chính nhờ lệnh mount n Các thư mục con của /mnt chính là gốc của các hệ thống file được kết nối: n /mnt/floppy: đĩa mềm, /mnt/hda1: vùng đầu tiên của đĩa cứng thứ nhất (hda), n /mnt/hdb3: vùng thứ ba của đĩa cứng thứ 2 (hdb) n Thư mục /tmp: /tmp là thư mục dùng để chứa các file tạm. 8 n thư mục /tmp được rất nhiều chương trình trong Linux sử dụng như một nơi để lưu trữ các file tạmthời.
  9. Một số thư mục đặc biệt n Thư mục /usr n Trung tâm lưu trữ tất cả các lệnh hướng đến người dùng n Hầu hết các file nhị phân cần cho Linux đều được lưu trữ ở đây n Thư mục con /usr/src bao gồmcác thư mục con chứa các chương trình nguồn của nhân Linux. n Thư mục /home n Chứa các thư mục cá nhân của người dùng n Tên người dùng được lấy làmtên của thư mục con. n Thư mục /var n Lưu trữ các file chứa các thông tin luôn luôn thay đổi: bộ đệmin, vùng lưu tạmthời cho việc nhận và gửi thư (mail) n Thư mục /boot n Chứa nhân của hệ thống n Thư mục /proc n Dành cho nhân (kernel) của hệ điều hành và thực tế đây là một hệ thống file độc lập do nhân khởi tạo n Tthư mục /misc và thư mục /opt n Cho phép lưu trữ mọi đối tượng vào hai thư mục này n Thư mục /sbin n Thư mục lưu giữ các file hệ thống thường tự động chạy 9
  10. Đường dẫn n Để định vị một tệp hoặc một thư mục trong hệ thống tệp, ta cần một đường dẫn n Ví dụ: n Đường dẫn đến thư mục: /usr/bin n Đường dẫn đến tệp: /usr/bin/vi (vi là tên một hệ soạn thảo văn bản trên Unix) n Đường dẫn có nhiều thành phần, các thành phần là tên thư mục hoặc tên tệp (thường ở vị trí cuối cùng) cách nhau bởi dấu “/” 10
  11. Đường dẫn tuyệt đối và tương đối n Đường dẫn tuyệt đối bắt đầu bởi dấu “/” n Ví dụ: /home/hiendt/tailieu.txt n Đường dẫn tương đối không phải là đường dẫn tuyệt đối n Đường dẫn tương đối dùng để chỉ cách định vị tệp/ thư mục từ thư mục hiện hành n Ví dụ: Nếu thư mục hiện tại là hiendt thì để chỉ file tailieu.txt, chỉ cần viết tailieu.txt hoặc ./tailieu.txt (ký hiệu . để chỉ thư mục hiện thời) 11
  12. Cách tổ chức n Trên đĩa hệ thống file là dãy tuần tự các khối lôgic mỗi khối chứa hoặc 512B hoặc 1024B hoặc bội của 512B n Các khối dữ liệu được địa chỉ hóa bằng cách đánh chỉ số liên tiếp, mỗi địa chỉ được chứa trong 4 byte (32 bit) n Cấu trúc nội tại gồm 4 thành phần kế tiếp nhau: Boot block (dùng để khởi động hệ thống), Siêu khối (Super block), Danh sách inode và Vùng dữ liệu. 12
  13. Siêu khối n Chứa thông tin liên quan đến trạng thái của hệ thống file n Kích thước của danh sách inode, định kích cỡ vùng không gian trên Hệ thống file quản lý các inode. n Kích thước của hệ thống file. n Danh sách chỉ số các khối rỗi n Chỉ số các khối rỗi thường trực trên siêu khối được dùng để đáp ứng nhu cầu phân phối mới n Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi n Một danh sách các inode rỗi n Danh sách này chứa chỉ số các inode rỗi được dùng để phân phối ngay được cho một file mới được khởi tạo n Cờ chỉ dẫn rằng hệ thống file chỉ có thể đọc (cấm ghi) n Số lượng tổng cộng các khối rỗi trong hệ thống file n Số lượng tổng cộng các inode rỗi trong hệ thống file n Thông tin về thiết bị, n Kích thước khối của hệ thống file (phổ biến của khối là 1KB) 13
  14. Inode n Mỗi khi tạo một file mới, hệ thống sẽ gán cho nó một inode chưa sử dụng n inode cho ta biết tập hợp các khối dữ liệu của file và các thông tin về file n Tổ hợp gồm inode và tập các khối dữ liệu như là một file vật lý n Các inode có chỉ số của inode: số thứ tự của inode trong danh sách inode trên hệ thống n Hệ thống dùng 2 bytes để lưu trữ chỉ số của inode n Một file chỉ có một inode song một file lại có một hoặc một số tên file n Người dùng tác động thông qua tên file và tên file lại tham chiếu đến inode n Khi làm việc, Linux dùng một vùng bộ nhớ chứa danh sách các inode: in-core inode 14
  15. Cấu trúc Inode n Kiểu file (file thông thường, thư mục, đặc tả kí tự, đặc tả khối, ống dẫn) n Kiểu file có giá trị 0 tương ứng đó là inode chưa được sử dụng n Quyền truy nhập file: có 3 mức quyền truy nhập liên quan đến các đối tượng: n chủ của file n mức nhóm người dùng của chủ nhân của file n người dùng khác n Quyền truy nhập là đọc, ghi, thực hiện hoặc một tổ hợp nào đó từ nhóm gồm 3 quyền trên. n Số lượng liên kết đối với inode: số lượng các tên file trên các thư mục được liên kết với inode này n Định danh chủ nhân của inode n Định danh nhóm chủ nhân n Độ dài của file tính theo byte n Thời gian truy nhập file: n thời gian file được sửa đổi muộn nhất, n thời gian file được truy nhập muộn nhất, n thời gian file được khởi tạo, 15 n 13 phần tử địa chỉ: 10 phần tử trực tiếp, 1 phần tử gián tiếp bậc 1, 1 phần tử gián tiếp bậc 2 và một phần tử gián tiếp bậc 3
  16. Liên kết n Unix có 2 kiểu liên kết n Liên kết cứng n Liên kết tượng trưng (liên kết mềm) n Liên kết cứng: n "Liên kết cứng" là một cách gọi khác đối với một file đang tồn tại, cho phép chúng ta tạo thêm một cách định vị trong hệ thống tệp n Cùng chia sẻ một inode và inode này chứa đựng tất cả các thông tin về file n Không có liên kết cứng đến thư mục n Liên kết mềm là một kiểu tệp đặc biệt tham chiếu đến tên một tệp hoặc thư mục khác n Kiểu file này như là một con trỏ chỉ dẫn tới một file hoặc một thư mục, và được sử dụng để thay thế cho file hoặc thư mục được trỏ tới n Các thao tác (mở, đọc, ghi ) được thực hiện trên các file liên kết, sau đó, nhân hệ thống sẽ tự động "tham chiếu" và thực hiện trên file đích của liên kết. n Thao tác như xóa file, file liên kết sẽ bị xóa bỏ chứ không phải file đích của nó. 16
  17. Lệnh tạo liên kết n ln [ ] [ ] n Các tùy chọn: n -b, backup[=CONTROL] : tạo liên kết quay trở lại cho mỗi file đích đang tồn tại. n -f, force : xóa bỏ các file đích đang tồn tại. n -d, -F, directory : tạo liên kết cứng đến các thư mục (tùy chọn này chỉ dành cho người dùng có quyền quản trị hệ thống). Một số phiên bản không có tùy chọn này. n -n, no-dereference : một file bình thường được xemlà đích liên kết từ một thư mục. n -i, interactive : vẫn tạo liên kết dù file đích đã bị xóa bỏ. n -s, symbolic : tạo các liên kết tượng trưng. n target-directory= : xác định thư mục tên-thư-mục là thư mục có chứa các liên kết. n -v, verbose : hiển thị tên các file trước khi tạo liên kết. n help : hiển thị trang trợ giúp và thoát. 17
  18. Quyền truy nhập n Quyền truy cập một tệp/thư mục qui định nhóm người sử dụng nào được phép làm gì (thao tác) trên tệp thư mục đó n Các nhóm người sử dụng n Owner/User (người sở hữu), ký hiệu là u n Group (những người cùng nhóm), ký hiệu là g n Other (những người khác), ký hiệu là o n All (tất cả mọi người), ký hiệu là a 18
  19. Các kiểu file 19
  20. Các quyền truy nhập 20
  21. Cách đọc quyền truy nhập n Giả sử khi thực hiện lệnh ls –l, chúng ta có kết quả như sau: n -rw-r r 1 brucelee martialart 5335 Nov 30 2006 myfile n drwxr-xr-x 2 brucelee martialart 96 Apr 17 23:32 gis/ n Khi đó: n Nhóm u được đọc/ghi tệp myfile, không được thực hiện tệp myfile (rw-) n Nhóm g được đọc và duyệt thư mục gis/ và không được tạo tệp mới trong thư mục đó (r-x) n 21
  22. Thay đổi quyền sở hữu/truy nhập n chown [tùy-chọn] [chủ][:nhóm] n Nếu chỉ có tham số về chủ, thì người dùng chủ sẽ có quyền sở hữu file và nhóm sở hữu không thay đổi n Nếu theo sau tên người chủ là dấu “:" và tên của một nhóm thì nhóm đó sẽ nhóm sở hữu file n Nếu chỉ có dấu “:" và nhóm mà không có tên người chủ thì chỉ có quyền sở hữu nhóm của file thay đổi, lúc này, lệnh chown có tác dụng giống như lệnh chgrp n Các tùy chọn: n -c, changes: hiển thị dòng thông báo chỉ với các file mà lệnh làm thay đổi sở hữu (số thông báo hiện ra có thể ít hơn trường hợp -v, -verbosr). n -f, silent, quiet: bỏ qua hầu hết các thông báo lỗi. n -R, recursive: thực hiện đổi quyền sở hữu đối với thư mục và file theo đệ quy. n -v, verbose: hiển thị dòng thông báo với mọi file liên quan mà chown tác động tới (có hoặc không thay đổi sở hữu). n help: đưa ra trang trợ giúp và thoát. n Ví dụ: Thư mục LinuxVN.com có người sở hữu hiện tại là người dùng thu. Để người dùng lan là chủ sở hữu, gõ lệnh: n # chown lan LinuxVN.com 22
  23. Thay đổi nhóm sở hữu n chgrp [tùy-chọn] {nhóm| reference=nhómR} n Thay thuộc tính nhóm sở hữu của file theo tên nhóm được chỉ ra trực tiếp theo tham số nhóm hoặc gián tiếp qua thuộc tính nhóm của file có tên là nhóm R. n Các tùy chọn của lệnh là (một số tương tự như ở lệnh chown): n -c, changes : hiển thị dòng thông báo chỉ với các file mà lệnh làm thay đổi sở hữu (số thông báo hiện ra có thể ít hơn trường hợp - v, -verbosr). n -f, silent, quiet : bỏ qua hầu hết các thông báo lỗi. n -R, recursive : thực hiện đổi quyền sở hữu đối với thư mục và file theo đệ quy. n -v, verbose : hiển thị dòng thông báo với mọi file liên quan mà chgrp tác động tới (có hoặc không thay đổi sở hữu). n help : hiển thị trang trợ giúp và thoát 23
  24. Thay đổi quyền truy cập n chmod [tùy-chọn] n chmod [tùy-chọn] n chmod [tùy-chọn] reference=nhómR n Xác lập quyền truy nhập theo kiểu (mode) trên file: n Dạng xác lập tương đối, n Dạng thứ hai là dạng xác lập tuyệt đối n Dạng gián tiếp chỉ dẫn theo quyền truy nhập của file nhómR. n Các tùy chọn: n -c, changes n -f, silent, quiet n -v, verbose n -R, recursive n help n Tham số reference=RFILE cũng ý nghĩa gián tiếp như trong lệnh chgrp. 24
  25. Cách xác lập tương đối n Ví dụ: n chmod g+w test n chmod o-rx test 25
  26. n Ví dụ, cặp 3 số hệ 8 là 755 tương ứng với dòng 9 bít 111101101 với 111 cho chủ sở hữu, 101 cho nhóm sở hữu, 101 cho người dùng khác n Ví dụ: chmod 753 memo1 n đặt thuộc tính quyền truy nhập đối với file memo1 là rwxr-xr-x Cách xác lập tuyệt đối 26
  27. Xem thông tin về thư mục n -Xác định thư mục hiện thời với lệnh pwd n pwd n Cho biết hiện người dùng đang ở trong thư mục nào và hiện ra theo dạng một đường dẫn tuyệt đối. n Ví dụ: gõ lệnh pwd tại dấu nhắc lệnh sau khi người dùng lan vừa đăng nhập thì màn hình hiển thị như sau: n # pwd n /home/lan n # 27
  28. Xem thông tin về thư mục n ls [tùy-chọn] [file] n Tham số file có thể chứa các mô tả nhóm*, ? và cặp [ và ] n Nếu không có tham số file, mặc định là thư mục hiện thời n Các tùy chọn: n -a : liệt kê tất cả các file, bao gồm cả file ẩn. n -l : đưa ra thông tin đầy đủ nhất về các file và thư mục. n -s : chỉ ra kích thước của file, tính theo khối (1 khối = 1204 byte). n -F : xác định kiểu file (/ = thư mục, * = chương trình khả thi). n -m : liệt kê các file được ngăn cách nhau bởi dấu ",". n -C : đưa ra danh sách các file và thư mục theo dạng cột (hai thư mục gần nhau được xếp vào một cột). n -1 : hiển thị mỗi file hoặc thư mục trên một dòng. n -t : sắp xếp các file và thư mục trong danh sách theo thứ tự về thời gian được sửa đổi gần đây nhất. n -x : đưa ra danh sách các file và thư mục theo dạng cột (hai thư mục gần nhau được xếp trên hai dòng đầu của hai cột kề nhau). n -r : sắp xếp danh sách hiển thị theo thứ tự ngược lại. n -R : liệt kê lần lượt các thư mục và nội dung của các thư mục. 28
  29. Xem thông tin về thư mục 29
  30. Tạo thư mục n mkdir [tùy-chọn] n Cho phép tạo một thư mục mới nếu thư mục đó chưa thực sự tồn tại n Nếu thư mục đã tồn tại, hệ thống sẽ thông báo lỗi n Các tùy chọn: n -m, mode=Mod : thiết lập quyền truy nhập Mod như trong lệnh chmod nhưng không cho quyền rwxrwxrwx. n -p, parents : tạo các thư mục cần thiết mà không thông báo lỗi khi nó đã tồn tại. n verbose : hiển thị các thông báo cho mỗi thư mục được tạo. n help : đưa ra trang trợ giúp và thoát. n Ví dụ, nếu muốn tạo thư mục test trong thư mục home, hãy gõ lệnh sau: n # mkdir /home/test 30
  31. Xóa bỏ thư mục n rmdir [tùy-chọn] n Xóa bỏ bất kỳ thư mục nào nếu có quyền đó n Thư mục chỉ bị xóa khi nó "rỗng" n Không có cách gì khôi phục lại các thư mục đã bị xóa n Các tùy chọn: n ignore-fail-on-non-empty: bỏ qua các lỗi nếu xóa một thư mục không rỗng n -p, parents : xóa bỏmột thư mục, sau đó lần lượt xóa bỏ tiếp các thư mục có trên đường dẫn chứa thư mục vừa xóa. n Ví dụ, dòng lệnh rmdir -p /a/b/c sẽ tương đương với ba dòng lệnh rmdir /a/b/c, rmdir /a/b, rmdir /a (với điều kiện các thư mục là rỗng). n verbose : đưa ra thông báo khi xóa một thư mục. n help : hiển thị trang trợ giúp và thoát. n Ví dụ: n # rmdir -p /test/test1/test2 n # n Dòng lệnh trên sẽ lần lượt xóa ba thư mục test2, test1, test và hiển thị thông báo trên màn hình kết quả của lệnh. 31
  32. Đổi tên thư mục mv n mv n Lệnh này cho phép đổi tên một thư mục từ tên-cũ thành tên-mới. n Ví dụ, lệnh n # mv LinuxVN.com LinuxVN n sẽ đổi tên thư mục LinuxVN.com thành LinuxVN. n Nếu sử dụng lệnh mv để đổi tên một thư mục với một cái tên đã được đặt cho một file thì lệnh sẽ gặp lỗi. n Nếu tên mới trùng với tên một thư mục đang tồn tại thì nội dung của thư mục được đổi tên sẽ ghi đè lên nội dung của thư mục trùng tên 32
  33. Các kiểu file có trong Linux n File người dùng (user data file): là các file tạo ra do hoạt động của người dùng khi kích hoạt các chương trình ứng dụng tương ứng n File hệ thống (system data file): là các file lưu trữ thông tin của hệ thống: cấu hình cho khởi động, tài khoản của người dùng, thông tin thiết bị n File thực hiện (executable file): là các file chứa mã lệnh hay chỉ thị cho máy tính thực hiện n Thư mục hay còn gọi là file bao hàm(directory): là file bao hàmcác file khác và có cấu tạo hoàn toàn tương tự như file thông thường khác nên có thể gọi là file n File thiết bị (device file): là file mô tả thiết bị, được lưu trữ trong thư mục /dev. Các file thiết bị hay gặp trong thư mục này là tty (teletype - thiết bị truyền thông), ttyS (teletype serial - thiết bị truyền thông nối tiếp), fd0, fd1, (floppy disk- thiết bị ổ đĩa mềm), hda1, hda2, hdb1, hdb2, (hardisk - thiết bị ổ cứng theo chuẩn IDE; a, b, đánh số ổ đĩa vật lý; 1, 2, 3 đánh số ổ logic). Trong mc, file thiết bị có màu tímvà bắt đầu bằng dấu cộng (+). n File liên kết (linked file): là những file chứa tham chiếu đến các file khác trong hệ thống n Cho phép người dùng tìmnhanh tới file thay vì tới vị trí nguyên thủy của nó. Giống33 như khái niệm shortcut trong MS-Windows98.
  34. Tạo file n Lệnh touch có nhiều chức năng, trong đó một chức năng là giúp tạo file mới trên hệ thống: touch rất hữu ích cho việc tổ chức một tập hợp các file mới. Cú pháp lệnh: n touch n Lệnh này có tác dụng dùng để cập nhật thời gian truy nhập và sửa chữa lần cuối của một file n Các file được tạo bằng lệnh touch đều được sắp xếp theo thời gian sửa đổi n Nếu sử dụng lệnh touch đối với một file chưa tồn tại, chương trình sẽ tạo ra file đó n Ví dụ: n touch newfile 34
  35. Tạo file n Tạo file bằng cách đổi hướng đầu ra của lệnh (>) n Hữu ích nếu muốn lưu kết quả của một lệnh đã thực hiện n Dùng dấu ">" theo nghĩa chuyển hướng đầu ra chuẩn n Ví dụ: đưa kết quả của lệnh ls -l /bin vào file /home/thu/lenhls bằng cách gõ: n # ls -l /bin > /home/thu/lenhls n Linux tự động tạo nếu file lenhls chưa có, trong trường hợp ngược lại, nội dung file cũ sẽ bị thế chỗ bởi kết quả của lệnh. n # ls -l /bin >/home/thu/lenhls n Nếu muốn bổ sung kết quả vào cuối file, sử dụng dấu ">>" n Ví dụ: n # ls -l /bin >> /home/thu/lenhls n sẽ đưa các dòng danh sách file trong thư mục /bin vào cuối nội dung của file /home/thu/lenhls. 35
  36. Tạo file n Lệnh cat n Có thể sử dụng để lấy thông tin từ đầu vào (bàn phím ) rồi kết xuất ra file hoặc các nguồn khác (màn hình ) n Xem nội dung của một file n Cú pháp lệnh: n cat > n Gõ nội dung của file ngay tại dấu nhắc màn hình và gõ CTRL+d để kết thúc việc soạn thảo n Không cho phép sửa lỗi, nếu muốn sửa một lỗi chính tả trên một dòng, chỉ có cách là xóa lỗi và gõ lại nội dung vừa bị xóa n Ví dụ: tạo file newfile trong thư mục /home/vd n # cat > /home/vd/newfile n #- n Gõ Enter và CTRL+d để trở về dấu nhắc lệnh n Nếu không gõ Enter thì phải gõ CTRL+d hai lần n Có thể sử dụng luôn lệnh cat để xem nội dung của file vừa soạn thảo: 36 n # cat /home/vd/newfile
  37. Sao chép file n cp [tùy-chọn] n cp [tùy-chọn] target-directory= n Sao file-nguồn thành file-đích hoặc sao chép từ nhiều file-nguồn vào một thư mục đích (tham số hay ) n Các tùy chọn: n -a, archive: giống như -dpR (tổ hợp ba tham số -d, -p, -R, như dưới đây). n -b, backup[=CONTROL] : tạo file lưu cho mỗi file đích nếu như nó đang tồn tại. n -d, no-dereference: duy trì các liên kết. n -f, force : ghi đè file đích đang tồn tại mà không nhắc nhở. n -i, interactive: có thông báo nhắc nhở trước khi ghi đè. n -l, link: chỉ tạo liên kết giữa file-đích từ file-nguồn mà không sao chép. n -p, preserve: duy trì các thuộc tính của file-nguồn sang file-đích. n -r : cho phép sao chép một cách đệ quy file thông thường. n -R : cho phép sao chép một cách đệ quy thư mục. n -s, symbolic-link : tạo liên kết tượng trưng thay cho việc sao chép các file. n -S, suffix= : bỏ qua các hậu tố thông thường (hoặc được chỉ ra). n -u, update : chỉ sao chép khi file nguồn mới hơn file đích hoặc khi file đích chưa có. n -v, verbose : đưa ra thông báo về quá trình sao chép. n help : hi n th trang tr giúp và thoát. ể ị ợ 37
  38. Sao chép file n File đích được tạo ra có cùng kích thước và các quyền truy nhập như file nguồn, thời gian tạo lập là thời điểm thực hiện lệnh nên các thuộc tính thời gian sẽ khác n Ví dụ: n # cp /home/ftp/vd /home/test/vd1 n Nếu mô tả đầy đủ tên file đích thì nội dung file nguồn sẽ được sao chép sang file đích n Trong trường hợp chỉ đưa ra vị trí file đích được đặt trong thư mục nào thì tên của file nguồn sẽ là tên của file đích. n # cp /home/ftp/vd /home/test/ n Tên file đích sẽ là vd nghĩa là tạo một file mới /home/test/vd n Nếu sử dụng để sao một thư mục, sẽ có một thông báo được đưa ra cho biết nguồn là một thư mục và vì vậy không thể dùng lệnh cp để sao chép. n # cp . newdir n Ví dụ cp cho phép sao nhiều file cùng một lúc vào một thư mục. n # cp vd vd1 newdir n # pwd 38
  39. Đổi tên file n mv n Lệnh này cho phép đổi tên file từ tên cũ thành tên mới. n Ví dụ: n # mv vd newfile n Lệnh này sẽ đổi tên file vd thành newfile n Nếu file newfile đã tồn tại, nội dung của file vd sẽ ghi đè lên nội dung của file newfile. 39
  40. Xóa file n Lệnh rm là lệnh rất "nguy hiểm" vì trong Linux không có lệnh khôi phục lại những gì đã xóa vì thế hãy cẩn trọng khi sử dụng lệnh này n Cú pháp: n rm[tùy-chọn] n Xóa bỏ một file hoặc nhiều file. n Các tùy chọn: n -d, directory : loại bỏ liên kết của thư mục, kể cả thư mục không rỗng. Chỉ có siêu người dùng mới được phép dùng tùy chọn này. n -f, force : bỏ qua các file (xác định qua tham số file) không tồn tại mà không cần nhắc nhở. n -i, interactive : nhắc nhở trước khi xóa bỏmột file. n -r, -R, recursive : xóa bỏ nội dung của thư mục một cách đệ quy. n -v, verbose : đưa ra các thông báo về quá trình xóa file. n help : hiển thị trang trợ giúp và thoát. n - Lệnh rmcho phép xóa nhiều file cùng một lúc bằng cách chỉ ra tên của các file cần xóa trong dòng lệnh (hoặc dùng kí kiệu mô tả nhóm). 40
  41. Đếm từ trong file n wc [tùy-chọn] [file] n Lệnh hiện ra số lượng dòng, số lượng từ, số lượng ký tự có trong mỗi file, và một dòng tính tổng nếu có nhiều hơn một file được chỉ ra n Nếu không có tùy chọn nào thì mặc định đưa ra cả số dòng, số từ và số ký tự n Ngầm định khi không có tên file trong lệnh thì sẽ đọc và đếm trên thiết bị vào chuẩn n Các tuỳ chọn: n -c, byte, chars : đưa ra số ký tự trong file n -l, lines : đưa ra số dòng trong file n -L, max-line-length : đưa ra chiều dài của dòng dài nhất trong file n -w, words : đưa ra số từ trong file n help : hiển thị trang trợ giúp và thoát. n Ví dụ: n # wc /home/lan/mau/mau1 n 11 64 293 /home/lan/mau/mau1 n Dòng thông báo trên cho biết file mau1 có 293 ký tự, số 64 từ và có 11 dòng n # wc /home/lan/vd/vdcalj /home/lan/vd/vdwc n 8 41 192 /home/lan/vd/vdcalj 41 n 24 209 1473 /home/lan/vd/vdwc n 32 250 1665 total
  42. Loại bỏ những dòng không quan trọng n Khi nội dung một file có một số các thông tin bị trùng lặp: các dòng trống, các dòng chứa nội dung giống nhau => Để làm gọn và thu nhỏ kích thước của file: sử dụng lệnh uniq n uniq [tùy-chọn] [input] [output] n Lệnh uniq sẽ loại bỏ các dòng trùng lặp kề nhau từ input và chỉ giữ lại một dòng duy nhất trong số các dòng trùng lặp rồi đưa ra output n Các tuỳ chọn: n -c, count : đếmvà hiển thị số lần xuất hiện của các dòng trong file. n -d : hiển thị lên màn hình dòng bị trùng lặp. n -u : hiển thị nội dung file sau khi xóa bỏ toàn bộ các dòng bị trùng lặp không giữ lại một dòng nào. n -i : hiển thị nội dung file sau khi xóa bỏ các dòng trùng lặp và chỉ giữ lại duy nhất một dòng có nội dung bị trùng lặp. n -D : hiển thị tất cả các dòng trùng lặp trên màn hình. 42
  43. Sắp xếp nội dung file n sort là lệnh đọc các thông tin và sắp xếp chúng theo thứ tự trong bảng chữ cái hoặc theo thứ tự được quy định theo các tùy chọn của lệnh n sort [tùy-chọn] [file] n Các tùy chọn: n + [- ] : Hai giá trị số1 và số2 xác định "khóa" sắp xếp của các dòng, thực chất lấy xâu con từ vị trí số1 tới vị trí số2 của các dòng để so sánh lấy thứ tự sắp xếp các dòng. Nếu số2 không có thì coi là hết các dòng; nếu số2 nhỏ hơn số1 thì bỏ qua lựa chọn này. Chú ý, nếu có số2 thì phải cách số1 ít nhất một dấu cách. n -b : bỏ qua các dấu cách đứng trước trong phạmvi sắp xếp. n -c : kiểmtra nếu file đã sắp xếp thì thôi không sắp xếp nữa. n -d : xemnhư chỉ có các ký tự [a-zA-Z0-9] trong khóa sắp xếp, các dòng có các kí tự đặc biệt (dấu cách, ? ) được đ-a lên đầu. n -f : sắp xếp không phân biệt chữ hoa chữ thường. n -n : sắp xếp theo kích thước của file. n -r : chuyển đổi thứ tự sắp xếp hiện thời. n Ví dụ: n # sort -f vdsort 43
  44. Xác định kiểu file n Cú pháp lệnh file: n file [tùy-chọn] [-f file] [-m ] n Xác định và in ra kiểu thông tin chứa trong file n Lệnh file sẽ lần lượt kiểmtra từ kiểu file hệ thống, kiểu file magic (ví dụ file mô tả thiết bị) rồi đến kiểu file văn bản thông thường n Nếu file được kiểmtra thỏa mãn một trong ba kiểu file trên thì kiểu file sẽ được in ra theo các dạng cơ bản sau: n text: dạng file văn bản thông thường, chỉ chứa các mã ký tự ASCII. n executable: dạng file nhị phân khả thi. n data: thường là dạng file chứa mã nhị phân và không thể in ra được. n Một số tuỳ chọn: n -b : cho phép chỉ đưa ra kiểu file mà không đưa kèmtheo tên file. n -f tên-file : cho phép hiển thị kiểu của các file có tên trùng với nội dung trên mỗi dòng trong file tên-file. Để kiểmtra trên thiết bị vào chuẩn, sử dụng dấu "-". n -z : xemkiểu của file nén. n Ví dụ: n # file file.c file /dev/hda n file.c: C program text n file: ELF 32-bit LSB executable, Intel 80386,version 1,dynamically linked, not stripped 44 n /dev/hda: block special
  45. Xem nội dung các file n more [-dlfpcsu] [-số] [+/xâumẫu] [+dòng-số] [file ] n Các lựa chọn: n -số : xác định số dòng nội dung của file được hiển thị (số). n -d : trên màn hình sẽ hiển thị các thông báo giúp ng-ời dùng cách sử dụng đối với lệnh more, ví như [ Press space to continue, "q" to quit .], hay hiển thị [Press n "h" for instructions .] thay thế cho tiếng chuông cảnh báo khi bấm sai một phím. n -l : more thường xem^L là một ký tự đặc biệt, nếu không có tùy chọn này, lệnh sẽ dừng tại dòng đầu tiên có chứa ^L và hiển thị % nội dung đã xem được (^L không bị mất), nhấn phímspace (hoặc enter) để tiếp tục. Nếu có tùy chọn -l, nội dung của file sẽ được hiển thị như bình thường nhưng ở một khuôn dạng khác, tức là dấu ^L sẽ mất và trước dòng có chứa ^L sẽ có thêmmột dòng trống. n -p : không cuộn màn hình, thay vào đó là xóa những gì có trên màn hình và hiển thị tiếp nội dung file. n -c : không cuộn màn hình, thay vào đó xóa màn hình và hiển thị nội dung file bắt đầu từ đỉnh màn hình n -s : xóa bớt các dòng trống liền nhau trong nội dung file chỉ giữ lại một dòng n -u : bỏ qua dấu gạch chân. n +/xâumẫu : tùy chọn +/xâumẫu chỉ ra một chuỗi sẽ được tìm kiếm trước khi hiển thị mỗi file. n +dòng-số : bắt đầu hiển thị từ dòng thứ dòng-số. n Ví dụ: n # more -d vdmore 45
  46. Các phím trong more 46
  47. Thêm số thứ tự của các dòng trong file n nl [tùy-chọn] n Các tuỳ chọn: n -b, body-numbering=STYLE : sử dụng kiểu STYLE cho việc đánh thứ tự các dòng trong nội dung file. Có các kiểu STYLE sau: n a : đánh số tất cả các dòng kể cả dòng trống; n t : chỉ đánh số các dòng không trống; n n : không đánh số dòng. n -d, section-delimiter=CC : sử dụng CC để đánh số trang logic (CC là hai ký tự xác định phạmvi cho việc phân trang logic). n -f, footer-numbering=STYLE : sử dụng kiểu STYLE để đánh số các dòng trong nội dung file (một câu có thể có hai dòng ). n -h, header-numbering=STYLE : sử dụng kiểu STYLE để đánh số các dòng trong nội dung file. n -i, page-increment=số : đánh số thứ tự của dòng theo cấp số cộng có công sai là số. n -l, join-blank-lines=số :nhóm số dòng trống vào thành một dòng trống. n -n, number-format=khuôn : chèn số dòng theo khuôn (khuôn: ln - căn trái, không có số 0 ở đầu; rn - căn phải, không có số 0 ở đầu; rz - căn phải và có số 0 ở đầu) n -p, no-renumber : không thiết lập lại số dòng tại mỗi trang logic. n -s, number-separator=xâu : thêmchuỗi xâu vào sau số thứ tự của dòng. n -v, first-page=số : số dòng đầu tiên trên mỗi trang logic. n -w, number-width=số : hiển thị số thứ tự của dòng trên cột thứ số. n help : hiển thị trang trợ giúp và thoát. 47
  48. Xem qua nội dung file n head [tùy-chọn] [file] n Đưa ra màn hình 10 dòng đầu tiên của mỗi file n Nếu có nhiều hơn một file, thì lần lượt tên của file và 10 dòng nội dung đầu tiên sẽ được hiển thị. Nếu không có tham số file, hoặc file là dấu "-", thì ngầm định sẽ đọc từ thiết bị vào chuẩn. n Các tuỳ chọn: n -c, bytes=cỡ : hiển thị cỡ (số nguyên) ký tự đầu tiên trong nội dung file (cỡ có thể nhận n giá trị là b cho 512, k cho 1K, m cho 1 Meg) n -n, lines=n : hiển thị n (số nguyên) dòng thay cho 10 dòng ngầm định. n -q, quiet, silent : không đ-a ra tên file ở dòng đầu. n -v, verbose : luôn đ-a ra tên file ở dòng đầu. n help : hiển thị trang trợ giúp và thoát. n Ví dụ: n # head -6 vdhead1 vdhead2 n ==> vdhead1 vdhead2 <== 48 n 1.7.164 patch 3 n $HOME/GNUstep/Library/AfterStep/start/Desktop/Theme/.include n changed from shell script call to perl script call
  49. Xem qua nội dung file n tail [tùy-chọn] [file] n Đưa ra màn hình 10 dòng cuối trong nội dung của các file n Nếu có nhiều hơn một file, thì lần lượt tên của file và 10 dòng cuối sẽ được hiển thị n Nếu không có tham số file, hoặc file là dấu "-" thì ngầm định sẽ đọc từ thiết bị vào chuẩn. n Các tùy chọn: n retry : cố gắng mởmột file khó truy nhập khi bắt đầu thực hiện lệnh tail. n -c, bytes=n : hiển thị n (số) ký tự sau cùng. n -f, follow[={name | descritptor}] : sau khi hiện nội dung file sẽ hiện thông tin về file: -f, follow, và follow=descriptor là như nhau. n -n, lines=n : hiển thị n (số) dòng cuối cùng của file thay cho 10 dòng ngầm định. n max-unchanged-stats=n : hiển thị tài liệu về file (ngầm định n là 5). n max-consecutive-size-changes=n : hiển thị tài liệu về file (ngầm định n là 200). n pid=PID : kết hợp với tùy chọn -f, chấm dứt sau khi quá trình có chỉ số = PID lỗi. n -q, quiet, silent : không đ-a ra tên file ở dòng đầu trong nội dung được hiển thị. n -s, sleep-interval=k : kết hợp với tùy chọn -f, dừng k giây giữa các hoạt động. n -v, verbose : luôn hiển thị tên của file. n help : hiển thị trang trợ giúp và thoát. 49 n Ví dụ: n # tail -2 vdtail1 vdtail2
  50. Tìm sự khác nhau giữa hai file n diff [tuỳ-chọn] n So sánh nội dung của hai file n Nếu file1 là một thư mục còn file2 là một file bình thường, diff sẽ so sánh file có tên trùng với file2 trong thư mục file1 với file2. n Nếu cả file1 và file2 đều là thư mục, diff sẽ thực hiện sự so sánh lần lượt các file trong cả hai thư mục theo thứ tự từ a-z (sự so sánh này sẽ không đệ qui nếu tuỳ chọn -r hoặc recursive không được đ-a ra). So sánh giữa hai thư mục không thể chính xác như khi so sánh hai file n Các tuỳ chọn: n -a: xem tất cả các file ở dạng văn bản và so sánh theo từng dòng. n -b: bỏ qua sự thay đổi về số l-ợng của ký tự trống. n -B: bỏ qua mọi sự thay đổi mà chỉ chèn hoặc xoá các dòng trống. n brief: chỉ thông báo khi có sự khác nhau mà không đ-a ra chi tiết nội dung khác n nhau. n -d: tìmra sự khác biệt nhỏ (tuỳ chọn này có thể làmchậm tốc độ làmviệc của lệnh n diff). n exclude-from=file: khi so sánh thư mục, bỏ qua các file và các thư mục con có tên n phù hợp với mẫu có trong file. n -i: so sánh không biệt chữ hoa chữ thường. n -r: thực hiện so sánh đệ qui trên thư mục. n -s: thông báo khi hai file là giống nhau. 50 n -y: hiển thị hai file cạnh nhau để dễ phân biệt sự khác nhau.
  51. Tìm theo nội dung file bằng lệnh grep n Lọc đầu ra của một lệnh khác với cú pháp là n | grep n Tìm dòng chứa mẫu đã định trong file được chỉ ra. n grep [tùy-chọn] [file] n Lệnh grep hiển thị tất cả các dòng có chứa mẫu-lọc trong file được chỉ ra (hoặc từ thiết bị vào chuẩn nếu không có file hoặc file có dạng là dấu "-") n Các tùy chọn: n -G, basic-regexp : xemmẫu lọc như một biểu thức thông thường n -E, extended-regexp : xemmẫu lọc như một biểu thức mở rộng n -F, fixed-strings : xemmẫu như một danh sách các xâu cố định, được phân ra bởi n các dòng mới. Ngoài lệnh grep còn có hai lệnh là egrep và fgrep. egrep tương n tự như lệnh grep -E, fgrep tương tự với lệnh grep -F . n -f file, file=file : lấy các mẫu từ file, một mẫu trên một dòng. File trống chứa đựng n các mẫu rỗng, và các dòng đưa ra cũng là các dòng trống. n -H, with-file : đ-a ra tên file trên mỗi dòng chứa mẫu tương ứng. n -h, no-filename : không hiển thị tên file kèmtheo dòng chứa mẫu trong trường hợp n tìmnhiều file. n -i : hiển thị các dòng chứa mẫu không phân biệt chữ hoa chữ thường. n -l : đ-a ra tên các file trùng v i m u l c. ớ ẫ ọ 51 n -n, line-number : thêm số thứ tự của dòng chứa mẫu trong file
  52. Tìm theo nội dung file bằng lệnh grep 52
  53. Tìm theo nội dung file bằng lệnh egrep 53
  54. Tìm file theo đặc tính n find [đường-dẫn] [biểu_thức] n Tìm kiếm file trên cây thư mục theo biểu thức được đưa ra. Mặc định đường dẫn là thư mục hiện thời, biểu thức là -print. n -daystart : đo thời gian (-amin, -atime, -cmin, -ctime, -mmin, -mtime). n -depth : thực hiện tìm kiếm từ nội dung bên trong thư mục trước (mặc định việc tìm kiếm được thực hiện bắt đầu tại gốc cây thư mục có chứa file cần tìm). n -follow : (tùy chọn này chỉ áp dụng cho thư mục) nếu có tùy chọn này thì các liên kết tượng trưng có trong một thư mục liên kết sẽ được chỉ ra. n -help, help : hiển thị kết quả của lệnh find và thoát. n -amin n : tìm file được truy nhập n phút trước. n -atime n : tìm file được truy nhập n*24 giờ trước. n -cmin n : trạng thái của file được thay đổi n phút trước đây. n -ctime n : trạng thái của file được thay đổi n*24 giờ trước đây. n -empty : file rỗng và hoặc là thư mục hoặc là file bình thường. n -user tên-ng-ời: file được sở hữu bởi người dùng tên-người. n Vd: n # find -name 'what*' n ./usr/bin/whatis 54 n ./usr/bin/whatnow
  55. Sao lưu các file n tar [tùy-chọn] [ , ] [ , ] n -c, create : tạo file lưu trữ mới. n delete : xóa từ file lưu trữ (không sử dụng cho băng từ). n -r, append : chèn thêm file vào cuối file lưu trữ. n -t, list : liệt kê nội dung của một file lưu trữ. n -u, update : chỉ thêm vào file lưu trữ các file mới hơn các file đã có. n -x, extract, get : tách các file ra khỏi file lưu trữ. n -C, directory tên-thư-mục : thay đổi đến thư mục có tên là tên-thư-mục. n checkpoint : đưa ra tên thư mục khi đọc file lưu trữ. n remove-files : xóa file gốc sau khi đã sao lưu chúng vào trong file lưu trữ. n totals : đưa ra tổng số byte đ-ợc tạo bởi tùy chọn create. n -v, verbose : hiển thị danh sách các file đã được xử lý. n Ví dụ n # tar create file ./backup /usr/src 55
  56. Nén, giải nén và xem nội dung các file n Cú pháp các lệnh này như sau: n gzip [tùy-chọn] [ -S suffix ] [ ] n gunzip [tùy-chọn] [ -S suffix ] [ ] n zcat [tùy-chọn] [ ] n compress [tùy-chọn] [ ] n uncompress [tùy-chọn] [ ] n Ví dụ n # gzip /home/test/vd1 n # ls /home/test n Desktop data dictionary newt-0.50.8 rpm save vd1.gz n # zcat /home/test/vd1 56
  57. Cơ chế pipe n | | | 57
  58. Tổng kết n File, thư mục, hệ thống file n Một số thư mục đặc biệt n Quyền truy cập, quyền sở hữu tệp và thư mục n Một số lệnh cơ bản thường dùng n Định hướng lại vào/ra và pipe 58