Các Lược Giảng Chuyên Sâu về Sử Dụng Văn Lệnh BASH trong Linux/Bài 1A
Loạt bài "Các Lược Giảng Chuyên Sâu về Sử Dụng Văn Lệnh BASH trong Linux" của tác giả Làng Đậu giữ bản quyền 2006. Người đọc chỉ được sử dụng cho mụch đích học tập hay giảng dạy cho cá nhân. Cấm mọi hình thức sao chép, đăng lại, hay in lại nhằm mụch đích mua bán hay trục lợi mà không có sự cho phép chính thức của tác giả. Mọi thông tin về việc phổ biến rộng rãi có tính quảng bá tài liệu này cho mụch đích giáo dục hay các phê bình, đề nghị về nội dung bài giảng xin liên lạc về vo_quang_nhan@yahoo.com
Bài 1A - kiến trúc của tập tin - lệnh thường dùng -
Mục lục
- 1 Tập tin trong Linux/UNIX - Các thuộc tính
- 2 Các lệnh hệ thống quan trọng Trong Linux
- 3 Tên tập tin trong Linux và kí tự phỏng định
- 4 Đặc tính đệ quy trong các lệnh hệ thống Linux
- 5 Lược tả các loại tập tin trong Linux/UNIX
Tập tin trong Linux/UNIX - Các thuộc tính[sửa]
Một cách vắn tắt, trong Linux các thuộc tính của một tập tin được chỉ thị và xác dịnh bởi các bit trạng thái liên kết với tập tin đó dể biểu tả các đặc tính như là read-only (chỉ đọc được), archive (dùng cho lưu trữ), system (hệ thống), hidden (ẩn dấu), v.v...
Trong Linux/UNIC mỗi tập tin sẽ chứa:
a) Quyền sở hữu bao gồm quyền sở hữu của người dùng với giá trị định danh (identifier) trong hệ bát phân là 4000 và quyền sở hữu của nhóm có giá trị danh định trong hệ bát phân là 2000
b) Các quyền truy cập được xác định bằng 9 bit, các bit này cho phép loại đối tượng nào có thể đọc, viết và thực thi nội dung tập tin. Gọi là các phép sử dụng (permissions)
c) 3 bit trong đó có 2 bit dùng để xác định xem tập tin đó hay chương trình đó có thể được truy cập và xử lý trong lúc thi hành và bit còn lại là bit lưu dính (sticky)
d) 4 bit dùng để xác định chức năng của tập tin. Các bit này được cài đặt ngay từ khi tập tin được tạo nên và không thể thay đổi được.
e) Thời điểm tập tin được tạo (creating time) ra và thời điểm chúng bị truy cập (access time)
f) Độ lớn của tập tin: đây là số đo bằng đơn vị byte (hay bội số của byte) của nội dung thông tin lưu chứa bên trong một tập tin không tính đến các yếu tố khác kể cả các thông tin về thuộc tính của nó
g) Tên tập tin và phân loại.
h) Số liên kết của cùng một tập tin
Đặc biệt 12 bit của trường hợp a và b trên hợp thành kiểu của tập tin. Chi tiết của các thuộc tính kể trên ngoại trừ điểm f) và g) sẽ được bàn chi tiết phần sau
Để kiểm nghiệm lại các thuộc tính của một tập tin người ta thường dùng lệnh:
"ls -l <TÊN_TẬP_TIN>".
Thí
dụ:
Khi
dùng
lệnh
ls
-l
lên
một
thư
mục,
các
tập
tin
sẽ
hiển
thị
tương
tự
như
minh
họa
dưới
đây
Lưu ý: Một lệnh khác cũng giúp người dùng hiểu thêm về nội dung (nhưng không phải là các thuộc tính theo định nghĩa trên) của một tập tin là lệnh:
file [TÊN_TẬP_TIN]
Để đọc được nhiều chi tiết về thuộc tính và trạng thái sử dụng của một tập tin có thể dùng lệnh
stat [TÊN_TẬP_TIN]
Quyền sở hữu[sửa]
Các đặc tính về quyền sở hữu được đặt ra cho tập tin trong linux cũng không ngoài lý do an toàn. Có hai đặc tính chính đó là sở hữu chủ (owner) và nhóm chủ (group owners). Hầu hết các hệ điều hành Linux và UNIX chỉ kiểm tra lại quyền sở hữu này trên tập tin khi chúng được đem ra cài đặt quyền thực thi hay được truy cập lúc thi hành một lệnh nào đó.
Sở hữu chủ[sửa]
Đặc tính sở hữu quy định quyền tối thượng quyết định về nội dung, các đặc tính và các quyền khả dụng của tập tin đó thuộc về ai. Thường người dùng nào tạo ra tập tin sẽ có được quyền sở hữu này. Người có quyền sở hữu trên một tập tin có thể thay đổi nội dung, có thể hoán chuyển, thay đổi các đặc tính về phép sử dụng (permission) của tập tin cũng như có thể chia sẽ hay chuyển quyền sử dụng hay sở hữu của tập tin đó cho người dùng khác. Người ta có thể thay đổi sở hữu chủ của các tập tin bằng lệnh chown
Thí dụ: Giả sử bạn đang có quyền sở hữu tập tin mytxt và muốn chuyển quyền này cho người dùng 'anon': chown -c anon mytxt
Lưu ý: Người dùng "root"(4) có toàn quyền thay đổi đặc tính này như là truất phế đặc tính sở hữu chủ trên một tập tin của bất kì người dùng nào và đổi thành quyền sở hữu cho người dùng khác một cách vô điều kiện mà không cần phai thông báo cho người chủ nguyên thủy của tập tin
Nhóm sở hữu[sửa]
Trong khi chỉ có một người được quyền sở hữu tập tin thì, tập tin đó còn có thể có đặc tính là sở hữu của một nhóm người. Một nhóm người đó được chỉ định (bởi người hay nhóm tạo ra tập tin hay bởi "root") là nhóm sở hữu của một tập tin. Một khi là thành viên sở hữu trong nhóm, thì người đó có thể có quyền thi hành một số thao tác lên trên tập tin. Các thao tác này đưọc quy định bởi người quản lý (root) hay bởi mặc định khi máy đưọc cài đặt. (Trong Linux thì mỗi nhóm có thể có một tên nhận dạng riêng (group identifier)).
Lưu ý: Hoàn toàn tương tự như trường hợp sở hữu cá nhân, đặc tính nhóm sở hữu hoàn toàn có thể bị thay đổi bởi người dùng "root".
Người ta có thể thay đổi sở hữu chủ hay nhóm chủ của các tập tin bằng lệnh chown hay lệnh chgrp
Thí dụ:
-
Để
chuyển
đổi
nhóm
sở
hữu
của
mytxt
cho
nhóm
'root':
chown :root mytxt
-
Để
chuyển
đổi
quyền
sở
hữu
mytxt
cho
tài
khoảng
'Dung'
và
nhóm
chủ
là
'medicine':
chown Dung:medicine mytxt
Các quyền truy cập của một tập tin[sửa]
Các quyền truy cập (access right) hay phép truy cập (access permission) của một tập tin được tạo thành một cách mặc định hay do quyết định của người tạo ra tập tin đó nhằm chia sẽ quyền sử dụng một phần hay toàn bộ quyền sử dụng cho người cùng nhóm hay người sử dụng bên ngoài. Các quyền sử dụng này bao gồm: Quyền đọc (read) nội dung tập tin, quyền thay đổi nội dung tập tin (write), và quyền thực thi (execute) tập tin
Để xác định sự chia sẻ quyền sử dụng này thì Linux/UNIX dành ra 12 bit thông tin chia là 3 loại chính: loại chỉ thị quyền truy cập (9 bit), loại bit cho phép chia sẽ sẽ một nhóm làm chủ hay người (khác) chủ tập tin, và loại bit lưu dính (sticly)
Các bit dùng cho quyền truy cập của một tập tin nhằm xác định những thao tác nào cho phép tiến hành lên tập tin người nào được phép tiến hành. Chúng bao gồm 3 lớp:
- Lớp 1: 3 bit trong hệ thống bát phân (octal) là các bit ở các vị trí 100, 200, và 400; chúng khống chế quyền truy cập cho người chủ (của tập tin) kí hiệu tắt là u (viết tắt từ "user")
- Lớp 2: 3 bit trong hệ thống bát phân là các bit ở các vị trí 10, 20, và 40 chúng khống chế quyền truy cập cho nhóm chủ (của tập tin) kí hiệu tắt là g (viết tắt từ "group")
- Lớp 3: 3 bit trong hệ thống bát phân là các bit ở các vị trí 1, 2, và 4 chúng khống chế quyền truy cập cho những người dùng khác (không phải thuộc cùng nhóm chủ hay không là người chủ của tập tin) kí hiệu tắt là o (viết tắt từ "other")
Như
vậy
mỗi
nhóm
có
thể
tạo
ra
tối
đa
8
giá;
trị
quy
định
khác
nhau.
Để
thay
đổi
các
giá
trị
này
thì
người
chủ,
nhóm
chủ
hay
root
có
thể
dùng
lệnh
chmod.
Sau
đây
là
bảng
ghi
ý
nghĩa
của
8
giá
trị
có
thể
này.
Bảng
ghi
các
các
giá
trị
quyền
truy
cập
khi
dùng
lệnh
chmod
(Các
giá
trị
nhị
phân
trong
ngoặc
đơn
dùng
để
đối
chiếu)
Bảng
ghi
các
các
giá
trị
quyền
truy
cập
khi
dùng
lệnh
'chmod' (Các giá trị nhị phân trong ngoặc đơn dùng để đối chiếu) |
|||
Các
giá
trị
quyền truy cập của một lớp |
Quyền
truy
cập viết trong dạng string |
Ý nghĩa | |
0
(000) 1 (001) 2 (010) 3 (011) 4 (100) 5 (101) 6 (110) 7 (111) |
-x
-w
-r +x -w -r -x +w -r +x +w -r -x -w +r -x +w +r +x -w +r +x +w +x |
không
cho
phép
đọc,
viết
,thực
thi chỉ cho quyền thực thi chỉ cho quyền viết chỉ cho quyền thực thi và viết chỉ cho quyền đọc chỉ cho quyền viết và đọc chỉ cho quyền thực thi và đọc cho cả thực thi, viết, và đọc |
Khi không muốn sử dụng giá trị bác phân, để có thể áp dụng lệnh chmod cho từng lớp, có thêm các tham số dạng string như là kí hiệu 'u' cho lớp 1, g cho lóp 2, và o cho lớp 3.
Thí dụ: Thay đổi các thuộc tính của tập tin mytxt. (Một cách tổng quát dùng dấu + để cho thêm thuộc tính và dấu - để ngăn cấm thuộc tính đó)
-
Tạo
thuộc
tính
khả
thi
lên
mytxt
đối
với
người
chủ
tập
tin
mà
thôi:
chmod u+x mytxt
-
Tạo
thuộc
tính
khả
thi
lên
mytxt
đối
với
mọi
người:
chmod u+x g+x o+x mytxt
hay đơn giản hơnchmod +x mytxt
-
Tạo
thuộc
tính
chp
phép
đọc,
viết,
và
thực
thi
lên
mytext
với
người
chủ
tập
tin:
chmod u+x+w+r mytxt
-
Ngăn
cấm
người
ngoài
và
nhóm
chủ
viết
lên
nội
dung
tập
tin:
chmod g-w o-w mytxt
-
Không
cho
bất
kì
ai
viết
lên
tập
tin:
chmod u-w g-w o-w mytxt
-
Cho
phép
người
ngoài
có
cùng
quyền
hạn
truy
cập
của
chủ:
chmod o=u mytxt
- Thay vì dùng hệ thống kí hiệu tắt, người ta có thể dùng hệ cơ số bát phân. Tuy nhiên, khi ra lệnh này người có chủ quyền trên tập tin cần nhớ rằng vị trí thứ nhất từ trái dành cho chủ tập tin, vị trí thứ hai là nhóm chủ và vị trí thứ 3 dành cho người ngoài.
-
Lệnh
thường
thấy
nhất
là
chmod 755 mytxt
. Lệnh này cho phép nhóm chủ và người ngoài chỉ được phép đọc và thi hành nhưng lại không thể điều chỉnh nội dung của tập tin trong khi người chủ tật tin lại có quyền đó.
Lưu ý: Việc ra lệnh điều chỉnh quyền truy cập mà dùng chỉ có 1 con số (0-7), chẳng hạn như lệnh "chmod 7 mytxt" sẽ tạo các thuộc tính đọc viết và thi hành cho người ngoài và mặc định các giá trị thuộc tính cho nhóm chủ và người chủ bằng 0. Nó tương đương với lệnh
chmod 007 mytxt
-- thuộc tính 007 sẽ ngăn cấm chính người chủ hay nhóm chủ của mytxt làm các thao tác đọc viết và thi hành lên mytxt. Do đó cách tốt nhất là nên gõ cả ba số bát phân để thay đổi thuộc tính. Như vậy để ngăn người ngoài và cả nhóm chủ truy cập lên tập tin thì có thể ra lệnh:
chmod 700 mytxt
Sticky bit[sửa]
Sticky bit hay còn gọi là bit lưu dính. Bit lưu dính có vị trí bát phân là 1000 trước đây thiết kế để dùng trên các máy không có nhiều bộ nhớ và nó chỉ được gán để dùng với các tập tin khả thi. Khi bit này được cài nó sẽ thông báo cho hệ điều hành lưu giữ chương trình trong bộ nhớ cho các thực thi sau đó (có thể được chạy bởi người dùng khác) nhằm mụch đích chia chung một chương trình phần bộ nhớ tải cho nhiều người và tăng hiệu quả sử dụng.
Ngày nay, bit này đã không còn dùng cho mụch đích kể trên mà chúng được dùng để tăng cường an toàn cho các thư mục. Nếu không cài bit này lên một thư mục thì thư mục đó sẽ cho phép bất kì người dùng nào tạo ra, điều chỉnh, hay xóa các tập tin và các thư mục con nằm bên trong nó. Ngược lại khi được cài, ngoại trừ người chủ (và root) thì không ai được phép thay đổi hay xoá toàn bộ thư mục đó.
Trong
Linux,
người
ta
có
thể
mở/đóng
bit
lưu
dính
bằng
cách
dùng
lệnh
chmod.
Thí
dụ
lệnh:
chmod
1755
mydir/
sẽ
cho
cài
các
quyền
truy
cập
theo
giá
trị
755
và
cài
luôn
giá
trị
1
cho
bit
lưu
dính.
Kí
hiệu
của
bit
lưu
dính
là
't'.
Để biết được một thư mục có cài giá trị bit lưu dính hay không người ta có thể dùng lệnh: file <TÊN_THƯ_MỤC> và giá trị trả về cho thư mục có cài đặt sticky bit có thể là
[TÊN THƯ MỤC]
': sticky directory'
Thuộc tính cài cho người sử dụng về quyền thực thi[sửa]
Trong nhiều trường hợp một tập tin sau khi đã được cài quyền thực thi (+x) cho người ngoài dùng nhưng đến khi người dùng chạy thử thì tập tin đó không thể hoàn tất công việc vì mycommand trong lúc thi hành đòi hỏi phải xử lí hay truy cập một số dữ liệu hay lệnh khác mà các dữ liệu hay lệnh này lại không được cài quyền truy cập cho người ngoài. Kí hiệu của thuộc tính này là s
Như
vậy,
nếu
người
dùng
X
tạo
ra
một
script
mycommand
đã
được
cài
giá
trị
thực
thi
+x
lên
mycommand
nhưng
khi
thi
hành
mycommand
lại
đòi
hỏi
phải
mở
và
đọc
tập
tin
dữ
liệu
mydata
và
người
dùng
X
không
muốn
cho
người
ngoài
được
phép
trực
tiếp
đọc
hay
viết
lên
mydata
mà
không
thông
qua
lệnh
mycommand
thì
X
có
thể
ra
lệnh:
chmod
+s
mycommand
.
Trong
hình
1,
dòng
10,
tập
tin
có
tên
share
đã
được
cài
giá
trị
này.
Do
đó
kí
tự
s
xuất
hiện
trong
các
thuộc
tính
về
quyền
truy
cập.
Bị chú: chữ s là sự viết tắt cho cụm từ setuid on execution or setgid on execution (có nghĩa là cài quyền thực thi trên sở hữu chủ hay nhóm chủ của tập tin đó).
Đổi tên tập tin[sửa]
Có
nhiều
cách
để
đổi
tên
một
tập
tin
thông
dụng
nhất
là
dùng
lệnh
mv [TÊN_CŨ] [TÊN_MỚI]
.
Một
cách
khác
để
đổi
tên
một
tập
tin
là
dùng
lệnh
cp [TÊN_CŨ] [TÊN_MỚI]
để
chép
nó
sang
một
tập
tin
có
tên
khác
và
sau
đó
xoá
tập
tin
cũ
bằng
lệnh
rm
<TÊN_CŨ>
.
Tuy
nhiên
khi
làm
việc
này
với
một
tập
tin
có
cỡ
lớn
thì
sẽ
tốn
thời
gian
cho
máy
chép.
Lưu
ý:
Lệnh
này
nguyên
cho
phép
người
ta
chuyển
vị
trí
của
một
tập
tin.
Thí
dụ:
mv
test/mytxt
release/document
sẽ
di
chuyển
tập
tin
mytxt
trong
thư
mục
con
test
sang
thư
mục
con
release
với
tên
mới
là
document.
Các lệnh hệ thống quan trọng Trong Linux[sửa]
Để
nhận
được
đầy
đủ
thông
tin
hơn,
dùng
lệnh
man [TÊN_LỆNH]
Trong
đó,
[TÊN_LỆNH]
không
cần
phải
chỉ
rõ
đường
dẫn.
Trong
bảng
trình
bày,
chữ
in
đậm
đứng
sau
dấu ;
là
lệnh
tương
tự
có
cách
dùng
giống
nhau.
Một
số
lệnh
sẽ
không
có
trong
hệ
điều
hành
UNIX.
Tuỳ
theo
cách
cài
đặt,
nhiều
mệnh
lệnh
sẽ
đòi
hỏi
chủ
quyền,
nhóm
quyền
hay
quyền
truy
cập
để
có
thể
gọi
được
chúng
đặc
biệt
là
các
nhóm
lệnh
liên
quan
đến
bảo
mật
hệ
thống.
Ngoài
ra,
cách
tốt
nhất
để
nắm
bắt
và
có
thể
tận
dụng
hệ
thống
lệnh
của
Linux
là
nên
có
trong
tay
một
tài
liệu
chuyên
khảo
về
việc
này.
Chẳng
hạn
như
cuốn:
"Linux
in
a
Nutshel"
của
nhiều
tác
giả
do
nhà
xuất
bản
O'reilly
ấn
hành
(ISBN
0596009305)
Các
tham
số
nếu
viết
trong
ngoặc
nhọn
{
}
là
các
tham
số
bắt
buộc
phải
có
dê
lệnh
thực
thi
trong
khi
các
tham
số
đặt
trong
ngoặc
vuông
sẽ
có
giá
trị
lựa
chon
[
]
nếu
không
có
lệnh
có
thể
vẩn
được
thi
hành
theo
chế
độ
mặc
định
Lưu ý: Kiến trúc của Linux/Unix cho phép xem tất cả các thiết bị, tập tin, thư mục,.... và ngay cả bộ nhớ đều là một dạng của các tập tin hệ thống. Do đó, các lệnh Linux/Unix có thể có hiệu lực mạnh hơn các mệnh lệnh trong hệ điều hành Windows rất nhiều. Chẳng hạn, việc đọc thẳng nội dung thô cuả một ổ cứng hay của một địa chỉ trong bộ nhớ hay ngay cả trong hạt nhân trên Linux/UNIX thì dể dàng hơn nhiều (có thể chỉ dùng các lệnh hệ thống thông thường và lại có để lắp đặt chúng vào trong các văn lệnh trong khi đó, việc này gần như không cho phép khi dùng Windows ngoại trừ phải sử dụng các dịch vụ, hay các bộ điều vận (device driver) hay các tiện ích đặc biệt hay phải dùng ngôn ngữ lập trình bậc tương đối thấp như C/C++ chẳng hạn. Còn việc đọc trực tiếp bằng văn lệnh thì hầu như không thể được.
-
Mệnh lệnh
Cú pháp/tham số thường dùng
lệnh tương tự/liên quanÝ nghĩa
(dòng lệnh Windows tương đương)Thí dụ
(phân cách nhau bởi; hay xuống hàng)Lưu ý
(khả năng/giới hạn)awk
'pattern {action}file'
gawk
Điều chỉnh nội dung và báo cáo văn bản awk '{print $1 $2}' mydata xem thêm trong các phần kế tiếp bash
[script]
sch;ksh
Gọi 1 màn hình trình bao con hay thực thi một văn lệnh sh myscript.sh; bash Để gọi trình bao korn thi hành myscript dùng:
ksh [TÊN_TẬP_TIN]
basename
{path}
trả về tên riêng trong dòng tên đầy đủ basename "/home/test/myfile.txt trả về myfile.txt bc
lệnh gọi máy tính toán. bc có tính tương tác bzip2
[-dztfq1..9]
bunzip2; bzcat
nén và giải nén các tập tin .bz2 bzip2 -d myfile.bz2 cat
[-AbEnstTv]{files}
hiển thị nội dung của tập tin (văn bản) -- type cat -n mytext
cat *.txtcó thể dùng kí tự phỏng định (wildcard) (5) chmod
{attribute} {file}
thay đổi thuộc tính các file -- attrib chmod +x +r myscript*.txt có khả năng dùng kí tự phỏng định và đệ quy chown
[-cfR][owner][:group]{file}
thay đổi chủ hay nhóm chủ các tập tin chown -c Bill myfile
chown hung:root myfilecó khả năng dùng kí tự phỏng định và có khả năng đệ quy clear
làm trống, tạo màn hình mới -- cls clear cd
{directory}
thay đổi thư mục hiện hoạt -- cd cd ~
cd /homecp
[-auifp]{source}{target}
chép các tập tin hay thư mục sang thư mục hay tập tin khác. -- copy; xcopy cp -a mydir /home
cp -f file1.txt file2.txt mydir/có khả năng dùng kí tự phỏng định và có khả năng đệ quy (dùng tham số -a) date
[-s] [+FORMAT]
cài hay hiển thị đồng hồ thời gian
-- time; datedate +%d/%M/%Y;date
date -s "Wed Nov 24 11:23:00"cho phép thay đổi định dạng khi hiển thị. dd
[if=file][of=file][bs=;count=]
ABCDEFGHIJKLMNPOQRSTUVWXYZABCDEFGHIchép dữ liệu thô (dump) từ 1 tập tin sang tập tin khác dd if=/dev/sdb of=/dev/sdc
dd <dev/zero >myDisk.img count=512 bs=1024
cho phép đổi hướng, có thể sử dụng như một lệnh để tạo bản dự phòng (dùng chung với gzip để nén) df
[-ahikm] [file]
du; free
báo cáo về tỉ lệ sử dụng trên các thiết bị lưu trữ
-- chkdskdf
df -kdiff
[-lines,ibBr]{file1}{file2}
Trả về sự khác nhau giữa hai tập tin
-- comp, fcdiff -r --brief oldir newdir
diff -i text1 text2có khả năng đệ qui có thể không phân biệt chữ viết hoa dirname
{file}
trả về tên đầy đủ của thư mục chứa tập tin {file} dirname /home/dung/test.txt dmesg
[-n]
trả về thông tin chứa trong bộ đệm (buffer) của nhân (kernel) dmesg lệnh giúp đọc lại các thông báo từ việc tải và dở tải của các bộ điều vận. Có ích trong quá trình tìm lỗi (debug) dos2unix
[-kqon]
unix2dos
đổi định dạng cho tập tin văn bản từ kiến trúc DOS sang UNIX dos2unix myfile.txt echo
{-en} {string}
hiển thị một dòng chữ -- echo echo -n "helo"
echo -e $"\\033[1;32mGreen"cho phép sử dụng các phiếm thoát (escape character) với tham số -e expr
{expression}
đánh giá một biểu thức y=`expr $y + 1`
x=`expr length $a`factor
tính giai thừa factor 100 fdisk
[-l -u] {device}
điều chỉnh bảng phân bố (partition) ổ dĩa
-- fdiskfdisk /dev/hdb có thể làm hại máy. file
[-kz] {file}
xác định kiểu tập tin file a.out
file -z file.zipfind
{path} {expressions}
tìm kiếm tập tin trong một thư mục find /home -name text* hỗ trợ kí tự phỏng định (wildcard) và hỗ trợ tìm kiếm đệ quy fsck
[-Atr] {device}
fsck.ext2;fsck.ext3;fsck.vfat;
fsck.reiserfsKiểm và sửa các tập tin hệ thống
-- chkdskfsck.ext3 /dev/sda1
fsck.exe2 initrdcó thể gây hệ quả mất dữ liệu khi sửa ftp
[-ig] [host]
chương trình dịch chuyển file
-- ftpftp 11.101.177.178 có tính tương tác fuser
[-aiklm]
xác định các tiến trình dùng tới các tập tin của một ổ nối (socket) fuser -km /home có thể gây hại cho các ứng dụng đang chạy. Dùng để hủy các tiến trình đang chạy làm cản trở một thao tác khác.
grep
[-ceir] {pattern}{file}
egrep
trả về dòng văn bản trùng khớp với một dạng thức cho trước
--findgrep "Vo \w Dung" myfile xem thêm trong các phần kế tiếp groupadd
[-grf]
groupdel; groupmod
tạo nhóm mới (đây là các nhóm chủ dùng trong thuộc tính các tập tin) groupadd -g 122 Chemistry lệnh của quản lý gzip
[options] {file}
zip; unzip; gunzip
nén và giải nén các tập tin kiểu zip head
[-cnq] {file}
xuất ra các dòng đầu của tập tin head myfile
head -n 1 mytexthostname
[-adFif] [hostname]
domainname;nodename
xuất hay cài đặt lại tên máy chủ hostname VNN dùng trong cài đặt mạng id
[-gGnru]
trả về các UID GID thực và còn hiệu dụng id phuongdung lệnh của quản lý info
[-dfnOR] [name]
hiển thị thông tin đầy đủ về một mệnh lệnh hay một thiết bị info ls tương tự như man nhưng có tính tương tác init
{0123456asbc}[-sba]
telinit
khởi động sự điều khiển tiến trình init 3
init 5
init 6dùng đổi chế độ người dùng hay tái khởi động máy insmod
[-efq] [module]
rmmod
Tải vào kernel môt bộ điều vận hay mô đun insmod aic7xxx logname
trả về taì khoản người đăng nhập logname lệnh của quản lý ls
[-aAdklt1] [file]
hiển thi nội dung của một thư mục
-- dirls *.txt
ls -a
ls -lcho phép dùng kí tự phỏng định và chế độ đệ quy lsdev
Hiển thị thông tin về thiết bị phần cứng trên máy lsdev lsmod
hiển thị các bộ điều hợp đã tải lsmod lspci
[-nxbdi]
hiển thị các thiết bị PCI lspci -n
lspci -dlsusb
[-sdDpt]
usbmodules
hiển thị các thiết bị USB lsusb ln
[-dfs]{target}[link_name]
tạo các tập tin liên kết ln txt txt2
ln -s file slinkfilecó ich khi dùng liên kết mềm -s lp
[options] {file}
lpr
gửi yêu cầu tới dịch vụ in lprng
-- printman
[-acK] {name}
info
định dạng và xuất ra bảng hướng dẫn
-- helpman ls
man -a mkdirmake
-f file [options] target
tiện ích make make install MAKEDEV
[-nMSdi]
mknod
tạo tập tin thiết bị cd /dev; MAKEDEV xda; mknod sg c 21 0 mkdir
[-mp] {directories}
tạo thư muc mkdir -m 755 dir1 dir2
mkdir -p /home/chem/orgcó thể tạo thư mục trong nhiều cấp độ sâu, và tạo nhiều thư mục cùng lúc mkfs
[-tc] {filesystem}
mkfs.ext2;mkfs.ext3;mkfs.vfat
định dạng hệ thống tập tin
-- formatmkfs.ext3 /dev/sda
mkfs.ext2 initrd
mkfs -t vfat /dev/hda1modinfo
[-adflnp] {modulefile}
hiển thị thông tin về một mô dun trong hạt nhân modinfo aic7xxx more
[-dlfs] {file}
less
cắt nội dung của một tập tin ra thành cở của màn hình để hiển thị
--moremore myfile mount
[-afFrwto][device directory]
Kết nối vào một hệ thống tập tin nêu danh sách các hệ thống tập tin mount
mount /dev/cdrom /mnt/cdrom
mount -o loop imge.iso img_dirmv
[-fiu] {source}{target}
di chuyển hay đổi tên tập tin
-- ren, movemv file1 file2 mydir/
mv file.text file.txthỗ trợ di chuyển nhiều tập tin, kí tự phỏng định netstat
[options]
hiển thị trạng thái mạng netstate lệnh quản lý nice
{-n} {command [arg]}
renice; snice; skill
thực thi chương trình với độ ưu tiên
(-20=cao nhất và 19=thấp nhất)nice -n -8 ./myprog nohup
{command [arg]}
run a program immune to hang up nohup mydaemon start passwd
[-kludnxwi]
thay đổi mật khẩu passwd Bill pgrep
[-flnPs] {pattern}
pkill
hiển thị tên của các tiến trình và các thuộc tính khác pgrep myscript pidof
[-sxo] {programs}
trả về danh định của tiến trình đang chạy pidof mydaemon ping
[-abcdfFpQr] {host}
gửi ICPM ECHOREQUEST đến máy chủ
-- pingping 12.177.178.105 printf
{format} [ARG]
định dạng và hiển thị dữ liệu (float=2.234; printf "float=%f" $float)
printf "tHellon"dùng kiểu C/C++ procinfo
[-fFabdimnr]
hiển thị trạng thái của hệ thống procinfo ps
[-AadflHn][rplosu]
pstree
báo cáo trạng thái của các tiến trình ps -A
ps -efdùng để theo dõi tình trạng của các tiến trình reboot
[-nwdihp]
poweroff; halt
tái khởi động rboot -n có thể gây mất dữ liệu rev
{file}
hiển thị ngược trật tự của một tập tin rev myfile.txt rm
[-drRfi] {files}
xoá file hay directory
--del; deltreerm myfile
rm -rf mydir/có thể nguy hại, đệ quy,
kí tự phỏng định, xóa nhiều tênrmdir
[-p] {directory}
xóa directory
--deltreermdir -p a/b/c
rmdir a/b/c a/b ccó thể nguy hại, đệ quy, ki; tự phỏng định, xóa nhiều tên rpm
lệnh quản lý gói rpm rpm -ql man
rpm -i newfoftware.rpm
rpm -e oldsoftwarehữu dụng để cài đặt phần mềm sed
[-nef] file
Stream EDitor (soạn thảo dòng văn bản) sed 's/Vo/Nguyen/g' myfile xem các bài giảng tiếp theo seq
[-sfw][first][increment]{last}
jot
hiển thị một dãy số for a in `seq $COUNT`; do echo -n "$a "; fone # 1 2 3 4 5 ... 80 tiện trong các vòng lặp (loop) setserial
[-abGqWz]{device}[param[arg]]
cài đặt hay đọc thông tin từ một cổng liên tục có thể gây hại shutdown
[-tkrhfFc][time][message]
dùng để tắt máy shutdown -t 3 now sort
[-bdfinr][-t-u-o] {file}
trả về các dòng xếp thứ tự từ 1 tập tin
--sortsort -r mydata
sort -b filestat
[-ft] {files}
báo cáo đầy đủ trạng thái của một tập tin stat myfile stty
[-agF] {setting}
diều chỉnh và hiển thị cài đặt ở đầu cuối stty -echo string
[-afnote] files
hiển thị các dòng là dòng chữ trong tệp strings mydriver.o strip
[-FIORfKNopxX] {object}
nm
cắt bỏ các "symbol" trong tập tin khả thi strip *.o dùng để thu nhỏ lại kích thước các tập tin hư viện và mô dun. Có thể nguy hại su
[-cflm] {user}
chạy hệ vỏ dùng tên và mật khẩu người khác su root
su Joelệnh quản lý sudo
[lLkpbcasHPS]command
thi hành lệnh như là người dùng trong
/etc/sudoerssudo -u Bill cat BillFile use for hacking? sync
buộc viết các dữ liệu cập nhật trong các bộ đệm vào trong thiết bị lư trữ sync có thể hữu dụng tail
[-cnq] {file}
hiển thị thông tin phần sau của 1 tập tin tail -n 3 mytext tar
[cdufgpvxz] {file}
tạo ra hay giải nén 1 tập tin
-expandgzip 9 > file.tar.gz
tar zxvf file.tar.gz
tar cpf mydir > data.tar; tar -xvf data.tarcó thể hữu dụng telnet
[-BKacefl] {host}[port]
chương trình nối qua giao diện telnet telnet 12.177.113.178 tương tác top
[dpqSscCinb]
hiển thị các tiến trình của CPU top tương tác tr
[-cdst]
dịch hay xoá các kí tự từ stdin và viết chúng vào stdout tr -d a-c <file #delete all character a,b,c in file cho phép dùng kí tự thoát uname
[-amnrsp]
báo cáo thông tin về hệ thống uname -r có thể hữu dụng uniq
[cđfisnuw]
xoá các dòng trùng lặp trên 1 file đã xếp thứ tự dòng uniq dùng với sort units
[-cofs]
đổi đơn vị đo đạc units miles meters useradd
[-cdDefgGpu] {login_name}
userdel; usermod
tạo hay cập nhật thông tin về 1 tài khoản useradd -G root - u 100 Phuong lệnh quản lý vi
[options] files
vim
bộ soạn thải văn bản
-- editvi myfile tương tác w
[-husf] [user]
chỉ ra ai đang đăng nhập và làm gì w Bill
wlệnh quản lý wall
{message}
gửi thông báo đến mọi đầu cuối wall hello system shut down in 3 minutes có thể hữu dụng wc
[-cmlLw] files
hiển thị số byte, word và dòng của tập tin wc -w file
wc -l filewget
[options] {url}
cho phép tải về 1 tập tin từ máy phục vụ wget -p http://www.123.com/file1 tiện lợi khi dùng trong một script which
[options] {program}
hiển thị tên đầy đủ của một mệnh lệnh which cp whereis
[-bmsuBMSf] {file}
tìm ra chỗ lưu giữ của dữ liệu, nguồn, và trang hướng dẫn của một lệnh whereis mkdir whatis
{word}
tìm trong cơ sở dữ liệu của lệnh whatis thông tin về một từ (tên, thuật ngữ) whatis for dùng đẻ tìm các mô tả ngắn gọn
của một mệnh lệnh hay một từ khoáwho
[-ilqT]
nêu ra tài khoản những người đang truy nhập who -i quản lý whoami
hiển thi tên tài khoản hiên dung và số ID whoami xargs
[options] {commands [arg]}
thi hành một dòng lệnh từ stdin xargs -i ls -l {} hữu dụng khi dùng ngỏ ra của một mệnh lệnh biến thành tham số của mệnh lệnh khác
Tên tập tin trong Linux và kí tự phỏng định[sửa]
Tên tập tin[sửa]
Khái niệm[sửa]
Tên tập tin là một dãy hữu hạn các kí tự (hay một string) được dùng để nhận diện một tập tin. Trong phần phụ lục này khi nhắc đến tên tập tin chúng ta quy ước rằng đó là tên riêng (không phải là tên đầy đủ)
Các Quy ước và khuyến cáo về tên tập tin trong Linux[sửa]
Tên của một tập tin trong Linux có thể bao gồm các kí tự bất kì ngoại trừ kí tự / và kí tự 'null'. Kí tự / được dành làm tên của thư mục gốc (thư mục gốc là thư mục chứa tất cả các thư mục và tập tin khác). Trong khi đó , kí tự null, mà trong Linux thường được kí hiệu là $, là kí tự được dùng để kết thúc một string.
Kí tự khoảng trống (space) cho phép được dùng nhưng được khuyên là nên tránh dùng để làm thành phần tên của tập tin vì nó có thể gây ra việc không tương thích với nhiều chương trình không chuẩn của Linux.
Thông
thường
thì
tên
của
các
tập
tin
chỉ
có
các
chữ
cái
viết
hoa
và
viết
thường,
các
số,
dấu
gạch
dưới
_
(underscore),
dấu
nối
-
(hyphen)
và
dấu
chấm
.
(dot)
.
Đại
đa
số
tên
tập
tin
nhất
là
tên
các
mệnh
lệnh
trong
Linux
dược
viết
không
có
chữ
viết
hoa
(thí
dụ
myfile,
root,
readme,...).
(Khác
với
windows,
tên
tập
tin
trên
Linux
có
thể
bắt
đầu
bằng
dấu
chấm
.
thí
dụ
như
.bashrc
và
để
hiển
thị
các
tập
tin
loại
này
bạn
có
thể
dùng
lệnh
ls
-a)
Trong
các
kí
tự
đặc
biệt
như
$ %
# !
^
&
* ?
<
>
, ; :
+
=
\
~
`
và
các
dấu
ngoặc
thưòng
có
giá
trị
riêng
biệt
trong
các
trình
bao
nên
tránh
được
dùng
để
đặt
tên.
Tên
tập
tin
không
bao
giờ
bắt
đầu
bằng
dấu
nối
-
Trong một số hệ thống UNIX cũ thì tên của tập tin chỉ giới hạn tối đa 14 byte. Nhưng trong các hệ điều hành tựa Unix thì nó có thểdài tới 255 kí tự.
Cũng như các hệ điều hành khác, trực thuộc cùng một thư mục không cho phép có hai tập tin cùng tên. tuy nhiên, điều này không cấm việc hai tập tin hoàn toàn giống nhau có cùng tên nhưng nằm trong hai thưc mục riêng, các tập tin cùng tên này có thể phân biệt được là vì chúng có tên đầy đủ khác nhau
Thư mục gốc là thư mục duy nhất có tên là / và tên này không thể thay đổi
Có nhiều cách để đổi tên một tập tin (xem thêm đổi tên tập tin) . Một tập tin có ít nhất một tên nhưng có thể có nhiều tên (xem thêm phần phụ lục B về các kiểu tập tin)
Kí tự phỏng định[sửa]
Kí tự phỏng định hay còn gọi là kí tự thay thế được hiểu là một loại kí tự mà nó được dùng để đại diện cho một (hay một dãy) kí tự khác. Có hai loại kí tự phỏng định được dùng trong biểu thị tên của các tập tin đó là
-
?
Kí tự "dấu hỏi" đại diện cho bất kì một kí tự nào -
*
Kí tự "dấu sao" đại diện cho bất kì dãy ký tự hợp lệ nào kể cả dãy kí tự trống.
Các kí tự phỏng định sẽ được dùng rộng rãi trong nhiều mệnh lệnh của Linux
Thí
dụ:
Đối
với
biểu
thức
"Ho?Khoa",
thì
tất
cả
các
tập
tin
có
tên
sau
đây
sẽ
thoả
mãn
biểu
thức
này:
"HoaKhoa",
"HoWkhoa"
,
"Ho@Khoa",
"Ho_Khoa",
"Ho2Khoa"
....Tuy
nhiên
các
tập
tin
như
là
"HoKhoa"
"HoaiKhoa",
"Ho11Khoa"
sẽ
không
thoả
mãn
biểu
thức
này,
Khi
sử
dụng
lệnh:
rm
m?fil?
thì
tất
cả
các
tập
tin
có
tên
như
sau
sẽ
bi
xóa:
"myXfilE",
"my
file",
"my_fil1",
"my1file",
"mQfil@",
"m1file",
"m-fil
",
"m_file"...
Và
các
tập
tin
sau
đây
sẽ
không
bị
ảnh
hưởng
bởi
lệnh
này:
"mfile",
"myfil",
"my1file",
"my11file",
"myfile1"
Lệnh
ls
my*.txt
sẽ
hiển
thị
danh
sách
tất
cả
các
tập
tin
bắt
đầu
bằng
"my"
và
kết
thúc
bằng
".txt"
chẳng
hạn
như
"my.txt",
"my123A.txt",
"my_date.txt",
...
Có thể sử dụng kết hợp cả hai kí tự phỏng định trên để tạo ra các biểu thức phức tạp. Chẳng hạn biểu thức "*Hoang?" sẽ đại diện cho tất cả các tập tin nào có chữ Hoang ở vị trí kế chót (như "zzzHoang1" "VuHoanga" , "Hoang-"...)
Một dãy kí tự có dùng các quy ước về kí tự phỏng định này có thể xem là một dạng đơn giản của biểu thức chính quy mà chúng ta sẽ có dịp tìm hiểu sâu hơn trong các bài sau
Đặc tính đệ quy trong các lệnh hệ thống Linux[sửa]
Đệ quy là một dạng qúa trình hay một thao tác mà tự nó có thể gọi chính nó để lập lại qúa trình hay thao tác đó. Trong hầu hết các ngôn ngữ lập trình khi nhắc đến tính đệ quy tức là việc cho phép một hàm được gọi lại chính nó. BASH hổ trợ tính đệ quy này để tạo các hàm đệ quy. Tuy nhiên, trong các lệnh hệ thống của Linux, khi nhắc tới tính dệ quy, thì người tà hiểu là khả năng để mệnh lệnh này tự tìm vào các thư mục con của thư mục là đang là đối tượng thực thi để tiếp tục thực thi cùng một lệnh này cho tới khi không còn thư mục con nào chưa dược thực thi nữa. Dĩ nhiên, khi thực thi với chức năng đệ quy thì các lệnh cùng thường thay đổi dạng hiển thị trả về cho thích hợp.
Trong Linux, tham số để gọi một lệnh hệ thống chạy đệ quy trên một thư mục thường là --recursive (hay là -r hoặc -R tùy theo lệnh hỗ trợ). Tuy nhiên, chức năng này cũng có thể bị giới hạn tùy theo lệnh.
Để
biết
một
lệnh
của
Linux
có
hỗ
trợ
tính
năng
này
hay
không
thì
có
thể
dùng
lệnh
man
[TÊN_LỆNH]
và
đọc
hướng
dẫn
Thí dụ: Lệnh sau đây sẽ hiển thị nội dung của mọi thư mục trong thư mục của người đang dùng
ls --recursive ~
Lệnh:
rm -rf mydir
sẽ xoá mọi loại tập tin bên trong thư mục mydir vô điều kiện và không hỏi lại kể cả thư mục này trong khi lệnh rm -rf mydir/* chỉ xóa tất cả các tập tin bên trong nhưng bản thân thư mục mydir vẩn tồn tại (và là thư mục trống)
find --recursive --brief mydir1 mydir2
cho phép so sánh sơ lược toàn bộ nội dung các tập tin nằm bên trong mydir1 tương ứng với nội dung của mydir2
Lược tả các loại tập tin trong Linux/UNIX[sửa]
Trong Linux/UNIX, các thiết bị phần cứng có giao diện mệnh lệnh (command interface) và sự thông dịch mệnh lệnh (command interpretation) rất đa dạng . Để giải quyết thống nhất, Linux/UNIX xác định một phương pháp chuẩn của I/O nhằm truy cập tới mọi kiểu thiết bị được gắn nối vào máy tính cũng như là việc điều hợp mọi thành phần phần cứng. Đó là kiến trúc hệ điều hành sao cho nó xem tất cả các thiết bị hay dữ liệu đều là "một dạng tập tin". Tuỳ theo chức năng của một tập tin mà nó có thể được phân loại như sau:
Tập tin thông thường[sửa]
Tập tin thông thường là một "thùng chứa mà đơn vị chứa là byte". Mọi tập tin đều có thể xem là tập tin thông thường. giống như Windows, một tập tin có thể là tập tin khả thi (executable), có thể là tập tin văn bản (text), là tập tin hình ảnh, là một chương trình phần mềm, một bộ mã nguồn C, hay là một thiết bị. Một tập tin mà không có dữ liệu nào bên trong là tập tin rỗng.
Thư mục[sửa]
Thư
mục
là
một
"ngăn
chứa
của
các
tập
tin".
Ngăn
chứa
này
có
thể
không
chứa
tập
tin
nào
hay
chứa
nhiều
loại
tập
tin
khác
nhau
nhưng
nó
không
thể
chứa
chính
nó.
Thực
mục
lớn
nhất
là
thư
mục
"/"
được
gọi
là
thư
mục
gốc
(root
directory).
Thư
mục
gốc
là
thư
mục
mẹ
chứa
bên
trong
nó
tất
cả
các
tập
tin
của
một
hệ
thống.
Một
thư
mục
có
thể
được
tạo
thành
bởi
lệnh
mkdir [TÊN_TẬP_TIN]
và
có
thể
xóa
bởi
lệnh
rmdir [TÊN_TẬP_TIN]
hay
lệnh
rm
-r [TÊN_TẬP_TIN]
(Trong
hình
minh
họa
thì
tập
tin
mydir
là
thư
mục
và
nếu
để
ý
thì
ở
cật
phân
loại
tập
tin
có
hiển
thị
chữ
d
(viết
tắt
từ
chữ
directory)
Thiết bị[sửa]
Đây là loại tập tin có vai trò đặc biệt. Nó cho phép các chương trình Linux/UNIX liên lạc với hệ thống phần cứng và các thiết bị ngoại vi. Có hai loại tập tin thiết bị là bộ điều vận (device driver) và tập tin thiết bị (device file)
Bộ điều vận[sửa]
Như Windows, hệ điêu hành cần có các bộ điều vận (device driver) để chuyển đi các mệnh lệnh hay nhận về các trả lời từ thiết bị. Bộ điều vận trong linux thương có tên mở rộng là ".ko" (cho các phiên hạt nhân (kernel) tương đối mới 2.6.x trở lên) và ".o" (cho các phiên bản hạt nhân cũ hơn). Để một thiết bị phần cứng hoặt động được thì hạt nhân trước hết phải tải (load) các bộ diều vận tương ứng. Có thiết bị chỉ cần 1 bộ điều vận để hoạt động nhưng cũng có thiết bị đòi hỏi tải nhiều bộ điều vận khác nhau để hoạt động được. Người ta phải dùng trình dịch mà thông thường là C hay C++ để tạo nên một bộ điều vận. Các bộ điều vận quan trọng thường sẽ được chứa trong thư mục /lib/modules/. Người ta còn gọi tên của bộ điều vận là module. Các module chỉ có thể có mặt 1 thực thể trong bộ nhớ. Người ta dùng lệnh insmod hay modprobe để tải lên bộ nhớ bộ điều vận nào chưa được tải và dùng lệnh rmmod hay modprobe -r để dở tải một module. Một khi đã dở tải thì thiết bị phần cứng tương ứng với bộ điều vận sẽ không liên lạc được với hệ điều hành, dó đó, cần phải tải bộ điều vận của thiết bị đó nếu muốn nó hoạt động trở lại. Lệnh lsmod sẽ cho phép hiển thị các module đang được tải trong hạt nhân
Tập tin thiết bị[sửa]
Thông thường các thiết bị xuất nhập hay chứa dữ liệu còn đòi hỏi thêm một loại tập tin nữa nhằm cho phép hệ điều hành xuất hay nhập dữ liệu cũng như là để truy cập nội dung của thiết bị nếu đó là thiết bị lưu trữ dữ liệu (data storage). Thiết bị này được có tên chung là tập tin thiết bị. Các tập tin thiết bị nếu đuợc hệ điều hành dùng để truy cập nội dung của một thiết bị lưu trữ thì còn được gọi là "điểm kết" (mount point). Người ta chia tập tin thiết bị (xuất nhập) thành hai loại và chúng đều được chứa trong thư mục "/dev":
Tập tin thiết bị kiểu kí tự (Character device Files)[sửa]
Loại thiết bị này cho phép bộ điều vận của nó có bộ đệm xuất nhập (I/O buffer) riêng. Đây là thiết bị chứa dữ liệu (data storage device) hay thiết bị vận chuyển dữ liệu cho phép thay đổi (hay vận chuyển) dữ liệu từng kí tự. Thí dụ của loại thiết bị này là các máy in hay các thiết bị đầu cuối (terminal).
Tập tin thiết bị kiểu khối (Character device Files)[sửa]
Các
thiết
bị
kiểu
này
sẽ
không
có
bộ
đệm,
chúng
xử
lí
I/O
trong
một
khối
lớn.
Thay
vào
đó,
OS
(hạt
nhân)
sẽ
cung
cấp
một
bộ
đệm.
Các
ổ
cứng
và
các
băng
từ
đều
là
thiết
bị
kiểu
khối.
Mỗi
tập
tin
thiết
bị
được
đặc
trưng
bởi
hai
số
trọng
số
của
thiết
bị
(major
device
number)
và
khinh
số
của
thiết
bị
(
minor
device
number).
Trọng
số
sẽ
cho
biết
đó
là
thiết
bị
loại
gì
và
bộ
điều
vận
nào
trong
khi
khinh
số
cho
phép
bộ
điều
vận
biết
được
đơn
vị
cụ
thể
nào
để
làm
việc
với.
Thí
dụ
trọng
số
là
8
tương
ứng
với
đó
là
thiết
bị
SCSI
(các
ổ
cứng)
và
phần
cứng
ổ
dữ
liệu
(volume)
đầu
tiên
sẽ
có
khinh
số
là
0.
Để
xem
thêm
các
chi
tiết
bạn
có
thể
gọi
lệnh
ls
-l
/dev/sda
)
(trong
hình
minh
hoạ
thì
tập
tin
sdm
là
tập
tin
thiết
bị
lưu
trữ
kiểu
khối
cột
phân
loại
file
hiển
thị
chữ
b
(viết
tắt
của
chữ
block)
Do tầm quan trọng của các tập tin thiết bị, phần chi tiết sẽ được dào sâu hơn trong phụ lục tiếp theo của bài kì tới.
Ổ nối[sửa]
Đây
là
một
cơ
chế
liên
lạc.
Ổ
nối
thường
đuợc
dùng
như
là
một
đểm
cuối
cho
việc
gửi
và
nhận
dữ
liệu
giữa
hai
máy
tính.
Có
nhiều
loại
socket.
Hầu
hết
trong
chúng
được
dùng
trong
kĩ
thuật
nối
mạng
và
một
số
được
dùng
trong
hệ
thống
in
ấn.
Mặc
dù
ổ
nối
được
nhìn
thấy
trong
Linux
như
là
các
thư
mục,
nhưng
chúng
sẽ
không
thể
đọc
hay
viết
bởi
các
chương
trình
mà
không
có
tham
dự
vào
sự
nối
kết
trong
liên
lạc.
Để
tạo
ra
một
ổ
nối
dùng
lệnh
socket
và
để
xoá
chúng
người
ta
dùng
lệnh
rm
hay
unlink
Ống truyền dẫn tên (named pipe)[sửa]
Đây là loại tập tin FIFO (từ chữ "first-in-first-out" nghĩa "vào trước thì ra trước). Nó cho phép hai chương trình độc lập trên cùng một máy chủ (host) có thể liên lạc với nhau theo nguyên tắc thông tin gửi vào trước sẽ phải lấy ra trước. Ống truyền dẫn tên có thể tạo ra bởi lệnh mknod hay mkfifo và xóa bởi lệnh rm. Một cách hữu hiệu hơn để dùng named pipe là thiết lập nó trong ngôn ngữ C/C++.
Liên kết (link)[sửa]
Thực ra liên kết không phải là một loại tập tin. Đây chính là một cơ chế của hệ thống Linux nhằm cho phép một tập tin có nhiều hơn một tên. Có hai loại liên kết.
Liên kết cứng (hard link)[sửa]
Mỗi tập tin trong Linux/Unix có ít nhất một liên kết (kiểu này) thường đó là tên mà tập tin lần đầu tiên được tạo thành. Việc thêm vào một liên kết cứng sẽ tạo thêm tên khác cho cùng tập tin đó. Khi một hard link được tạo thành thì nội dung của nó hoàn toàn giống với nội dung của tập tin ban đầu. Trong thực tế, khi có tập file2 là liên kết cứng của fie1 (nói ngược lại file1 cũng sẽ là liên kết cứng của file2) thì một khi nội dung hay thuộc tính của file1 (hay file2) thay đổI thì cũng kéo theo nội dung của tập tin còn lại thay đổi theo tương ứng. Tuy nhiên, khi xóa 1 trong chúng thì tập tin còn lại sẽ không bi thay đổi (xem thêm thí dụ dưới đây). Theo quy định thi không thể tạo ra một liên kết cứng đến một thư mục. Dùng lệnh ln để tạo liên kết cứng đến 1 tập tin và dùng rm để xoá. Vì không có sự phân biệt nào về mặt cấu trúc giữa một tập tin ban đầu và tập tin hard link tạo ra sau này nên không thể dùng các phương cách thông thường để biết tập tin nào tạo ra trước và chúng lại cùng có 1 nội dung một thuộc tính như nhau. Dẫu sao, lệnh ls -l trên các tập tin sẽ cho thấy các thuộc tính hoàn toàn trùng nhau của hai tập tin cùng liên kết về 1 nội dung.
Liên biểu trưng (symbolic link)[sửa]
Hay còn gọi là liên kết mềm (soft link): Đây là một tập tin tựa như con trỏ chỉ tới tên đầy đủ của một tập tin khác mà nó liên kết tới. Trong hầu hết các trường hợp, thì liên kết biểu trưng hoạt động giống như liên kết cứng. Hơn nữa, một liên kết mềm có khả năng liên kết tới một tập tin là thư mục (trong khi hark link thì không). Có một sự phân biệt cơ bản giữa hai loại liên kết đó là liên kết cứng là một dạng tham chiếu trục tiếp (đến dữ liệu trong tập tin) trong khi liên kết mềm chỉ tham chiếu đến tên của tập tin. Để tạo một liên kết mềm dùng lệnh ln -s và dùng rm để xoá. Để biết một tập tin là liên kết mềm hay không thì dùng lệnh ls -l hay lệnh file lên tập tin đó; tập tin là lien kết mềm sẽ được hiển thị thêm hình mũi tên → chỉ tới tên tập tin nguồn mà nó liên kết đồng thời trong cột chỉ phân loại tập tin sẽ hiển thị bởi chữ l (viết tắt từ chữ "link")
Thí dụ[sửa]
Trong thí dụ của phụ lục A1 hardlink và softlink lần lượt là liên kết cứng và mềm của tập tin mark.txt (xem các dòng 6,7,11). Văn lệnh sau đây sẽ cho thấy sự khác nhau giữa hai loại liên kết.
#to see similarity and difference between hard link and symbolic link echo "My file" > original ln hardlink original # create hard link from file1 ln -s softlink original #create symbolic link from file1 echo "content of original file" cat original echo "content of hardlink" cat hardlink echo "content of softlink" cat softlink #now edit hard and softlink echo "my hardlink" >> hardlink echo "my softlink" >> softlink echo "After editing, the content of original file is:" cat original echo "content of hardlink is:" cat hardlink echo "and content of softlink:" cat softlink echo "displaying the different:" ls -l original hardlink softlink # the difference after removing original rm -f original cat softlink # it should generate an error cat hardlink # it should be OK echo "checking again how thay are displayed:" ls -l original hardlink softlink
Bài kì tới: Biến và tham số. Các thiết bị quan trọng trong Linux. tập tin thiết bị, hệ thống tập tin /proc
Chú thích[sửa]
1: : Sự khác biệt căn bản giữa một tập tin ASCII trong Windows và trong Linux là trong tập tin trong định dạng kiểu DOS/Windows các dấu xuống hàng (cariage return - 0D) thường đi kèm với dấu đầu dòng (newline - 0A) trong khi đó tập tin dạng này trong Linux chỉ có các dấu đầu dòng. Nhiệm vụ của lệnh dos2unix chỉ là để lấy những kí tự không tương thích và thay vào đó những gì cần thiết để làm cho tập tin trở nên tương thích với Linux
2: Cái răng, cái tóc là gốc con người (tục ngữ)
3: Trong BASH thì bộ mô tả tập tin (file descriptor) ngỏ vào chuẩn stdin còn được kí hiệu là 0< (hay 0 ), stdout được kí hiệu là 1> (hay 1), và stderr là 2> (hay 2) -- Xem thêm phụ lục trong các bài tới về các oại tập tin và thiết bị.
4: Root (dịch nghĩa là gốc, hay tổ tiên) là người dùng có quyền truy cập mọi tập tin, có thể tiến hành mọi thao tác của hệ thống Linux. Root có thể hiểu là tài khoản của người quản trị. Khái niệm root này tương đương với khai niệm administrator (người quản trị) trong hệ thống Windows
5: Wildcard: Một đạng kí tự đặc biệt, tùy theo quy ước, có thể đại diện cho một hay dãy kí nào đó chưa xác định rõ ràng. Có nơi dịch là "kí tự thay thế"