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:

  1. 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.
  2. 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.
  3. 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ê:

  1. 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.
  2. Cột 2: biểu diễn lượng bộ nhớ mà file hoặc thư mục chiếm dụng.
  3. 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.
  4. 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.
  5. Cột 5: biểu diễn dung lượng bằng byte của file.
  6. 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.
  7. 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.
bNhó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ý.
cFile 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ý.
dLà thư mục mà chứa một danh sách các file và thư mục khác.
lFile liên kết ký tự. Kết nối trên bất kỳ một file thường nào.
pPipe được đặt tên. Một cơ cấu để giao tiếp liên tiến trình.
sSocket đượ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ụ *? 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:

  1. Cột 1: đại diện cho tổng số dòng trong file đó;
  2. Cột 2: đại diện cho tổng số từ trong file đó;
  3. 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.
  4. 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:

  1. 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.
  2. 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.
  3. 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.

Bình luận