Đặt vấn đề
Bạn cần nhiều thông tin về file, ví dụ đó là file gì ?, ai sở hữu nó ? Nếu nó có thể thực thi thì nó thì nó có bao nhiêu links cứng? Lần thay đổi cuối cùng là khi nào?
Giải quyết
Sử dụng các lệnh ls, stat, file hoặc find
Mình tạo một file có tên get_info nằm trong thư mục tmp:
[root@toet ~]# touch /tmp/get_info
Mình sử dụng lệnh ls
[root@toet ~]# ls /tmp/get_info
Kết quả:
/tmp/get_info
Lệnh ls không có các tùy chọn thì chỉ liệt kê được đường dẫn đến file.
Mình sử dụng tùy chọn -l : [root@toet ~]# ls -l /tmp/get_info
Kết quả : -rw-r--r-- 1 root root 0 Sep 29 01:56 /tmp/get_info
Tùy chọn -l cho ta thông tin chi tiết hơn về file. Mình giải thích một vài thông số:
Mình sử dụng lênh stat (status): Lệnh stat cho ta thấy được trạng thái của file hoặc filesystem
[root@toet ~]# stat /tmp/get_info
Kết quả
File: `/tmp/get_info' Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: 801h/2049d Inode: 2883593 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root)
Gid: ( 0/ root) Access: 2012-09-29 01:56:09.000000000 +0700Modify: 2012-09-29 01:56:09.000000000 +0700Change: 2012-09-29 01:56:09.000000000 +0700
Một mớ :) Các chỉ số UID, GID, Inode rất có ý nghĩa và thực sự quan trọng khi ta nghiên cứu về cấu trúc file.
Trong Linux có nhiều kiểu file: Linux không yêu cầu phần mở đuôi file. Mình lấy ví dụ:
Mình tạo một file có tên type_file.txt (có đuôi txt): [root@toet ~]# touch /tmp/type_file.txt
Mình sử dụng lệnh file để xem kiểu của file này: [root@toet ~]# file /tmp/type_file.txt
Kết quả :
/tmp/type_file.txt: empty
Tiếp tục:
[root@toet ~]# file /tmp/get_info
Kết quả:
/tmp/get_info: empty
Hai kết quả giống nhau và ta biết chúng là những file cùng kiểu, file bình thường.
Mình thử file thêm :
[root@toet ~]# file /etc/passwd
Kết quả:
/etc/passwd: ASCII text
Oh! kiểu của con này khác 2 con trên, ta nhận ra rằng file trong linux có kiểu không dựa vào đuôi. file trên có kiểu ASCII text.
Một điều cần nhớ là trên Linux tất cả mọi thứ đều là file, nếu không phải là file thì nó là một process.
Ta sử dụng lệnh find để tìm kiếm các file trong một cây thư mục. Ví dụ mình muốn tìm file
file_type.txt hồi nãy thì mình tìm tất cả các file trong thư mục /tmp và có đuôi .txt:
[root@toet ~]# find /tmp/ -name "*.txt"
Kết quả:
/tmp/type_file.txt
/tmp/a.txt
Đúng như ý muốn. Một vài thông số
Ta có thể tìm kiếm theo tên ví dụ tìm kiếm file có tên get_info trong thư mục /tmp:
[root@toet ~]# find /tmp -name get_info
Kết quả:
/tmp/get_info
Có thể việc làm trên khá "ngây" khi chỉ việc ls là có kết quả rùi đúng không. OK một ví dụ khác.
Bạn muốn tìm file cấu hình của httpd đi dĩ nhiên bạn biết tên nó, nó là httpd.conf, muốn dùng được find thì ta cần phải biết thêm rằng tìm ở đâu, bước này phụ thuộc vào kình nghiệp, kinh nghiệm ở đây là hầu hết các file cấu hình dịch vụ nằm ở /etc, bắt đầu nào:
[root@toet ~]# find /etc/ -name "httpd.conf"
Kết quả:
/etc/httpd/conf/httpd.conf
Cũng lợi hại đúng không :D
Một điều mình nhận ra đó là nếu mình có thêm một file khác trong thư mục tmp giả sử là get_info.tar nếu mình chỉ dùng find /tmp -name get_info sẽ không hiện được file trên.
Ta sử lí việc trên sử dụng :
[root@toet ~]# find /tmp/ -name get_info\*
Kết quả :
/tmp/get_info.tar
/tmp/get_info
Find có thể tìm kiếm theo kiểu file, theo thời gian sửa đổi cuối cùng. Có thể tìm các tập tin tạo trong ngày hôm nay, ngày hôm qua... Nhiều lắm cứ google nha.
Bạn cần nhiều thông tin về file, ví dụ đó là file gì ?, ai sở hữu nó ? Nếu nó có thể thực thi thì nó thì nó có bao nhiêu links cứng? Lần thay đổi cuối cùng là khi nào?
Giải quyết
Sử dụng các lệnh ls, stat, file hoặc find
Mình tạo một file có tên get_info nằm trong thư mục tmp:
[root@toet ~]# touch /tmp/get_info
Mình sử dụng lệnh ls
[root@toet ~]# ls /tmp/get_info
Kết quả:
/tmp/get_info
Lệnh ls không có các tùy chọn thì chỉ liệt kê được đường dẫn đến file.
Mình sử dụng tùy chọn -l : [root@toet ~]# ls -l /tmp/get_info
Kết quả : -rw-r--r-- 1 root root 0 Sep 29 01:56 /tmp/get_info
Tùy chọn -l cho ta thông tin chi tiết hơn về file. Mình giải thích một vài thông số:
- -rw-r--r-- : Đây là quyền truy cập vào file.
- root root : lần lượt là user sở hữu và nhóm sở hữu file.
- 0 : là số liên kết đến file.
- Sep 29 01:56 : thời gian sửa đổi cuối cùng.
- /tmp/get_info : là tên gọi, là đường dẫn.
Mình sử dụng lênh stat (status): Lệnh stat cho ta thấy được trạng thái của file hoặc filesystem
[root@toet ~]# stat /tmp/get_info
Kết quả
File: `/tmp/get_info' Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: 801h/2049d Inode: 2883593 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root)
Gid: ( 0/ root) Access: 2012-09-29 01:56:09.000000000 +0700Modify: 2012-09-29 01:56:09.000000000 +0700Change: 2012-09-29 01:56:09.000000000 +0700
Một mớ :) Các chỉ số UID, GID, Inode rất có ý nghĩa và thực sự quan trọng khi ta nghiên cứu về cấu trúc file.
Trong Linux có nhiều kiểu file: Linux không yêu cầu phần mở đuôi file. Mình lấy ví dụ:
Mình tạo một file có tên type_file.txt (có đuôi txt): [root@toet ~]# touch /tmp/type_file.txt
Mình sử dụng lệnh file để xem kiểu của file này: [root@toet ~]# file /tmp/type_file.txt
Kết quả :
/tmp/type_file.txt: empty
Tiếp tục:
[root@toet ~]# file /tmp/get_info
Kết quả:
/tmp/get_info: empty
Hai kết quả giống nhau và ta biết chúng là những file cùng kiểu, file bình thường.
Mình thử file thêm :
[root@toet ~]# file /etc/passwd
Kết quả:
/etc/passwd: ASCII text
Oh! kiểu của con này khác 2 con trên, ta nhận ra rằng file trong linux có kiểu không dựa vào đuôi. file trên có kiểu ASCII text.
Một điều cần nhớ là trên Linux tất cả mọi thứ đều là file, nếu không phải là file thì nó là một process.
Ta sử dụng lệnh find để tìm kiếm các file trong một cây thư mục. Ví dụ mình muốn tìm file
file_type.txt hồi nãy thì mình tìm tất cả các file trong thư mục /tmp và có đuôi .txt:
[root@toet ~]# find /tmp/ -name "*.txt"
Kết quả:
/tmp/type_file.txt
/tmp/a.txt
Đúng như ý muốn. Một vài thông số
- -name : tìm kiếm theo tên
- "*.txt" : Tất cả các file có đuôi là txt.
Ta có thể tìm kiếm theo tên ví dụ tìm kiếm file có tên get_info trong thư mục /tmp:
[root@toet ~]# find /tmp -name get_info
Kết quả:
/tmp/get_info
Có thể việc làm trên khá "ngây" khi chỉ việc ls là có kết quả rùi đúng không. OK một ví dụ khác.
Bạn muốn tìm file cấu hình của httpd đi dĩ nhiên bạn biết tên nó, nó là httpd.conf, muốn dùng được find thì ta cần phải biết thêm rằng tìm ở đâu, bước này phụ thuộc vào kình nghiệp, kinh nghiệm ở đây là hầu hết các file cấu hình dịch vụ nằm ở /etc, bắt đầu nào:
[root@toet ~]# find /etc/ -name "httpd.conf"
Kết quả:
/etc/httpd/conf/httpd.conf
Cũng lợi hại đúng không :D
Một điều mình nhận ra đó là nếu mình có thêm một file khác trong thư mục tmp giả sử là get_info.tar nếu mình chỉ dùng find /tmp -name get_info sẽ không hiện được file trên.
Ta sử lí việc trên sử dụng :
[root@toet ~]# find /tmp/ -name get_info\*
Kết quả :
/tmp/get_info.tar
/tmp/get_info
Find có thể tìm kiếm theo kiểu file, theo thời gian sửa đổi cuối cùng. Có thể tìm các tập tin tạo trong ngày hôm nay, ngày hôm qua... Nhiều lắm cứ google nha.
Không có nhận xét nào:
Đăng nhận xét