Nếu có nhiều chuỗi tìm kiếm nhưng không dùng -e → chỉ tìm theo chuỗi đầu tiên Nếu không chir định tên tập tin thì mặc định tìm trong luồng nhập chuẩn → phải nhập nội dung từ bàn phím →
Trang 1TRẦN THỊ NGỌC MAI
HỆ ĐiỀU HÀNH LINUX
HỆ THỐNG TẬP TIN
Trang 4I.1 Terminal (1)
Là chương trình dùng để người dùng tương
tác với nhân thông qua tập lệnh của shell
Khởi động Terminal: Applications ->
Trang 5Sử dụng Terminal:
Xem trợ giúp lệnh: man tên_lệnh
Dùng phím mũi tên xuống để đọc tài liệu
Nhấn q để thoát
Hiện lại lệnh trước kế trước: mũi tên lên (Ctrl P)
Hiện lại lệnh trước kế sau: mũi tên xuống (Ctrl N)
Trang 7I.2 Shell
Mọi distro đều sử dụng các shell giống nhau
Shell là 1 hệ thống các lệnh để người dùng điều
khiển mọi hoạt động của hệ thống tương tác với nhân
Các lệnh của shell được đặt trong /bin
Các shell trong Linux:
sh (Bouner): shell của Unix
bash (Bouner Again Shell): ra đời từ dự án
GNU, là shell chính trong Linux
Xem shell đăng dùng: lệnh echo $SHELL
Hủy 1 lệnh đang chạy: Ctrl C
HĐH Linux
Trang 9II.1 Đường dẫn (1)
a Đường dẫn tuyệt đối:
Là đường dẫn được xác định từ thư mục gốc (/)
Khi chạy các tập tin thực thi thường bắt buộc
dùng đường dẫn tuyệt đối
HĐH Linux
Trang 10II.1 Đường dẫn (2)
b Đường dẫn tương đối:
Là đường dẫn được xác định từ thư mục hiện
hành
VD: u01@pc01:/usr/local$ gedit baitap.cpp
Ký hiệu ~: biểu thị thư mục cá nhân của người
dùng đang đăng nhập
VD: u01@pc01:/usr$ cd ~
Trang 12II.2.1 Một số lệnh đơn giản
Xóa màn hình Terminal: clear
Xem thư mục hiện hành: pwd
Lấy tên máy tính: hostname
Hiện chuỗi lên màn hình: echo [“chuỗi”]
Trang 13II.2.2 Một số lệnh hiển thị thời gian
Hiển thị ngày tháng hiện tại: date (xem thêm man)
Xem lịch: cal [tháng] [năm]
HĐH Linux
Trang 16Lệnh liệt kê nội dung thư mục (1)
ls [tuỳ_chọn] [đường_dẫn_cần_liệt_kê]
Một số tuỳ chọn:
-l ( long): liệt kê dạng chi tiết
-R ( recursive): liệt kê tất cả nội dung các thư mục
-a ( all) : liệt kê tất cả các tập tin, kể cả tập tin ẩn
-h ( human): kích thước dạng kilobytes and
megabytes
-i ( inode): in inode của tập tin
Nếu không ghi đường_dẫn_cần_liệt_kê: liệt kê nội dung
thư mục hiện hành
Trang 1717Lệnh liệt kê nội dung thư mục (2)
HĐH Linux
Trang 18Lệnh liệt kê nội dung thư mục (3)
Có thể dùng ký hiệu đại diện trong
đường_dẫn_cần_liệt_kê để liệt kê nội dung các thư mục/tập tin và nội dung các thư mục, bao gồm:
– ?: đại diện cho 1 ký tự bất kỳ (bắt buộc có 1 ký tự)
– *: đại diện cho 1 nhóm ký tự bất kỳ (0, 1 hoặc n ký tự)
– [n m]: từ ký tự n đến ký tự m (n, m là 2 ký tự bất
kỳ trong bảng chữ cái) (không bắt buộc)
Trang 1919Lệnh liệt kê nội dung thư mục (4)
HĐH Linux
Trang 20Lệnh liệt kê nội dung thư mục (5)
Trang 2121Lệnh liệt kê nội dung thư mục (6)
HĐH Linux
Trang 22Lệnh liệt kê nội dung thư mục (7)
VD: u01@pc01:/usr$ ls –l /etc
-rw-r r 1 root root 10326 Apr 12 12 08:42 info-dir
lrwxrwxrwx 1 root root 11 Apr 12 12 07:52 init.d -> rc.d/init.d
Ký tự đầu tiên của cột 1: -: tập tin bình thường, d: thư mục, l: liên kết (shortcut) và sau tên có dấu -> chỉ đến tập tin gốc
Các ký tự còn lại của cột 1: quyền hạn
Cột 2: số liên kết cùng trỏ đến inode vật lý của tập tin này
Cột 3, 4: người sở hữu và nhóm sở hữu
Cột 5: kích thước dưới dạng số block Nếu muốn hiển thị dạng K,
M (kylobyte, megabyte) thì thêm -h (human) → ls -l -h
Cột 6: thời nhãn (ngày cập nhật cuối cùng)
Cột 7: tên tập tin hoặc thư mục
Trang 23 VD: mkdir –p /a/b/c/d -> tạo cả 4 thư mục
-m <quyền>, mode <quyền>: thiết lập quyền hạn
VD: mkdir -m 444 personal -> tạo thư mục chỉ đọc
HĐH Linux
Trang 24 => Xoá thư mục Chapter01 (nếu rỗng)
=> Xoá thư mục Linux (nếu rỗng)
=> Xoá thư mục Homework (nếu rỗng)
Trang 25Tạo tập tin text dùng gedit
gedit [đường_dẫn/]<tên_tập_tin>
Gedit là trình soạn thảo văn bản đơn giản trên
Linux (tương tự Notepad trên Windows)
Gedit có giao diện đồ hoạ
Nếu tập tin <tên_tập_tin> đã tồn tại thì mở tập
tin, ngược lại tạo mới
HĐH Linux
Trang 26Tạo tập tin text dùng vi hoặc vim
vi [đường_dẫn/]<tên_tập_tin>
Nếu tập tin <tên_tập_tin> đã tồn tại thì mở tập
tin, ngược lại tạo mới
Nhấn i: chèn thêm ký tự vào vị trí con trỏ
Thoát và lưu nội dung tập tin: nhấn ESC và 1
trong các phím: wq, ZZ hoặc x
Thoát và không lưu: q!
Trang 28Lệnh sao chép tập tin / thư mục
cp [tuỳ_chọn] <tên_tập_tin_1> <tên_tập_tin_2>
cp [tuỳ_chọn] <tên_tập_tin_1> <tên_tập_tin_2> … <tên_thư_mục>
Chép tập_tin_1 thành tập_tin_2 hoặc chép các tập tin vào cùng 1 thư mục
Tuỳ chọn:
-r, -R, recursive : chép thư mục vào thư mục mới.
-f, force: overwrite các tập tin đã tồn tại
-i, interactive: hỏi lại trước khi overwrite
-P, parents: chép cả nhánh thư mục vào vị trí mới
VD: cp parents jphekman/book/ch1 newdir
=> chép jphekman/book/ch1 thành newdir/jphekman/book/ch1
Trang 29Lệnh di chuyển và/hoặc đổi tên
mv [tuỳ_chọn] <nguồn> <đích>
Khi nguồn và đích cùng vị trí => đổi tên
Khi nguồn và đích khác vị trí và cùng tên => di chuyển
Khi nguồn và đích khác vị trí và khác tên => di chuyển và đổi tên
Tuỳ chọn:
-f, force: overwrite các tập tin đã tồn tại
-i, interactive: hỏi lại trước khi overwrite
-u, update: không overwrite các tập tin có thời nhãn
(modification time) bằng hoặc mới hơn
Trang 30Lệnh thay đổi thời gian truy cập và hiệu chỉnh
touch [tuỳ_chọn] <tên_tập_tin/thư_mục>
Tuỳ chọn:
-a, time=atime, time=access, time=use: chỉ cập
nhật thời gian truy cập (access time)
-m, time=mtime, time=modify: chỉ cập nhật thời
gian hiệu chỉnh (modification time)
-t <time>: chỉ định 1 thời điểm cụ thể dạng
[[cc]yy]mmddhhmm[.ss] (bao gồm: optional century
and year, month, date, hours, minutes, and optional seconds), nếu không ghi tham số này => lấy ngày giờ hiện hành
Trang 31Ký hiệu chuyển hướng
Chuyển hướng xuất: > hoặc >>
Chuyển hướng nhập : <
Chuyển hướng lỗi: 2>
HĐH Linux
Trang 32Lệnh đọc nội dung tập tin văn bản
cat [tuỳ_chọn] <tên_các _tập _tin>
Đọc nội dung các tập tin và in ra thiết bị xuất
chuẩn
Có thể dùng các ký hiệu chuyển hướng:
> nối các tập tin vào 1 tập tin mới
Trang 33Lệnh tạo liên kết (1)
Liên kết cứng: 1 liên kết cứng đến 1 tập tin
(không tạo được với thư mục) là 1 tập tin trỏ đến inode vật lý của tập tin gốc Nếu xóa file gốc thì
dữ liệu hoàn toàn không bị mất, nó chỉ mất khi
không còn liên kết nào đến inode đó nữa
Liên kết mềm: 1 liên kết mềm đến 1 tập tin (thư mục) là 1 tập tin chỉ chứa thông tin của tập tin
gốc Khi xóa tập tin gốc thì tập tin liên kết không còn ý nghĩa
Lệnh: ln [tham số] <nguồn> <đích>
Tham số: -s: tạo liên kết mềm, nếu không chỉ
định thì tạo liên kết cứng
HĐH Linux
Trang 34Lệnh tạo liên kết (2)
Trang 36Lệnh tìm chuỗi trong tập tin (1)
Lệnh: grep [tham số] <'chuỗi'> [tên tập tin]
Tìm và hiển thị các dòng văn bản có chứa 'chuỗi'
Tham số: -e cho phép chỉ định nhiều chuỗi tìm
kiếm → tìm kiếm theo điều kiện OR giữa các
chuỗi Nếu có nhiều chuỗi tìm kiếm nhưng không dùng -e → chỉ tìm theo chuỗi đầu tiên
Nếu không chir định tên tập tin thì mặc định tìm
trong luồng nhập chuẩn → phải nhập nội dung từ bàn phím → thực hiện tìm sau mỗi dòng →
Trang 37Lệnh tìm chuỗi trong tập tin (2)
VD: Giả sử có tập tin abc.txt:
HĐH Linux
Trang 38Lệnh tìm chuỗi trong tập tin (3)
Trang 39Liệt kê tập tin theo tên (1)
Lệnh ls liệt kê tập tin/thư mục trong thư mục xác
định
Lệnh grep tìm chuỗi trong 1 luồng nhập (luồng
nhập chuẩn, tập tin, đầu vào khác)
Ký hiệu | (ống dẫn): chuyển kết quả lệnh đứng
trước ống dẫn thành đầu vào của lệnh đứng sau
=> Chuyển kết quả lệnh ls vào cho lệnh grep
HĐH Linux
Trang 40Liệt kê tập tin theo tên (2)
Liệt kê các tập tin/thư mục có tên chứa chuỗi
Dethi, DETHI, DeThi, dethi trong /media/Data1
Trang 42Tìm kiếm tập tin/thư mục dùng Nautilus (1)
Tại cửa sổ File Browser của Nautilus:
B1: Chọn vị trí cần tìm trong khung Places
B2: Chọn công cụ
Trang 44Tìm kiếm tập tin/thư mục dùng lệnh find (1)
Lệnh: find [đường dẫn] [tham số]
Nếu không chỉ định đường dẫn → tìm trong thư mục hiện
hành Nếu không chỉ định tham số → liệt kê tất cả
Trang 45Tìm kiếm tập tin/thư mục dùng lệnh find
(2)
-name <mẫu>: trong đó <mẫu> được dùng các ký tự
đại diện: *, ?, []; các ký tự này phải đặt sau ký tự \
find -name b\* <=> tên bắt đầu bằng chữ b
find -name bt\? <=> tên có 3 ký tự, bắt đầu bằng chữ bt
find -name bt\[3 5] <=> tên bắt đầu bằng chữ bt, theo sau là 1 ký số 3, 4 hoặc 5
find -name b\[a t] <=> tên bắt đầu bằng chữ bt, theo sau là 1 ký tự trong khoảng từ chữ a đến chữ
t trong bảng chữ cái
Chú ý: -name <mẫu> không phân biệt chữ hoa,
thường
-iname <mẫu>: tương tự như -name nhưng phân biệt
Trang 46Tìm kiếm tập tin/thư mục dùng lệnh find
Trang 47Tìm kiếm tập tin/thư mục dùng lệnh locate (1)
Lệnh: locate [tham số] <mẫu>
Tìm kiếm tập tin/thư mục có tên chứa <mẫu>
Tham số:
-b '\tên': tìm chính xác theo tên
t ranmai@tranmai-laptop:~$ locate -b '\passwd'
-c ( count): chỉ đếm số tập tin tìm được
tranmai@tranmai-laptop:~$ locate -b '\passwd' -c
5
HĐH Linux
Trang 48Tìm kiếm tập tin/thư mục dùng lệnh locate (2)
-i ( ignore-case): không phân biệt chữ hoa, thường
tranmai@tranmai-laptop:~$ locate -i passwd
Chú ý: lệnh locate tìm kiếm dựa vào CSDL hệ thống tập
tin→ nếu tập tin/thư mục mới vừa được tạo → phải chạy lệnh: sudo updatedb để cập nhật CSDL → lệnh locate mới
Trang 49=>nén và ghi đè lên tập tin nguồn
Hoặc: gzip <tên_tập_tin1> <tên_tập_tin2>
=>nén mỗi tập tin thành 1 tập tin nén và ghi đè lên các tập tin nguồn
Giải nén: gunzip <tên_tập_tin.gz>
Hoặc: gzip -d <tên_tập_tin.gz>
Hoặc: gunzip <tên_tập_tin1> <tên_tập_tin2> =>giải nén và ghi đè lên tập tin nén
HĐH Linux
Trang 50Nén và giải nén chuẩn bz2
Nén thành tập tin bz2
Nén: bzip2 <tên_tập_tin>
=>nén và ghi đè lên tập tin nguồn
Hoặc: bzip2 <tên_tập_tin1> <tên_tập_tin2>
=>nén mỗi tập tin thành 1 tập tin nén và ghi đè lên các tập tin nguồn
Giải nén: bunzip2 <tên_tập_tin.gz>
Hoặc: bzip -d <tên_tập_tin.gz>
Hoặc: bunzip2 <tên_tập_tin1> <tên_tập_tin2>
Trang 51tar: viết tắt từ “tape archive”
Một tập tin tar (1 bản lưu trữ): gọi là 1 tarball
HĐH Linux
Trang 52Lệnh tar (2)
Tạo tarball rồi nén tarball:
Chuẩn gz: tar -zcvf archived.tar.gz file1 file2 file3
Chuẩn bz2: tar -jcvf archived.tar.bz2 file1 file2 file3
Giải nén rồi bung tarball:
Chuẩn gz: tar -zxvf archived.tar.gz file1 file2 file3
Chuẩn bz2: tar -jxvf archived.tar.bz2 file1 file2
Trang 53Lệnh tar (3)
Các tham số:
c: ( create): tạo mới file archive
x: ( extract, get): bung file archive
v: ( verbose): liệt kê danh sách tập tin (dùng với tham số f)
f: liệt kê danh sách tập tin
z: nén hoặc giải nén gz
j: nén hoặc giải nén bz2
HĐH Linux
Trang 55III.1 Quyền hạn trên hệ thống tập tin (1)
Tất cả các tập tin của Linux đều xác định người
sở hữu và quyền truy cập
Xem quyền hạn => thực hiện lệnh ls –l
-rw-r r 1 root root 10326 Apr 12 12 08:42 info-dir
9 ký tự bên phải cột đầu tiên chỉ ra quyền hạn trên tập tin
9 ký tự chia thành 3 nhóm quyền hạn cho lần
lượt 3 dạng người dùng: chủ sở hữu, nhóm sở hữu và các người dùng khác
Mỗi nhóm 3 ký tự lần lượt biểu thị các quyền:
read (r), write (w) và execute (x) Nếu không có quyền thì thay bằng dấu -
HĐH Linux
Trang 56III.1 Quyền hạn trên hệ thống tập tin (2)
Một cách khác để biểu thị quyền hạn: Quyền hạn
của từng dạng người dùng được biểu thị dưới
dạng số 3 bit, nếu có quyền thì bit đó =1, ngược lại =0
Trang 57III.1 Quyền hạn trên hệ thống tập tin (3)
Quyền read: đọc nội dung tập tin, chuyển
vào và xem nội dung thư mục
Quyền write: sửa nội dung, xóa tập tin Tạo,
đổi tên, xóa tập tin bên trong thư mục mà
không phụ thuộc quyền hạn trên các tập tin
đó
Quyền execute: thực thi tập tin chương trình
Chỉ có thể chuyển vào bên trong thư mục
Người có quyền đọc thì có quyền copy tập
tin Khi đó: tập tin copy được sẽ thuộc sở
hữu của người copy
HĐH Linux
Trang 58III.1 Quyền hạn trên hệ thống tập tin (4)
Nếu nhóm sở hữu có quyền trên 1 tập tin thì tất
cả các người dùng thuộc nhóm đó (trừ chủ sở
hữu) cũng có quyền tương tự trên tập tin đó
VD: Người dùng tranmai và người dùng user01
đều thuộc nhóm tranmai Người dùng tranmai tạo tập tin /home/tranmai/TempFile và gán quyền như sau: r—rw-r Khi đó người dùng tranmai không được sửa nội dung của TempFile nhưng người
dùng user01 thì được phép
Trang 60Umask (User-Mask) và Base Permission: Khi
một tập tin hay thư mục được tạo ra thì các
quyền hạn truy cập đối với chúng (read, write,
execute) cho các chủ thể (owner, group, others)
sẽ được xác định dựa trên hai giá trị là quyền
Trang 61III.2 Quyền hạn mặc định (2)
Base Permission là giá trị được thiết lập sẵn từ trước,
và ta không thể thay đổi được
Tập tin: base permission là 666 (rw-rw-rw-)
Thư mục: base permission là 777 (rwxrwxrwx)
Mask là giá trị đựợc thiết lập bởi người dùng bằng
lệnh umask
Giá trị Mask sẽ “che đi” một số bit trong Base
Permission để tạo ra quyền truy cập chính thức cho tập tin/thư mục
Cụ thể, quyền truy cập chính thức được tính bằng
cách lấy “ giá trị nhị phân của Base permission
”AND“ dạng biểu diễn bù 1 của mask ”
HĐH Linux
Trang 62III.2 Quyền hạn mặc định (3)
VD1: Vì Base Permission của tập tin luôn là 666 (tức
110110110 khi chuyển sang dạng nhị phân), nên nếu giá
trị mask là 022 (có dạng nhị phân là 000010010 => dạng
bù 1 của nó thì chuyển 1->0, 0->1 nên ta được
111101101) thì quyền truy nhập chính thức của file sẽ
là:
110 110 110 AND 111 101 101 = 110 100 100 = 644 (rw-r–r–)
VD2: Tương tự, với thư mục:
777 <=> 111 111 111
Trang 65Thay đổi quyền của tập tin/thư mục (1)
Chỉ có chủ sở hữu hoặc super user mới thực hiện được
Thao tác: + (thêm quyền), - (xóa quyền), = (chỉ thêm
quyền được chỉ định, các quyền khác bị xóa)
Trang 66Thay đổi quyền của tập tin/thư mục (2)
Trường hợp mỗi dạng người dùng được thêm,
bớt quyền khác nhau: dùng dấu phẩy để ngăn
cách (không có khoảng trắng trước hoặc sau dấu
phẩy)
• VD4: chmod u-w,o-xr gom.tar.gz (xóa quyền write của chủ sở hữu, xóa quyền read và excute của người dùng khác)
Dạng tương đối: chmod <giá_trị_số_quyền_hạn>
<tên_tập_tin>
VD: chmod 755 myFile (chủ sở hữu có tất cả
quyền, nhóm và người dùng khác chỉ đọc và
Trang 67Thay đổi chủ sở hữu của tập tin/thư mục (1)
Chỉ có chủ sở hữu hoặc super user mới thực hiện được việc này
Cú pháp: chown [tham số] [chủ sở hữu mới][:nhóm sở hữu mới]
<tên_tập_tin>
Tham số:
• -R, recursive: thay đổi cả nhánh thư mục
• -v, verbose: liệt kê các tập tin thực hiện thay đổi
Chủ sở hữu mới: tên người dùng hoặc UID
Nhóm sở hữu mới: tên nhóm hoặc GID
chính của chủ sở hữu (login group)
thay đổi nhóm sở hữu (tương tự lệnh chgrp)
Chú ý: trước sau dấu hai chấm không có khoảng trắng
HĐH Linux
Trang 68Thay đổi chủ sở hữu của tập tin/thư mục (2)
sudo chown tranmai: gom.tar.gz (chủ sở hữu mới là
tranmai, nhóm sở hữu mới là nhóm tranmai)
sudo chown :admin gom.tar.gz (nhóm sở hữu mới là
nhóm admin)
Người dùng user01 được tạo ra thuộc nhóm tranmai:
Trang 69Thay đổi nhóm sở hữu của tập tin/thư mục
Chỉ có chủ sở hữu hoặc super user mới thực hiện được
việc này
Cú pháp: chgrp [tham số] <nhóm sở hữu mới>
<tên_tập_tin>
Tham số:
• -R, recursive: thay đổi cả nhánh thư mục
• -v, verbose: liệt kê các tập tin thực hiện thay đổi
Nhóm sở hữu mới: tên nhóm hoặc GID
VD: chgrp admin abc.txt (nhóm sở hữu của tập tin
abc.txt là nhóm admin)
HĐH Linux