Đôi điều về UNIX (FileSystem)

Chia sẻ bởi Nguyễn Tiến Long | Ngày 29/04/2019 | 47

Chia sẻ tài liệu: Đôi điều về UNIX (FileSystem) thuộc Bài giảng khác

Nội dung tài liệu:

Hệ Thống File
(File System)
Hệ thống tệp (File System)
Cấu trúc cây duy nhất:
Một gốc duy nhất: (/)
Các nút (node): thư mục hoặc file
Các lá: file
Xác định một phần tử:
Tuyệt đối: đường dẫn đầy đủ bắt đầu từ gốc (/)
Vd: /home/k48d/prog.c
Tương đối
Một số thư mục đặc biệt
Thư mục gốc /root
Thư mục riêng của siêu người dùng root.
Lưu trữ các file tạm thời, nhân Linux và các file nhị phân quan trọng
Thư mục /bin: chứa các file khả thi
Thư mục /dev: chứa các trình điều khiển thiết bị
Thư mục /etc: chứa các file cấu hình hệ thống
Một số thư mục …(tiếp)
Thư mục /lib
Thư mục /lost+found: chứa các file được khôi phục khi có lỗi
Thư mục /mnt: chứa các kết nối tới đĩa cứng, đĩa mềm
Thư mục /tmp
Thư mục /boot
VFS (Virtual File System)
Hệ thống tệp - Cấu trúc nội tại
Hệ thống tệp - Cấu trúc nội tại
Mọi file trong Linux bao gồm
Các khối dữ liệu chứa nội dung file
Một Inode (Index Node)
Được nhân hệ thống cấp phát khi file được tạo mới
Chứa thông tin về địa chỉ các khối chứa dữ liệu file
Có một hoặc nhiều tên
Tên file và chỉ số Inode là hai trường của một phần tử của thư mục
Hệ thống tệp - Cấu trúc nội tại
Type: Xác định kiểu file
File thông thường
Thư mục
Kí tự/Khối
0 - not used
Perms: Xác định quyền truy nhập cho
Người sở hữu
Nhóm sở hữu
The other remain.
Links:Số lượng liên kết với Inode
Size: Kích thước file (byte)
Timestamps
Thời điểm file được tạo
Thời điểm file được sửa đổi
Thời điểm truy nhập
Bảng địa chỉ (13 phần tử)
Thư mục - Cấu trúc
Thư mục – Lệnh cơ bản
Tạo thư mục : mkdir
2 thư mục con mặc định : .. = cha, . = chính mình
Lệnh cd .. : về thư mục cha
Xoá thư mục : rmdir
Thư mục phải rỗng
Liệt kê thư mục : ls
Tuỳ chọn -a, -l,...

Thiết bị ngoại vi (device)
Như một tệp (user view)
Một lá trong cây FS (trong danh mục /dev)
Cùng thuộc tính (chủ nhân, quyền,…)
Hai loại ngoại vi :
Block
ký tự
Ngoại vi block
Một số đặc trưng:
Đơn vị chuyển dữ liệu cố định: block (512B, 1KB, 4KB ...)
Truy nhập thẳng (block n˚i)
Hệ thống ghi nhớ mọi trao đổi trong bộ nhớ
Có thể tạo lập hệ thống file
Truy nhập dữ liệu qua 2 bước :
Ví dụ : đọc (read) :
chuyển dữ liệu vào bộ nhớ hệ thống (cache buffers)
chép dữ liệu vào không gian
Ngoại vi ký tự
Tất cả ngoại vi không phải loại block :
Trao đổi thông tin khuôn dạng bất kỳ
Truy nhập tuần tự
Hệ thống không ghi lại trao đổi
Không thể tạo hệ thống tệp
Ví dụ : terminals, máy in, bàn phím, chuột, ...
Hai kiểu đọc:
Kiểu dòng (line):
Các ký tự (dòng) được chuyển sau một ký tự quy định (New Line)
Kiểu thô (raw):
Đọc từng từ


Ngoại vi giả (pseudo devices)
Phần tử được quản lý như những ngoại vi (có driver) song không gắn với một phần tử vật lý
/dev/null: "thùng rác“
/dev/tty: terminal gắn với các

Liên kết (Link)
Link = (tên,chỉ số inode) trong một thư mục
Cho phép tạo một link mới từ link cũ
Hai loại liên kết được tạo
Hard Link
Soft Link
Liên kết – Hard Link
Là một tên mới cho một file đang tồn tại
Không có sự phân biệt giữa file gốc và file liên kết
Cùng chia sẻ một Inode
Không thể tạo liên kết cứng tới thư mục
Không thể link giữa hai hệ thống file khác nhau
Liên kết – Soft Link
Con trỏ chỉ dẫn tới một file hoặc thư mục
Các thao tác (mở, đọc, ghi)
Được thực hiện trên file liên kết
Tự động tham chiếu và thực hiện trên file đích
“Xóa”: chỉ xóa trên file liên kết
Cho phép thiết lập liên kết giữa các hệ thống file
Xoá source => truy cập link -Not OK!
Lệnh tạo liên kết
ln [tùy-chọn] <đích> [tên mới]
-d, -F, --directory: Tạo liên kết cứng đến thư mục
-s, --symbolic: tạo liên kết mềm
#ln –s /usr/doc/g77/DOC g77manual.txt
Quyền truy nhập
Mọi phần tử của FS đều được gán cho 3 quyền
Đọc r (read)
Ghi w (write)
Chạy x (execute)
Cho 3 hạng NSD
Chủ nhân (user)
Nhóm chủ nhân (group)
Còn lại (others)
Chú ý:
Với thư mục, quyền x
Cho phép di vào, di ra thư mục
Kiểm soát truy nhập
Căn cứ vào UID và GID của tệp và tiến trình
Tiến trình mang UID và GID của người sử dụng
UID và GID của tệp trong inode
NOTE:
UID đăng nhập (NSD) vs. UID thực (tiến trình)
super-user (root, UID=0) có tất cả các quyền
Kiểm soát truy nhập
Tạo mới một tệp, đổi tên (mv) và xóa tệp (rm)
Kiểm soát qua quyền w của thư mục
Xóa tệp phụ thuộc vào quyền của tiến trình trên thư mục chứ không phải trên bản thân tệp
Kiểm soát truy nhập
(Tệp nhị phân)
Bit SUID (S)
Chạy chương trình với UID (real) của chủ nhân chương trình.
Bit SGID (s)
Chạy chương trình với GID của group của chủ nhân chương trình
Sticky bit (t)
Giữ lại ảnh trong RAM sau khi kết thúc
Lệnh liên quan quyền truy nhập
Lệnh umask
Xác định những quyền bị dỡ bỏ khi tạo tệp hoặc thư mục
Ví dụ:
umask 022 tức là ----w—w-
Các tệp mới sẽ có quyền rwx r-x r--
umask 077 tức là --- rwx rwx
Các tệp mới sẽ có quyền rwx rwx --- ---
Lệnh liên quan … (tiếp)
chown [tùy_chọn] [chủ] [.nhóm]
Thay đổi quyền sở hữu của file, thư mục
[tùy_chọn]
-R, --recursive: thực hiện đệ quy
chgrp [tùy_chọn] [nhóm| --reference=nhómR]
Thay đổi nhóm sở hữu của file, thư mục
[tùy_chọn]
-R, --recursive: thực hiện đệ quy

Lệnh liên quan … (tiếp)
chmod [tùy_chọn]
chmod [tùy_chọn]
chmod [tùy_chọn]--reference=NhomR
Thay đổi quyền truy nhập
[tùy_chọn]
-R, --recursive: thực hiện đệ quy
Lệnh liên quan … (tiếp)
Các xác lập quyền tương đối


Ví dụ:
chmod g+w test
chmod o-rx test
Các xác lập quyền tuyệt đối
Mỗi cụm 3 bít sẽ tương đương một số trong hệ số 8  quyền truy cập = bộ 3 chữ số hệ số 8
755 ~ 111 101 101
#chmod 755 test
Thao tác với thư mục
Lệnh tạo thư mục
mkdir [tùy_chọn]
[tùy_chọn]
-m, --mode=Mod: thiết lập quyền truy nhập
Lệnh xóa thư mục
rm [tùy_chọn]
Chỉ xóa được thư mục rỗng
[tùy_chọn]
-p, --parents: xóa bỏ các thư mục cha có trên đường dẫn
Thao tác với thư mục
Lệnh đổi tên thư mục
mv
Lệnh xác định thư mục hiện thời
pwd
Thao tác với thư mục
Lệnh xem thông tin về thư mục, file
ls [tùy_chọn] [file] …
[tùy_chọn]
-a: liệt kê tất cả các file, bao gồm file ẩn
-l: đưa ra thông tin đầy đủ về file và thư mục
-s: đưa ra kích thước file
-R: liệt kê lần lượt các thư mục và nội dung của thư mục
Mỗi dòng kết quả của lệnh ls có dạng như sau
Thao tác với file
Lệnh tạo file
touch
Sử dụng cách đổi hướng đầu ra của lệnh (>) hoặc (>>)
#ls -l /bin > /home/tem/haidt
#ls -l /bin >> /home/tem/haidt
cat >
Thao tác với file
Lệnh sao chép file
cp [tùy_chọn]
cp [tùy_chọn] –target-directory=
[tùy_chọn]
-d: duy trì các liên kết
-l, --link: chỉ tạo liên kết
-p: duy trì thuộc tính của file nguồn
-R: sao chép đệ quy
-s: chỉ tạo liên kết mềm
Thao tác với file
Lệnh xóa file
rm [tùy_chọn]
[tùy_chọn]
-d: xóa bỏ liên kết của thư mục, kể cả không rỗng
-r, -R: Xóa đệ quy
Lệnh đếm từ và dòng trong file
wc [tùy_chọn] [file] …
[tùy_chọn]
-c, --bytes, --chars: đưa ra số ký tự trong file
-l: đưa ra số dòng
-w: đưa ra số từ
Thao tác với file
Lệnh xác định kiểu file
file [tùy_chọn] [-f file] [-m …]
[tùy_chọn]
-b: chỉ đưa ra kiểu file mà không kèm tên file
-z: xem kiểu file nén
Kết quả
text
executable
data
Thao tác với file
Lệnh xem nội dung file
cat [tùy_chọn]
[tùy_chọn]
-b: hiện thị thêm số thự tự dòng ( bỏ qua dòng trống)
-n: hiện thị thêm số thự tự dòng (cả dòng trống)
-s: chỉ hiện thị một dòng trống
Thao tác với file
Xem nội dung file với lệnh more
more [-dlfpcsu] [-số] [+/xâu_mẫu] [+dòng_số] [file…]
[tùy_chọn]
-số: số dòng nội dung file được hiện thị
-d: hiện thị các thông báo tương tác
-p: không cuộn màn hình thay vào đó là xóa màn hình cũ
-s: xóa các dòng trống liền nhau, chỉ giữ lại một
+/xâu_mẫu: chuỗi được tìm kiếm trước khi hiển thị
+dòng_số: dòng bắt đầu hiện thị
Thao tác với file
Lệnh đếm từ và dòng
wc [tùy_chọn] [file]…
[tùy_chọn]
-c, --byte: đưa ra số ký tự trong file
-l, --liné: đưa ra số dòng trong file
-L: đưa ra chiều dài của dòng dài nhất
-w, --words: đưa ra số từ trong file
Thao tác với file
Lệnh loại bỏ những dòng không quan trọng
uniq [tùy_chọn] [input] [output]
Loại bỏ các dòng trùng lặp kề nhau từ [input] (thiết bị vào chuẩn) và chỉ dữ lại một dòng duy nhất rồi đưa ra [output] (thiết bị ra chuẩn)
[tùy_chọn]
-d: hiện thị dòng bị trùng lặp
-u: hiện thị nội dung file sau khi xóa bỏ toàn bộ các dòng trùng lặp
-i: hiện thị nội dung file, chỉ dữ lại một dòng giống nhau
Thao tác với file
Sắp xếp nội dung file
sort [tùy_chọn] [file] …
Hiện thị nội dung [file] sau khi đã sắp xếp
[tùy_chọn]
+ [-]: xác định khóa sắp xếp trên các dòng từ vị trí đến
-b: bỏ qua các dấu cách đứng trước trong phạm vi sắp xếp.
-d: xem như chỉ có các ký tự [a-zA-Z0-9] trong khóa sắp xếp
-f: không phân biệt chữ hoa, chữ thường
-n: sắp xếp theo chiều tăng dần
Thao tác với file
Thêm số thứ tự các dòng trong file
nl [tùy_chọn]
Khi không có hoặc khi là dấu “-” thì đọc nội dung từ thiết bị vào chuẩn.
[tùy_chọn]
-b=STYLE: các kiểu STYLE
a : đánh số tất cả các dòng
t : chỉ đánh các dòng không trống
n : không đánh số dòng
-i, --page-increment=số : đánh số thứ tự dòng theo cấp số cộng với công sai là
-n, --number-format=khuôn : khuôn nhận các giá trị sau
ln : căn trái, không có số 0 ở đầu
rn: căn phải, không có số 0 ở đầu
rz: căn phải, có số 0 ở đầu
-d, --section-delimiter=CC : ký tự phân cách trang
-v, --first-page=số : số dòng đầu tiên trên mỗi trang.
Thao tác với file
Lệnh xem qua nội dung file
head [tùy_chọn] [file] …
Mặc định đưa ra màn hình 10 dòng đầu tiên của [file]. Nếu không có [file] hoặc [file] bằng “-”, thì đọc từ thiết bị vào chuẩn
[tùy_chọn]
-n, --lines=n: hiện thị n dòng đầu tiên
-q: không đưa ra tên file ở dòng đầu
-v: luôn đưa ra tên file ở dòng đầu
Thao tác với file
Xem qua nội dung file
tail [tùy_chọn] [file] …
Ngầm định đưa ra 10 dòng cuối cùng của file. Nếu không có [file] hoặc file bằng “-” thì đọc từ thiết bị vào chuẩn
[tùy_chọn]
-f, --follow[={name|descriptor}]: sau khi hiện nội dung file, sẽ hiện thị thông tin về file.
-n, --lines=n: hiện thị n dòng cuối cùng
-q: không đưa ra tên file ở đầu dòng
-v: luôn hiện thị tên file
Thao tác với file
Tìm sự khác nhau giữa hai file
diff [tùy_chọn]
[tùy_chọn]
-a: xem tất các file ở dạng văn bản và so sánh từng dòng
-b: bỏ qua sự thay đổi về số lượng ký tự trống
--brief: chỉ thông báo khi có sự khác nhau.
-i: không phân biệt chữ hoa chữ thường
-r: đệ quy trên thư mục
-s: thông báo khi hai file là giống nhau
-y: hiện thị hai file cạnh nhau.
Biểu thức chính quy
(Regular Expression)
Thao tác với file
Lệnh tìm nội dung file
grep [tùy_chọn] [file]
Hiện thị tất cả các dòng chứa trong . Nếu [file] rỗng hoặc bằng “-” thì đọc từ thiết bị vào chuẩn.
[tùy_chọn]
-G : là một biểu thức thông thường
-E : là một biểu thức mở rộng
-A n: đưa ra n dòng nội dung tiếp theo sau dòng chứa mẫu

Thao tác với file
Lệnh tìm nội dung file
grep [tùy_chọn] [file]
[tùy_chọn]
-B n: đưa ra n dòng trước dòng chứa mẫu
-C n: hiện thị n dòng nội dung
-b: hiện thị địa chỉ tương đối các dòng được đưa ra
-c: đếm số dòng tương ứng chứa mẫu trong file
-f file: lấy mẫu từ file, mỗi dòng một mẫu.
-H: đưa ra tên file trên mỗi dòng chứa mẫu
-h: không hiện thị tên file
-n: thêm số thứ tự của dòng chứa mẫu
-r: đệ quy
-v: hiện thị các dòng không chứa mẫu
-l: đưa ra các tên file trùng với mẫu lọc
Thao tác với file
Ví dụ lệnh tìm nội dung file grep
#grep -H thutest text
text: thutest
text: toithutest
#grep -H “^thutest” text
text: thutest
#grep ‘b+’ /etc/passwd | head
Thao tác với file
Tìm các đặc tính của file
find [đường_dẫn] [biểu_thức]
Tìm kiếm file trong [đường_dẫn]
[biểu_thức]
( EXPR ); !EXPR hoặc –not EXPR; EXPR1 -a EXPR2
[tùy_chọn]
-depth: TÌm từ nội dung bên trong thư mục trước
-amin n: file được truy nhập n phút trước
-atime n: tìm file được truy nhập n*24 giờ trước.
-cmin n: trạng thái file được thay đổi n phút trước đây
-ctime n: trạng thái file được thay đổi n*24h trước đây
-empty
Thao tác với file
Tìm các đặc tính của file (tiếp)
[tùy_chọn]
-group nhóm: file thuộc quyền sở hữu của nhóm
-links n: file có n liên kết
-mmin n: dữ liệu file được thay đổi lần cuối vào n
phút trước đây
-mtime n: dữ liệu được sử vào n*24h trước đây
-name mẫu: tìm kiếm file có tên là mẫu.
-uid n: chỉ số người sở hữu file là n
-user tên: file được sở hữu bởi người dùng tên
Thao tác với file
Tìm các đặc tính của file (tiếp)
[tùy_chọn]
-type kiểu: file thuộc kiểu
b: đặc biệt theo khối
c: đặc biệt theo ký tự
d: thư mục
f: file bình thường
l: liên kết tượng trưng
-print: in ra danh sách các file tìm thấy
-exec {} ;
Thực hiện
{}: thay thế cho tên file tương ứng
Có dấu cách giữa ‘{}’ và ‘’
Thao tác với file
Ví dụ về lệnh file
#find . -type f –exec -l mapping {} ;
Nén và sao lưu các file
Sao lưu các file
tar [tùy_chọn] [, …] [, …]
[tùy_chọn]
-c: tạo file lưu trữ mới
-x: tách các file ra khỏi file lưu trữ
-C tên_thư_mục: thay đổi đến thư mục tên_thư_mục
--remove-files: xóa file gốc khi lưu trữ xong
-v, --verbose: hiện thị tiến độ lưu trữ
-f file: xác định tên file lưu trữ là file.
Ví dụ: tar –cf /dev/fd0H1450 /usr/src
Nén và sao lưu các file
Nén dữ liệu
gzip [tùy_chọn] [-S suffix] []
gunzip [tùy_chọn] [-S suffix] []
zcat [tùy_chọn] []
[tùy_chọn]
-d: giải nén
-f: ép buộc thực hiện nén hoặc giải nén
-l: hiện thị các thông tin liên quan đến file được nén
-r: nén thư mục
-S .suf: sử dụng .suf thay cho .gz
-v: hiện thị tiến độ nén/giải nén
Nén và sao lưu các file
Nén dữ liệu
compress [tùy_chọn] []
uncompress [tùy_chọn] []
Tạo ra file nén với phần mở rộng .Z
File containing Data of Fields
Gồm nhiều dòng
Trên mỗi dòng chứa các dữ liệu về trường (Fields)
Các trường được phân cách với nhau bởi một ký hiệu phân cách trường (User-defined)
Số trường trên các dòng phải bằng nhau
Các trường trên dòng được đánh số thứ tự từ 0.
File containing Data of Fields
#sort [tùy_chọn] ...
Sắp xếp nội dung file chứa dữ liệu trường
[tùy_chọn]
-n :sắp xêp tăng dần; -r : sắp xếp giảm dần
-tx: x là ký tự phân cách trường (Default )
+ -: Khóa sắp xếp là từ trường cho đến trường ở trước trường
Có thể sắp xếp theo nhiều trường
$ sort -t: -n +4 -5 carinfo
Sắp xếp theo trường giá (trường thứ 4 trong carinfo)


File containing Data of Fields
$tr set1 set2 < file
Kí tự trong set1 trong tệp file được thay thế bởi kí tự tương ứng trong set2
$ tr a-z A-Z $cat f1 f2 f3 | tr set1 set2



File containing Data of Fields
$cut [-dx] –f ...
Lấy ra nội dung các trường trong
-dx: x là ký tự phân cách trường
: danh sách chỉ số các trường được lấy ra
$cut -d: -f2,6 carinfo
Lấy ra các trường từ trường thứ 2 đến trường thứ 6 trong file carinfo
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Tiến Long
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)