Unix / Linux - Quản lý tệp

Trong chương này, chúng ta sẽ thảo luận chi tiết về quản lý tệp trong Unix. Tất cả dữ liệu trong Unix được tổ chức thành các tệp. Tất cả các tệp được tổ chức thành các thư mục. Các thư mục này được tổ chức thành một cấu trúc dạng cây gọi là hệ thống tệp.

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 phần lớn thời gian để làm việc với các tệp. Hướng dẫn này sẽ giúp bạn hiểu cách tạo và xóa tệp, sao chép và đổi tên chúng, tạo liên kết đến chúng, v.v.

Trong Unix, có ba loại tệp cơ bản:

  • Ordinary Files- Tệp thông thường là tệp trên hệ thống chứa dữ liệu, văn bản hoặc hướng dẫn chương trình. Trong hướng dẫn này, bạn sẽ làm việc với các tệp thông thường.

  • Directories- Thư mục lưu trữ cả tệp đặc biệt và tệp thông thường. Đối với người dùng quen thuộc với Windows hoặc Mac OS, thư mục Unix tương đương với các thư mục.

  • Special Files- Một số tệp đặc biệt cung cấp quyền truy cập vào phần cứng như ổ cứng, ổ CD-ROM, modem và bộ điều hợp Ethernet. Các tệp đặc biệt khác tương tự như bí danh hoặc phím tắt và cho phép bạn truy cập vào một tệp duy nhất bằng các tên khác nhau.

Tệp danh sách

Để liệt kê các tệp và thư mục được lưu trữ trong thư mục hiện tại, hãy sử dụng lệnh sau:

$ls

Đây là kết quả mẫu 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ợ -l tùy chọn này sẽ giúp bạn có thêm thông tin về các tệp đượ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
$

Đây là thông tin về tất cả các cột được liệt kê -

  • First Column- Đại diện cho loại tệp và quyền được cấp trên tệp. Dưới đây là mô tả của tất cả các loại tệp.

  • Second Column - Đại diện cho số khối bộ nhớ được chiếm bởi tệp hoặc thư mục.

  • Third Column- Đại diện cho chủ sở hữu của tệp. Đây là người dùng Unix đã tạo tệp này.

  • Fourth Column- Đại diện cho nhóm của chủ sở hữu. Mỗi người dùng Unix sẽ có một nhóm được liên kết.

  • Fifth Column - Đại diện cho kích thước tệp bằng byte.

  • Sixth Column - Đại diện cho ngày và thời gian tệp này được tạo hoặc sửa đổi lần cuối cùng.

  • Seventh Column - Đại diện cho tệp hoặc tên thư mục.

bên trong ls -l ví dụ liệt kê, mọi dòng tệp đều bắt đầu bằng d, -, hoặc là l. Các ký tự này cho biết loại tệp được liệt kê.

Sr.No. Tiền tố & Mô tả
1

-

Tệp thông thường, chẳng hạn như tệp văn bản ASCII, tệp thực thi nhị phân hoặc liên kết cứng.

2

b

Chặn tệp đặc biệt. Chặn tập tin thiết bị đầu vào / đầu ra chẳng hạn như ổ cứng vật lý.

3

c

Kí tự đặc biệt. Tệp thiết bị đầu vào / đầu ra thô chẳng hạn như ổ cứng vật lý.

4

d

Tệp thư mục chứa danh sách các tệp và thư mục khác.

5

l

Tệp liên kết tượng trưng. Liên kết trên bất kỳ tệp thông thường nào.

6

p

Đường ống có tên. Một cơ chế giao tiếp giữa các quá trình.

7

s

Socket được sử dụng để giao tiếp giữa các quá trình.

Metacharacters

Metacharacters có một ý nghĩa đặc biệt trong Unix. Ví dụ,*?là siêu ký tự. Chúng tôi sử dụng* để khớp với 0 hoặc nhiều ký tự, một dấu chấm hỏi (?) khớp với một ký tự duy nhất.

Ví dụ -

$ls ch*.doc

Hiển thị tất cả các tệp, tên của chúng bắt đầu bằng ch và kết thúc bằng .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

Đây, *hoạt động như một ký tự meta phù hợp với bất kỳ ký tự nào. Nếu bạn muốn hiển thị tất cả các tệp kết thúc bằng chỉ.doc, thì bạn có thể sử dụng lệnh sau:

$ls *.doc

Các tệp ẩn

Tệp ẩn là một, ký tự đầu tiên là dấu chấm hoặc ký tự dấu chấm (.). Các chương trình Unix (bao gồm cả shell) sử dụng hầu hết các tệp này để lưu trữ thông tin cấu hình.

Một số ví dụ phổ biến về các tệp ẩn bao gồm các tệp -

  • .profile - Tập lệnh khởi tạo Bourne shell (sh)

  • .kshrc - Tập lệnh khởi tạo trình bao Korn (ksh)

  • .cshrc - Tập lệnh khởi tạo C shell (csh)

  • .rhosts - Tệp cấu hình trình bao từ xa

Để liệt kê các tệp ẩn, hãy chỉ định -a tùy chọn để 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
$
  • Single dot (.) - Điều này đại diện cho thư mục hiện tại.

  • Double dot (..) - Điều này đại diện cho thư mục mẹ.

Tạo tệp

Bạn có thể dùng vitrình soạn thảo để tạo các tệp thông thường trên bất kỳ hệ thống Unix nào. Bạn chỉ cần đưa ra lệnh sau:

$ vi filename

Lệnh trên sẽ mở một tệp có tên tệp đã cho. Bây giờ, nhấn phímiđể chuyển sang chế độ chỉnh sửa. Khi bạn ở chế độ chỉnh sửa, bạn có thể bắt đầu ghi nội dung của mình vào tệp như trong chương trình sau:

This is unix file....I created it for the first time.....
I'm going to save this content in this file.

Khi bạn đã hoàn tất chương trình, hãy làm theo các bước sau:

  • cắm chìa khóa esc thoát ra khỏi chế độ chỉnh sửa.

  • Nhấn hai phím Shift + ZZ cùng nhau để ra khỏi hồ sơ hoàn toàn.

Bây giờ bạn sẽ có một tệp được tạo bằng filename trong thư mục hiện tại.

$ vi filename
$

Chỉnh sửa tệp

Bạn có thể chỉnh sửa tệp hiện có bằng cách sử dụng vingười biên tập. Chúng ta sẽ thảo luận ngắn gọn về cách mở một tệp hiện có -

$ vi filename

Sau khi tệp được mở, bạn có thể vào chế độ chỉnh sửa bằng cách nhấn phím ivà sau đó bạn có thể tiếp tục bằng cách chỉnh sửa tệp. Nếu bạn muốn di chuyển đến đây và ở đó bên trong một tệp, thì trước tiên bạn cần thoát ra khỏi chế độ chỉnh sửa bằng cách nhấn phímEsc. Sau đó, bạn có thể sử dụng các phím sau để di chuyển bên trong tệp:

  • l phím để di chuyển sang bên phải.

  • h phím để di chuyển sang phía bên trái.

  • k để di chuyển ngược trong tệp.

  • j phím để di chuyển xuống dưới trong tệp.

Vì vậy, bằng cách sử dụng các phím trên, bạn có thể định vị con trỏ của mình ở bất kỳ đâu bạn muốn chỉnh sửa. Khi bạn đã được định vị, bạn có thể sử dụngiphím để đến trong chế độ chỉnh sửa. Khi bạn hoàn tất việc chỉnh sửa trong tệp của mình, hãy nhấnEsc và cuối cùng là hai chìa khóa Shift + ZZ cùng nhau để ra khỏi hồ sơ hoàn toàn.

Hiển thị nội dung của một tệp

Bạn có thể dùng catlệnh để xem nội dung của tệp. Sau đây là một ví dụ đơn giản để xem nội dung của tệp đã tạo ở trên:

$ 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ố dòng bằng cách sử dụng -b tùy chọn cùng với cat lệnh 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.
$

Đếm từ trong tệp

Bạn có thể dùng wclệnh để đếm tổng số dòng, từ và ký tự có trong một tệp. Sau đây là một ví dụ đơn giản để xem thông tin về tệp được tạo ở trên:

$ wc filename
2  19 103 filename
$

Đây là chi tiết của tất cả bốn cột -

  • First Column - Đại diện cho tổng số dòng trong tệp.

  • Second Column - Đại diện cho tổng số từ trong tệp.

  • Third Column- Đại diện cho tổng số byte trong tệp. Đây là kích thước thực của tệp.

  • Fourth Column - Đại diện cho tên tệp.

Bạn có thể cung cấp nhiều tệp và nhận thông tin về các tệp đó cùng một lúc. Sau đây là cú pháp đơn giản -

$ wc filename1 filename2 filename3

Sao chép các tập tin

Để tạo bản sao của tệp, hãy sử dụng cpchỉ huy. Cú pháp cơ bản của lệnh là:

$ cp source_file destination_file

Sau đây là ví dụ để tạo một bản sao của tệp hiện có filename.

$ cp filename copyfile
$

Bây giờ bạn sẽ tìm thấy một tệp nữa copyfiletrong thư mục hiện tại của bạn. Tệp này sẽ hoàn toàn giống với tệp gốcfilename.

Đổi tên tệp

Để thay đổi tên của một tệp, hãy sử dụng mvchỉ huy. Sau đây là cú pháp cơ bản:

$ mv old_file new_file

Chương trình sau sẽ đổi tên tệp hiện có filename đến newfile.

$ mv filename newfile
$

Các mvlệnh sẽ di chuyển hoàn toàn tệp hiện có sang tệp mới. Trong trường hợp này, bạn sẽ chỉ tìm thấynewfile trong thư mục hiện tại của bạn.

Xóa tệp

Để xóa một tệp hiện có, hãy sử dụng rmchỉ huy. Sau đây là cú pháp cơ bản:

$ rm filename

Caution- Một tệp có thể chứa thông tin hữu ích. Nó luôn được khuyến cáo để cẩn thận trong khi sử dụngDeletechỉ huy. Tốt hơn là sử dụng-i tùy chọn cùng với rm chỉ huy.

Sau đây là ví dụ cho thấy cách xóa hoàn toàn tệp hiện có filename.

$ rm filename
$

Bạn có thể xóa nhiều tệp cùng một lúc bằng lệnh dưới đây:

$ rm filename1 filename2 filename3
$

Luồng Unix tiêu chuẩn

Trong trường hợp bình thường, mọi chương trình Unix đều có ba luồng (tệp) được mở cho nó khi nó khởi động -

  • stdin- Đây được coi là đầu vào chuẩn và bộ mô tả tệp liên quan là 0. Giá trị này cũng được biểu thị là STDIN. Chương trình Unix sẽ đọc đầu vào mặc định từ STDIN.

  • stdout- Đây được coi là đầu ra tiêu chuẩn và bộ mô tả tệp liên quan là 1. Đây cũng được biểu thị là STDOUT. Chương trình Unix sẽ ghi đầu ra mặc định tại STDOUT

  • stderr- Đây được gọi là lỗi tiêu chuẩn và bộ mô tả tệp liên quan là 2. Lỗi này cũng được biểu thị là STDERR. Chương trình Unix sẽ viết tất cả các thông báo lỗi tại STDERR.