Quản lý File trong Unix/Linux
Tất cả dữ liệu trong Unix được tổ chức trong các file. Tất cả các file được tổ chức trong các thư mục. Những thư mục này được tổ chức trong một cấu trúc cây mà được gọi là hệ thống file.
Khi bạn làm việc với Unix, bằng cách này hay cách khác, bạn dành hầu hết thời gian làm việc với các file. Chương này sẽ hướng dẫn bạn cách tạo và di chuyển các file, sao chép và đặt lại tên cho chúng, tạo liên kết cho chúng….
Trong Unix, có 3 kiểu file cơ bản:
Ordinary File: File thường, là một file trên hệ thống mà lưu trữ dữ liệu, văn bản, hoặc chỉ dẫn chương trình. Trong chương này, bạn sẽ được hướng dẫn cách làm việc với những file này.
Directory: Thư mục, lưu giữ cả các file thường và đặc biệt. Tương tự với các thư mục trong Windown, Mac OS, thư mục trong Unix là các folder.
Special File: File đặc biệt, một số file đặc biệt cung cấp quyền truy cập vào phần cứng như các ổ cứng, CD-ROM, modem và các đầu đọc Ethernet. Một số file đặc biệt khác là tương tự như các phím tắt và khiến bạn có thể truy cập vào một file riêng nào đó bằng cách sử dụng các tên khác nhau.
Liệt kê các file trong Unix/Linux
Để liệt kê các file và các thư mục lưu giữ trong thư mục hiện tại, bạn sử dụng lệnh sau:
$ls
Dưới đây là ví dụ về kết quả của lệnh trên.
$ls bin hosts lib res.03 ch07 hw1 pub test_results ch07.bak hw2 res.01 users docs hw3 res.02 work
Lệnh ls hỗ trợ tùy chọn -l giúp bạn nhận được nhiều thông tin hơn về các file được liệt kê.
$ls -l total 1962188 drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml -rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia -rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar drwxr-xr-x 8 root root 4096 Nov 25 2007 usr drwxr-xr-x 2 200 300 4096 Nov 25 2007 webthumb-1.01 -rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php -rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar -rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid -rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf drwxr-xr-x 11 amrood amrood 4096 May 29 2007 zlib-1.2.3 $
Dưới đây là các thông tin về tất cả các cột được liệt kê:
Cột đầu tiên: biểu diễn kiểu file và sự cho phép được cung cấp cho file. Ở phần bên dưới là miêu tả của các kiểu file.
Cột 2: biểu diễn lượng bộ nhớ mà file hoặc thư mục chiếm dụng.
Cột 3: biểu diễn sự sở hữu của file. Đó là người sử dụng Unix tạo ra file này.
Cột 4: biểu diễn nhóm sở hữu. Mỗi người sử dụng Unix có một nhóm liên kết.
Cột 5: biểu diễn dung lượng bằng byte của file.
Cột 6: biểu diễn ngày tháng mà file được tạo hay chỉnh sửa lần cuối.
Cột 7: biểu diễn tên file hoặc thư mục.
Trong ví dụ về ls - l, mỗi dòng file bắt đầu với một ký tự d, -, hoặc l. Những ký tự này chỉ kiểu của file được liệt kê.
Tiền tố | Miêu tả |
---|---|
- | File thường chẳng hạn như một file văn bản ASCII, nhị phân hoặc đường link cứng. |
b | Nhóm file đặc biệt. nhóm file thiết bị đầu vào/đầu ra ví dụ như một đĩa cứng vật lý. |
c | File ký tự đặc biệt. File thiết bị đầu vào/đầu ra thô ví dụ như một đĩa cứng vật lý. |
d | Là thư mục mà chứa một danh sách các file và thư mục khác. |
l | File liên kết ký tự. Kết nối trên bất kỳ một file thường nào. |
p | Pipe được đặt tên. Một cơ cấu để giao tiếp liên tiến trình. |
s | Socket được sử dụng cho giao tiếp liên tiến trình. |
Các siêu ký tự trong Unix/Linux
Các siêu ký tự có ý nghĩa quan trọng trong Unix. Ví dụ * và ? là siêu ký tự. Chúng ta sử dụng * để so khớp 0 hoặc nhiều ký tự, sử dụng ? để kết nối với một ký tự đơn.
Ví dụ:
$ls ch*.doc
Hiển thị tất cả các file mà tên bắt đầu với cặp ký tự ch và kết thúc với .doc.
ch01-1.doc ch010.doc ch02.doc ch03-2.doc ch04-1.doc ch040.doc ch05.doc ch06-2.doc ch01-2.doc ch02-1.doc c
Dưới đây ký tự * thực hiện so khớp với bất kỳ ký tự nào. Nếu bạn muốn hiển thị tất cả các file kết thúc với .doc, thì khi đó bạn sử dụng lệnh sau:
$ls *.doc
Các file ẩn trong Unix/Linux
Một file không nhìn thấy là một file mà các ký tự đầu tiên của nó là dấu chấm (.). Các chương trình Unix (bao gồm shell) sử dụng hầu hết những file này để giữ các thông tin cấu hình.
Một vài ví dụ về các file ẩn bao gồm:
.profile: là script khởi tạo Bourne shell (sh)
.kshrc: là script khởi tạo Korn shell (ksh)
.cshrc: là script khởi tạo C shell (csh)
.rhosts: là file định hình shell điều khiển từ xa.
Để liệt kê các file nhìn không nhìn thấy (bị ẩn), xác định tùy chọn -a cho lệnh ls:
$ ls -a . .profile docs lib test_results .. .rhosts hosts pub users .emacs bin hw1 res.01 work .exrc ch07 hw2 res.02 .kshrc ch07.bak hw3 res.03 $
Dấu chấm đơn (.): đại diện cho thư mục hiện tại
Dấu chấm kép (..): đại diện cho thư mục gốc.
Tạo các file trong Unix/Linux
Bạn có thể sử dụng vi editor để tạo ra các file thường có tên là filename trên hệ thống Unix. Bạn chỉ cần đơn giản sử dụng lệnh sau:
$ vi filename
Lệnh trên sẽ mở một file với tên đã cung cấp. Bạn sẽ cần nhấn phím i để tiến vào chế độ chỉnh sửa. Một khi bạn trong chế độ chỉnh sửa, bạn có thể bắt đầu ghi nội dung vào file như hình dưới:
This is unix file....I created it for the first time..... I'm going to save this content in this file.
Khi đã thực hiện xong, bạn làm theo các bước sau:
Nhấn phím esc để thoát khỏi chế độ này
Nhấn tổ hợp phím Shift+ZZ để thoát khỏi file hoàn toàn.
Bây giờ bạn sẽ có một file được tạo với filename trong thư mục hiện tại.
$ vi filename $
Chỉnh sửa các file trong Unix/Linux
Bạn có thể chỉnh sửa các file hiện tại bằng cách sử dụng bộ soạn vi. Chúng ta sẽ đi vào chi tiết từng phần trong một chương hướng dẫn cụ thế. Nhưng rút gọn ở đây, bạn có thể mở một file đang tồn tại như sau:
$ vi filename
Một khi file này được mở, bạn có thể tiến vào chế độ chỉnh sửa bằng cách nhấn phím i và sau đó bạn có thể chỉnh sửa nội dung như bạn thích. Nếu bạn muốn di chuyển tại nơi này hoặc nơi khác bên trong file, khi đó đầu tiên bạn cần thoát khỏi chế độ chỉnh sửa bằng cách nhấn phím esc, sau đó bạn có thể sử dụng các phím sau để di chuyển bên trong một file:
Phím l để di chuyển sang phía bên phải;
Phím h để di chuyển sang bên trái;
Phím k để di chuyển lên phía trên trong một file;
Phím j để di chuyển xuống phía dưới trong một file
Do đó bằng cách sử dụng các phím trên, bạn có thể đặt con trỏ bất cứ vị trí nào bạn muốn chỉnh sửa. Một khi bạn đã xác định vị trí, sau đó bạn có thể sử dụng phím i để tiến vào chế độ chỉnh sửa. Sau khi bạn thực hiện xong, nhấn esc và cuối cùng nhấn tổ hợp phím Shift+ZZ để thoát khỏi file hoàn toàn.
Hiển thị nội dung của một file trong Unix/Linux
Bạn có thể sử dụng lệnh cat để quan sát nội dung của một file. Dưới đây là ví dụ đơn giản để quan sát nội dung của một file đã được tạo.
$ cat filename This is unix file....I created it for the first time..... I'm going to save this content in this file. $
Bạn có thể hiển thị số lượng dòng bằng cách sử dụng tùy chọn -b cùng với lệnh cat như sau:
$ cat -b filename 1 This is unix file....I created it for the first time..... 2 I'm going to save this content in this file. $
Tính toán số lượng từ trong một file trong Unix/Linux
Bạn có thể sử dụng lệnh wc để nhận được số dòng, số lượng từ và số lượng các ký tự có trong một file. Dưới đây là một ví dụ đơn giản để quan sát thông tin về file đã được tạo trên.
$ wc filename 2 19 103 filename $
Dưới đây là chi tiết trong 4 cột:
Cột 1: đại diện cho tổng số dòng trong file đó;
Cột 2: đại diện cho tổng số từ trong file đó;
Cột 3: đại diện cho tổng dung lượng byte mà file chiếm. Đây là kích thước thực của file.
Cột 4: đại diện cho tên file.
Bạn có thể đồng thời nhận được thông tin về nhiều file trong cùng một lúc bằng cú pháp đơn giản sau:
$ wc filename1 filename2 filename3
Sao chép các file trong Unix/Linux
Để tạo một bản sao của một file, bạn sử dụng lệnh cp. Cú pháp đơn giản của lệnh này là:
$ cp source_file destination_file
Trong đó, source_file là file chứa thông tin bạn cần sao chép đến destination_file. Dưới đây là ví dụ để tạo một bản sao của filename đang tồn tại:
$ cp filename copyfile $
Bây giờ bạn sẽ tìm thấy một copyfile trong thư mục hiện tại của bạn. File này sẽ giống hoàn toàn filename.
Đặt lại tên file trong Unix/Linux
Để thay đổi tên của một file, bạn sử dụng lệnh mv. Cú pháp đơn giản của lệnh này là:
$ mv old_file new_file
Dưới đây là một ví dụ mà đặt lại filename đang tồn tại thành newfile:
$ mv filename newfile $
Lệnh mv sẽ di chuyển tất cả file đang tồn tại vào trong file mới. Vì thế trong tình huống này bạn sẽ chỉ tìm thấy một newfile duy nhất trong thư mục hiện tại.
Xóa file trong Unix/Linux
Để xóa một file đang tồn tại, bạn sử dụng lệnh rm. Cú pháp đơn giản của nó là:
$ rm filename
Chú ý: Có thể rất nguy hiểm khi xóa một file bởi vì nó chứa thông tin hữu ích. Vì thế bạn cần phải cẩn thận trong khi thực hiện lệnh này. Nó đề nghị tùy chọn -i song song với lệnh rm.
Dưới đây là ví dụ mà gỡ bỏ hoàn toàn filename đang tồn tại:
$ rm filename $
Bạn có thể gỡ bỏ nhiều file tại cùng một lớp như sau:
$ rm filename1 filename2 filename3 $
Các Unix Stream tiêu chuẩn trong Unix/Linux
Các chi tiết trong chương trình Unix có 3 stream (hoặc file) được mở cho nó khi nó bắt đầu:
stdin: Nó như là một đầu vào tiêu chuẩn (standard input) và phần tử mô tả file liên kết là 0. Nó cũng được biểu diễn như là STDIN. Chương trình Unix sẽ đọc đầu vào mặc định từ STDIN.
stdout: Nó như là một đầu ra tiêu chuẩn (standard output) và phần tử mô tả file liên kết là 1. Nó cũng được biểu diễn như là STDOUT. Chương trình Unix sẽ ghi đầu ra mặc định tại STDOUT.
stderr: Nó như là một lỗi tiêu chuẩn (standard error) và phần tử mô tả file liên kết là 2. Nó cũng được biểu diễn như là STDERR. Chương trình Unix sẽ ghi toàn bộ thông tin lỗi tại STDERR.
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học UNIX phổ biến khác tại VietJack:
- Quản lý File
- Thư mục
- Quyền truy cập File
- Cài đặt Unix/Linux
- Các tiện ích cơ bản
- Các Pipe & Bộ lọc (Filter)