LINUX hệ THỐNG tập TIN

9 242 2
LINUX   hệ THỐNG tập TIN

Đang tải... (xem toàn văn)

Thông tin tài liệu

GNU FDL License Agreement LINUX HỆ THỐNG TẬP TIN Chuẩn phân cấp hệ thống tập tin (FHS-Filesystem Hierarchy Standard) 1.1 Hai kiểu FHS độc lập 1.2 Cấu trúc phân cấp thứ cấp thư mục /usr 2 Tìm kiếm tập tin 2.1 Biến môi trường PATH 2.2 Thay đổi PATH 2.3 Lệnh "which" 2.4 Sử dụng "which -a" 2.5 Lệnh whereis 2.6 Lệnh find 2.6.1 Sử dụng ký tự đại diện với lệnh find 2.6.2 Tìm không phân biệt chữ hoa chữ thường với find 2.6.3 Lệnh find biểu thức quan hệ 2.6.4 Tùy chọn type find 2.6.5 find tùy chọn mtimes 2.6.6 The -daystart option 2.6.7 Tùy chọn -size 2.6.8 Xử lý tập tin tìm thấy 2.7 Lệnh locate Biểu thức quan hệ 3.1 Biểu thức quan hệ ? 3.2 So sánh với ký tự đại diện 3.3 Tìm chuỗi đơn giản 3.4 Metacharacters 3.5 Sử dụng [] 3.6 Sử dụng [^] 3.7 Điểm lưu ý 3.8 Ký tự đa "*" 3.9 Mô tả bắt đầu kết thức chuỗi nbhung@cit.ctu.edu.vn GNU FDL License Agreement Chuẩn phân cấp hệ thống tập tin (FHS-Filesystem Hierarchy Standard) Chuẩn phân cấp hệ thống tập tin tài liệu mô tả cách xếp thư mục hệ thống Linux FHS phát triển để cấp khuôn mẫu chung nhằm giúp cho việc phát triển ứng dụng mà không phụ thuộc vào phân phối Linux FHS mô tả thư mục sau: */ : Thư mục gốc * /boot: Các tập tin tĩnh cần thiết cho tiến trình khởi động * /dev : Các tập tin thiết bị * /etc : Các tập tinh cấu hình hệ thống ứng dụng * /lib : Các thư viện chia sẻ môdule hạt nhân * /mnt : Điểm gắn nối hệ thống tập tin cách tạm thời * /opt : Nơi tích hợp gói chương trình ứng dụng * /sbin: Các tập tin thực thi cần thiết cho hệ thống * /tmp : Nơi chứa tập tin tạm * /usr : Hệ phân cấp thứ cấp * /var : Dữ liệu biến đổi 1.1 Hai kiểu FHS độc lập FHS mô tả khuôn mẫu thư mục dựa ý tưởng tập tin : chia sẻ (shareable) hay chia sẻ (unshareable), biến đổi (variable) hay tĩnh (static) Các liệu chia sẻ chia sẻ máy tính với nhau; liệu chia sẻ sử dụng cho máy riêng biệt (ví dụ tập tin cấu hình) Dữ liệu biến đổi thay đổi, điều chỉnh; liệu tĩnh không cho phép thay đổi Bảng sau mô tả việc phân loại thư mục FHS static variable 1.2 shareable /usr /opt /var/mail /var/spool/news unshareable /etc /boot /var/run /var/lock Cấu trúc phân cấp thứ cấp thư mục /usr Dưới thư mục /usr bạn tìm thấy cấu trúc phân cấp thứ hai giống hệ thống tập tin gốc Không bắt buộc thư mục /usr tồn máy tính khởi động mà chia sẻ từ mạng ("shareable") hay nối kết vào từ CD-ROM ("static") Hầu hết chương trình cài đặt Linux không ứng dụng hình thức chia sẻ thư mục /usr, đáng để hiểu hữu ích việc phân biệt cấu trúc phân cấp thư mục gốc cấu trúc phân cấp phụ thư mục /usr nbhung@cit.ctu.edu.vn GNU FDL License Agreement Tìm kiếm tập tin Hệ thống Linux thường chứa hàng trăm ngàn tập tin Linux hỗ trợ nhiều công cụ khác để giúp bạn tìm tập tin 2.1 Biến môi trường PATH Khi bạn thực thi chương trình dòng lệnh, chương trình thông dịch lệnh bash tìm kiếm chương trình danh sách thư mục mô tả biến môi trường PATH Ví dụ, bạn đánh lệnh ls, bash không hiểu chương trình ls nằm thư mục /usr/bin Thay vào đó, bash tham khảo đến biến môi trường có tên PATH, danh sách thư mục phân cách dấu hai chấm ‘:’ Chúng ta khảo sát giá trị PATH: $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin Với giá trị PATH trên, để tìm chương trình ls, bash trước tiên kiểm tra thư mục /usr/local/bin, thư mục /usr/bin Thông thường , ls đặt thư mục /usr/bin, bash dừng lại điểm 2.2 Thay đổi PATH Bạn mở rộng thêm biến PATH cách gán thêm phần tử vào với lệnh sau: $ PATH=$PATH:~/bin $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/home/agriffis/b in Bạn xóa bỏ phần tử khỏi PATH, công việc đơn giản bạn tham khảo đến giá trị tồn $PATH Cách tốt đánh lại nội dung hoàn toàn cho biến PATH: $ PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:~/bin $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/agriffis/bin 2.3 Lệnh "which" Bạn kiểm tra chương trình có nằm thư mục PATH hay không cách dùng lệnh which Ví dụ, ta thấy hệ thống Linux tai chương trình tên sense: $ which sense which: no sense in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin) Trường hợp khác ta lại thành công tìm lệnh ls: $ which ls /usr/bin/ls 2.4 Sử dụng "which -a" Dùng cờ -a để yêu cầu which hiển thị tất chương trình yêu cầu có thư mục mô tả PATH: $ which -a ls /usr/bin/ls /bin/ls 2.5 Lệnh whereis Nếu bạn muốn tìm nhiều thông tin ngòai vị trí chương trình bạn dùng chương trình whereis : $ whereis ls nbhung@cit.ctu.edu.vn GNU FDL License Agreement ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz Ta thấy that ls có mặt hai nơi /bin /usr/bin Hơn thông báo có tài liệu hướng dẫn sử dụng nằm thư mục /usr/share/man 2.6 Lệnh find Lệnh find tiện ích khác cho phép bạn tìm kiếm tập tin Với find bạn không bị giới hạn phạm vi tìm kiếm chương trình, bạn tìm kiếm tập tin mà bạn muốn cách sử dụng tiêu chuẩn tìm kiếm Ví dụ, để tìm tập tin có tên README, thư mục /usr/share/doc ta thực lệnh sau: $ find /usr/share/doc -name README /usr/share/doc/ion-20010523/README /usr/share/doc/bind-9.1.3-r6/dhcp-dynamic-dns-examples/README /usr/share/doc/sane-1.0.5/README 2.6.1 Sử dụng ký tự đại diện với lệnh find Bạn sử dụng ký tự đại diện tham số -name, mà bạn bao bọc cặp nháy đơn hay đặt ký tự \ phía trước ký tự đại diện Ví dụ , muốn tìm tập tin README với phần mở rộng khác sau: $ find /usr/share/doc -name README\* /usr/share/doc/iproute2-2.4.7/README.gz /usr/share/doc/iproute2-2.4.7/README.iproute2+tc.gz /usr/share/doc/iproute2-2.4.7/README.decnet.gz /usr/share/doc/iproute2-2.4.7/examples/diffserv/README.gz /usr/share/doc/pilot-link-0.9.6-r2/README.gz /usr/share/doc/gnome-pilot-conduits-0.8/README.gz /usr/share/doc/gimp-1.2.2/README.i18n.gz /usr/share/doc/gimp-1.2.2/README.win32.gz /usr/share/doc/gimp-1.2.2/README.gz /usr/share/doc/gimp-1.2.2/README.perl.gz [578 additional lines snipped] 2.6.2 Tìm không phân biệt chữ hoa chữ thường với find Ta dùng lệnh sau: $ find /usr/share/doc -name '[Rr][Ee][Aa][Dd][Mm][Ee]*' Hay dùng tham số -iname: $ find /usr/share/doc -iname readme\* 2.6.3 Lệnh find biểu thức quan hệ Nếu bạn quen với biểu thức quan hệ, bạn dùng tùy chọn –regex để in tên tập tin mà trùng khớp với mẫu Nếu không phân biệt chữ hoa chữ thường mẫu dùng tùy chọn -iregex 2.6.4 Tùy chọn type find Tùy chọn -type cho phép bạn tìm kiếm đối tượng hệ thống tập tin theo kiểu khác Các tham số tùy chọn -type b (cho thiết bị dạng khối), c (thiết bị dạng ký tự), d (thư mục), p (ống dẫn có tên), f (tập tin thường), l (liên kết mềm), s (socket) Ví dụ, để tìm kiếm liên kết mềm thư mục /usr/bin mà có chứa chuỗi vim ta thực lệnh sau: $ find /usr/bin -name '*vim*' -type l /usr/bin/rvim /usr/bin/vimdiff /usr/bin/gvimdiff nbhung@cit.ctu.edu.vn GNU FDL License Agreement 2.6.5 find tùy chọn mtimes Tùy chọn -mtime cho phép bạn chọn tập tin dựa thời gian cập nhật sau Tham số mtime khoảng 24 giờ, thêm dấu cộng (có nghĩa sau) dấu trừ (có nghĩa trước) Ví dụ , Xem xét trường hợp sau: $ ls -l ? -rw - root root -rw - root root -rw - root root -rw - root root $ date Mon Jan 18:14:52 EST 0 0 Jan Jan Jan Jan 18:00 18:00 18:00 18:00 a b c d 2002 Bạn tìm tập tin mà tạo vòng 24 vừa qua lệnh sau: $ find -name \? -mtime -1 /a Hoặc bạn tìm tập tin mà chúng tạo trước cách 24 giờ: $ find -name \? -mtime +0 /b /c /d 2.6.6 The -daystart option Nếu bạn mô tả tùy chọn -daystart, khoảng thời gian tính từ bắt đầu ngày không 24 trước Ví dụ, tìm tập tin tạo ngày hôm qua ngày hôm kia: $ find -name \? -daystart -mtime +0 -mtime -3 /b /c $ ls -l b c -rw - root root Jan 18:00 b -rw - root root Jan 18:00 c 2.6.7 Tùy chọn -size Tùy chọn -size cho phép bạn tìm tập tin dựa kích thước chúng Mặc định, đối số -size khối 512-byte, nhiên việc thêm vào hậu tố làm việc dễ dàng Các hậu tố chấp nhận b (khối 512-byte), c (bytes), k (kilobytes), and w (2byte) Bên cạnh đó, bạn thêm vào dấu cộng để nói lớn dấu trừ đề nói nhỏ Ví dụ, để tìm tập tin bình thường mà nhỏ 50 bytes ta dùng lệnh sau: $ find /usr/bin -type f -size -50c /usr/bin/krdb /usr/bin/run-nautilus /usr/bin/sgmlwhich /usr/bin/muttbug 2.6.8 Xử lý tập tin tìm thấy Bạn tự hỏi bạn làm với tập tin tìm Lệnh find có khả tác động tập tin tmf với tùy chọn -exec Tùy chọn nhận dòng lệnh để thực thi tham số kết thức ký tự ; thay thể cặp {} với tên tập tin tìm Xem ví dụ sau: $ find /usr/bin -type f -size -rwxr-xr-x root root 27 Oct -rwxr-xr-x root root 35 Nov -rwxr-xr-x root root 25 Oct -rwxr-xr-x root root 26 Sep -50c -exec ls -l '{}' ';' 28 07:13 /usr/bin/krdb 28 18:26 /usr/bin/run-nautilus 21 17:51 /usr/bin/sgmlwhich 26 08:00 /usr/bin/muttbug nbhung@cit.ctu.edu.vn GNU FDL License Agreement 2.7 Lệnh locate Tìm kiếm tập tin lệnh find nhiều thời gian, phải thực việc tìm thư mục Lệnh locate cải tiến tốc độ tìm kiếm việc sử dụng sở liệu phục vụ cho việc tìm kiếm thông tin hệ thống Lệnh locate dò tìm tất phần đường dẫn không dừng lại tên tập tin Ví dụ: $ locate bin/ls /var/ftp/bin/ls /bin/ls /sbin/lsmod /sbin/lspci /usr/bin/lsattr /usr/bin/lspgpot /usr/sbin/lsof 2.8 Dừng lệnh updatedb Hầu hết hệ điều hành Linux có tiến trình thực việc cập nhật sở liệu Nếu lệnh locate bị lỗi, dùng lệnh updatedb để cập nhật lại sở liệu tìm kiếm Ví dụ: $ locate bin/ls locate: /var/spool/locate/locatedb: No such file or directory $ su Password: # updatedb Lệnh updatedb thời gian để thực Trong nhiều phiên Linux, lệnh locate thay lệnh slocate nbhung@cit.ctu.edu.vn GNU FDL License Agreement Biểu thức quan hệ 3.1 Biểu thức quan hệ ? Một biểu thức quan hệ cấu trúc đặc biệt dùng để biểu diễn mẫu văn (text patterns) Trên hệ thống Linux, biểu thức quan hệ thường dùng để tìm kiếm mẫu văn sử dụng để thực tác vụ tìm thay dòng văn 3.2 So sánh với ký tự đại diện Khi nhìn vào biểu thức quan hệ, bạn thấy cú pháp chúng giống cú pháp dùng ký tự đại diện tên tập tin Tuy nhiên nghiên cứu kỹ thấy chúng hoàn toàn khác biệt 3.3 Tìm chuỗi đơn giản Lệnh grep dò nội dung tập tin theo biểu thức quan hệ để in dòng mà có chứa đoạn văn trùng khớp với mô tả biểu thức quan hệ Cú pháp: grep regex filename: Trong đó: regex: biểu thức quan hệ filename: tập tin để dò tìm Ví dụ: $ grep bash /etc/passwd operator:x:11:0:operator:/root:/bin/bash root:x:0:0::/root:/bin/bash ftp:x:40:1::/home/ftp:/bin/bash Trong ví dụ Grep đọc dòng tập tin /etc/passwd áp dùng biểu thức quan hệ bash vào nội dung tập tin để tìm in dòng có chứa chuỗi bash Thông thường, để tìm chuỗi bạn việc mô tả chuỗi muốn tìm mà không cần mô tả thêm ký tự đặc biệt Tuy nhiên, chuỗi cần tìm có chứa cá chuỗi a +, , *, [, ], \, cần phải đưa chúng vào cặp dấu nháy đôi đặt phía trước chúng ký tự ‘\’ (backslash) Dưới số chuỗi con: • /tmp (dò tìm chuỗi /tmp) • * "\[box\]" (dò tìm chuỗi [box]) • * "\*funny\*" (dò tìm chuỗi *funny*) • * "ld\.so" (dò tìm chuỗi ld.so) 3.4 Metacharacters Với biểu thức quan hệ, bạn thực tác tìm kiếm phức tạp cách ứng dụng ký tự đa (metacharacters) Một số ký tự đa ký tự dấu chấm , trùng khớp với ký tự đơn Ví dụ: $ grep dev.hda /etc/fstab /dev/hda3 / reiserfs noatime,ro 1 /dev/hda1 /boot reiserfs noauto,noatime,notail /dev/hda2 swap swap sw 0 #/dev/hda4 /mnt/extra reiserfs noatime,rw 1 Trong ví dụ trên, chuỗi dev.hda không xuất dòng tập tin /etc/fstab Tuy nhiên, grep không tìm chuỗi dev.hda mà tìm mẫu (pattern) dev.hda Hãy nhớ ký tự trùng khớp với ký tự đơn Như ký tự có chức với ký tự đại diện ? tên tập tin nbhung@cit.ctu.edu.vn GNU FDL License Agreement 3.5 Sử dụng [] Nếu bạn muốn trùng khớp mẫu nhiều ký tự trường hợp dùng ký tự , bạn sử dụng cặp ký tự [ ](square brackets) để mô tả tập ký tự cần trùng khớp Ví dụ: $ grep dev.hda[12] /etc/fstab /dev/hda1 /boot reiserfs noauto,noatime,notail /dev/hda2 swap swap sw 0 Ví dụ sử dụng mẫu [1,2] để đại diện cho ký tự ‘1’ ký tự ‘2’ 3.6 Sử dụng [^] Bạn đảo ngược ý nghĩa cặp [] cách đặt ký tự ^ sau dấu [ , để mô tả ký tự khác với ký tự liệt kê cặp dấu ngoặc vuông [ ] Ví dụ: $ grep dev.hda[^12] /etc/fstab /dev/hda3 / reiserfs noatime,ro 1 #/dev/hda4 /mnt/extra reiserfs noatime,rw 1 3.7 Điểm lưu ý Khi đặt ký tự đa vào bên cặp dấu [] làm ý nghĩa ký tự Ví dụ, bạn đặ ký tự vào cặp dấu [] xem ký tự dấu chấm bình thường ký tự khác 1,2,3 Ví dụ để in dòng tập tin /etc/fstab có chứa chuỗi dev.hda ta đánh dòng lệnh: $ grep dev[.]hda /etc/fstab Hay $ grep "dev\.hda" /etc/fstab 3.8 Ký tự đa "*" Một vài ký tự đa không trùng khớp với ký tự khác dùng để bổ sung ý nghĩa cho ký tự đứng phía trước Một số chúng ký tự * (asterisk), sử dụng để mô tả trùng khớp nhiều lần lặp lại ký tự trước Ví dụ: • ab*c (sẽ trùng với abbbbc không trùng với abqc) • ab*c (sẽ trùng với abc không trùng với abbqbbc) • ab*c (sẽ trùng với ac không trùng với cba) • b[cq]*e (sẽ trùng với bqe không trùng với eb) • b[cq]*e (sẽ trùng với bccqqe không trùng với bccc) • b[cq]*e (sẽ trùng với bqqcce không trùng với cqe) • b[cq]*e (sẽ trùng với bbbeee) • * (sẽ trùng với chuỗi nào) • foo.* (sẽ trùng với chuỗi bắt đầu chuỗi foo) 3.9 Mô tả bắt đầu kết thức chuỗi Hai ký tự ^ $ dùng để mô tả trùng khớp đầu vài cuối chuỗi Bằng cách sử dụng dấu ^ đầu biểu thức quan hệ, bạn yêu cầu mẫu dò tìm diễn đầu tập tin Ví dụ sau sử dụng biểu thức ^# để tìm tất dòng bắt đầu ký tự # tập tin /etc/fstab: $ grep ^# /etc/fstab # /etc/fstab: static file system information # nbhung@cit.ctu.edu.vn GNU FDL License Agreement Ký tự ^ $ kết hợp để tìm kiếm dòng Ví dụ, biểu thức sau trùng khớp với tất dòng bắt đầu ký tự # kết thức ký tự character, giứa dòng bất ký chuỗi ký tự nào: $ grep '^#.*\.$' /etc/fstab # /etc/fstab: static file system information Trong ví vụ trên, bao biểu thức quan hệ lại cặp ký tứ nháy đơn ‘ ‘ để ngăn ngứa trường hợp ký tự $ thông dịch shell nbhung@cit.ctu.edu.vn ... License Agreement Chuẩn phân cấp hệ thống tập tin (FHS-Filesystem Hierarchy Standard) Chuẩn phân cấp hệ thống tập tin tài liệu mô tả cách xếp thư mục hệ thống Linux FHS phát triển để cấp khuôn... Điểm gắn nối hệ thống tập tin cách tạm thời * /opt : Nơi tích hợp gói chương trình ứng dụng * /sbin: Các tập tin thực thi cần thiết cho hệ thống * /tmp : Nơi chứa tập tin tạm * /usr : Hệ phân cấp... nbhung@cit.ctu.edu.vn GNU FDL License Agreement Tìm kiếm tập tin Hệ thống Linux thường chứa hàng trăm ngàn tập tin Linux hỗ trợ nhiều công cụ khác để giúp bạn tìm tập tin 2.1 Biến môi trường PATH Khi bạn thực

Ngày đăng: 03/12/2015, 16:15

Tài liệu cùng người dùng

Tài liệu liên quan