103.3 Bài 1
Chứng chỉ: |
LPIC-1 |
---|---|
Phiên bản: |
5.0 |
Chủ đề: |
103 Lệnh GNU và Unix |
Mục tiêu: |
103.3 Thực hiện Quản lý Tệp cơ bản |
Bài: |
1 trên 2 |
Giới thiệu
Vì mọi thứ trong Linux đều được coi là một tệp nên việc học cách thao tác với chúng là một điều rất quan trọng. Trong bài học này, chúng ta sẽ thảo luận về các thao tác cơ bản trên tệp.
Nhìn chung, với tư cách là một người dùng Linux, chúng ta sẽ phải điều hướng trong hệ thống tệp, sao chép tệp từ vị trí này sang vị trí khác và xóa tệp. Bài học cũng sẽ đề cập đến các lệnh liên quan đến việc quản lý tệp.
Tệp là một thực thể lưu trữ dữ liệu và chương trình. Nó bao gồm nội dung và các siêu dữ liệu (kích thước tệp, chủ sở hữu, ngày tạo, quyền). Các tệp được tổ chức trong các thư mục, mỗi thư mục đều là một tệp lưu trữ các tệp khác.
Các loại tệp bao gồm:
- Tệp thông thường
-
lưu trữ dữ liệu và các chương trình.
- Thư mục
-
chứa các tệp khác.
- Tệp đặc biệt
-
được sử dụng cho đầu vào và đầu ra.
Tất nhiên là cũng có cả các loại tệp khác nữa, nhưng chúng nằm ngoài phạm vi của bài học này. Sau đây, chúng ta sẽ cùng thảo luận cách xác định các loại tệp khác nhau này.
Thao tác với Tệp
Sử dụng ls
để liệt kê Tệp
Lệnh ls
là một trong những công cụ dòng lệnh quan trọng nhất mà chúng ta nên tìm hiểu để điều hướng trong hệ thống tệp.
Ở dạng cơ bản, ls
sẽ chỉ liệt kê các tên tệp và thư mục:
$ ls Desktop Downloads emp_salary file1 Music Public Videos Documents emp_name examples.desktop file2 Pictures Templates
Khi được sử dụng với -l
(định dạng “danh sách dài”), nó sẽ hiển thị quyền của tệp hoặc thư mục, chủ sở hữu, kích thước, ngày, giờ và tên đã sửa đổi:
$ ls -l total 60 drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Desktop drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Documents drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Downloads -rw-r--r-- 1 frank frank 21 Sep 7 12:59 emp_name -rw-r--r-- 1 frank frank 20 Sep 7 13:03 emp_salary -rw-r--r-- 1 frank frank 8980 Apr 1 2018 examples.desktop -rw-r--r-- 1 frank frank 10 Sep 1 2018 file1 -rw-r--r-- 1 frank frank 10 Sep 1 2018 file2 drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Music drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Pictures drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Public drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Templates drwxr-xr-x 2 frank frank 4096 Apr 1 2018 Videos
Ký tự đầu tiên trong đầu ra cho biết loại tệp:
-
-
đối với tệp thông thường.
d
-
đối với thư mục.
c
-
đối với tệp đặc biệt.
Để hiển thị kích thước tệp ở định dạng con người có thể đọc được, hãy thêm tùy chọn -h
:
$ ls -lh total 60K drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Desktop drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Documents drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Downloads -rw-r--r-- 1 frank frank 21 Sep 7 12:59 emp_name -rw-r--r-- 1 frank frank 20 Sep 7 13:03 emp_salary -rw-r--r-- 1 frank frank 8.8K Apr 1 2018 examples.desktop -rw-r--r-- 1 frank frank 10 Sep 1 2018 file1 -rw-r--r-- 1 frank frank 10 Sep 1 2018 file2 drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Music drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Pictures drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Public drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Templates drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Videos
Để liệt kê tất cả các tệp bao gồm cả các tệp ẩn (những tệp bắt đầu bằng .
), hãy sử dụng tùy chọn -a
:
$ ls -a . .dbus file1 .profile .. Desktop file2 Public .bash_history .dmrc .gconf .sudo_as_admin_successful
Hiện chúng ta đã có thể thấy được các tệp cấu hình như .bash_history
được ẩn theo mặc định.
Nói chung, cú pháp lệnh ls
được đưa ra bởi:
ls OPTIONS FILE
Trong đó, OPTIONS
là bất kỳ tùy chọn nào được hiển thị trước đó (để xem tất cả các tùy chọn có thể, hãy chạy man ls
) và FILE
là tên chi tiết của tệp hoặc thư mục mà người muốn liệt kê.
Note
|
Khi |
Tạo, sao chép, di chuyển và xóa Tệp
Tạo tệp bằng lệnh touch
Lệnh touch
là cách dễ nhất để tạo các tệp trống mới. Ta cũng có thể sử dụng nó để thay đổi dấu thời gian (nghĩa là thời gian sửa đổi) của các tệp và thư mục hiện có. Cú pháp để sử dụng lệnh touch
là:
touch OPTIONS FILE_NAME(S)
Nếu không có bất kỳ tùy chọn nào, touch
sẽ tạo các tệp mới cho bất kỳ tên tệp nào được cung cấp dưới dạng đối số, với điều kiện là các tệp có tên như vậy chưa tồn tại. touch
có thể tạo đồng thời bao nhiêu tệp cũng được:
$ touch file1 file2 file3
Thao tác này sẽ tạo ra ba tệp trống mới có tên file1
, file2
và file3
.
Một số tùy chọn touch
được thiết kế đặc biệt để cho phép người dùng thay đổi dấu thời gian cho các tệp. Ví dụ: tùy chọn -a
chỉ thay đổi thời gian truy cập, trong khi tùy chọn -m
sẽ chỉ thay đổi thời gian sửa đổi. Việc sử dụng cả hai tùy chọn cùng nhau sẽ thay đổi quyền truy cập và cả thời gian sửa đổi thành thời điểm hiện tại:
$ touch -am file3
Sao chép tệp bằng cp
Là người dùng Linux, bạn sẽ thường xuyên phải sao chép tệp từ vị trí này sang vị trí khác. Cho dù đó là di chuyển một tệp âm thanh từ thư mục này sang một thư mục khác hoặc sang một tệp hệ thống, hãy sử dụng cp
cho tất cả các tác vụ sao chép:
$ cp file1 dir2
Lệnh này có thể được hiểu theo nghĩa đen là sao chép file1
vào thư mục dir2
. Kết quả là file1
đã có mặt bên trong dir2
. Để lệnh này được thực thi thành công, file1
phải tồn tại trong thư mục hiện tại của người dùng. Nếu không, hệ thống sẽ báo lỗi No such file or directory
(Không có tệp hoặc thư mục như vậy).
$ cp dir1/file1 dir2
Trong trường hợp này, hãy lưu ý rằng đường dẫn đến file1
sẽ rõ ràng hơn. Đường dẫn nguồn có thể được biểu thị dưới dạng đường dẫn tương đối hoặc tuyệt đối. Các đường dẫn tương đối sẽ được đưa ra trong tham chiếu đến một thư mục cụ thể, trong khi các đường dẫn tuyệt đối sẽ không được đưa ra cùng với bất kỳ một tham chiếu nào. Sau đây, chúng ta sẽ cùng làm rõ thêm khái niệm này.
Hiện tại, chúng ta chỉ cần quan sát lệnh này sao chép tệp file1
vào thư mục dir2
. Đường dẫn đến file1
được cung cấp nhiều chi tiết hơn vì người dùng hiện không ở trong thư mục dir1
.
$ cp /home/frank/Documents/file2 /home/frank/Documents/Backup
Trong trường hợp thứ ba này, tệp file2
nằm ở /home/frank/Documents
đã được sao chép vào thư mục /home/frank/Documents/Backup
. Đường dẫn nguồn được cung cấp ở đây là tuyệt đối. Trong hai ví dụ trên, đường dẫn nguồn là tương đối. Khi một đường dẫn bắt đầu bằng ký tự /
thì đó là đường dẫn tuyệt đối, nếu không thì đó là đường dẫn tương đối.
Cú pháp chung cho cp
là:
cp OPTIONS SOURCE DESTINATION
SOURCE
là tệp để sao chép và DESTINATION
là thư mục mà tệp sẽ được sao chép vào. SOURCE
và DESTINATION
có thể được chỉ định dưới dạng đường dẫn tuyệt đối hoặc tương đối.
Di chuyển Tệp bằng mv
Giống như lệnh cp
dùng để sao chép, Linux cũng cung cấp một lệnh dùng để di chuyển và đổi tên tệp là mv
.
Thao tác di chuyển cũng tương tự như thao tác cắt và dán mà người dùng thường thực hiện thông qua Giao diện Đồ hoạ Người dùng (GUI).
Nếu muốn di chuyển tệp vào một vị trí mới, hãy sử dụng mv
theo cách sau:
mv FILENAME DESTINATION_DIRECTORY
Sau đây là một ví dụ:
$ mv myfile.txt /home/frank/Documents
Kết quả là myfile.txt
đã được di chuyển đến đích /home/frank/Documents
.
Để đổi tên một tệp, mv
có thể được sử dụng theo cách sau:
$ mv old_file_name new_file_name
Thao tác này sẽ thay đổi tên của tệp từ old_file_name
thành new_file_name
.
Theo mặc định, mv
sẽ không cần ta phải xác nhận (về mặt kỹ thuật là “sẽ không nhắc lệnh”) nếu ta muốn ghi đè lên (đổi tên) một tệp hiện có. Tuy nhiên, chúng ta có thể cho phép hệ thống nhắc lệnh bằng cách sử dụng tùy chọn -i
:
$ mv -i old_file_name new_file_name mv: overwrite 'new_file_name'?
Lệnh này sẽ yêu cầu sự cho phép của người dùng trước khi ghi đè tệp old_file_name
lên tệp new_file_name
.
Ngược lại, nếu ta sử dụng tuỳ chọn -f
:
$ mv -f old_file_name new_file_name
thì lệnh sẽ bắt buộc ghi đè vào tệp mà không cần sự cho phép.
Xóa Tệp bằng rm
rm
được sử dụng để xóa các tệp (ta có thể coi nó như một dạng viết tắt của từ “remove”). Hãy lưu ý rằng hành động xóa tệp thường sẽ không thể đảo ngược; do đó, chúng ta nên thận trọng khi sử dụng lệnh này.
$ rm file1
Lệnh này sẽ xóa tệp file1
.
$ rm -i file1 rm: remove regular file 'file1'?
Lệnh này sẽ yêu cầu người dùng xác nhận trước khi xóa tệp file1
. Hãy nhớ rằng chúng ta đã thấy tùy chọn -i
khi sử dụng lệnh mv
ở trên.
$ rm -f file1
Lệnh này sẽ bắt buộc xóa tệp file1
mà không cần người dùng xác nhận.
Ta cũng có thể xóa nhiều tệp cùng một lúc:
$ rm file1 file2 file3
Trong ví dụ này, các tệp file1
, file2
và file3
sẽ đồng thời bị xóa.
Cú pháp cho rm
thường được đưa ra bởi:
rm OPTIONS FILE
Tạo và xóa Thư mục
Tạo Thư mục với mkdir
Việc tạo thư mục là rất quan trọng trong việc tổ chức các tệp và thư mục. Các tệp có thể được nhóm lại với nhau một cách hợp lý bằng cách giữ chúng ở bên trong một thư mục. Để tạo một thư mục, hãy sử dụng mkdir
:
mkdir OPTIONS DIRECTORY_NAME
Trong đó, DIRECTORY_NAME
là tên của thư mục sẽ được tạo. Lệnh có thể đồng thời tạo ra bao nhiêu thư mục cũng được.
$ mkdir dir1
sẽ tạo thư mục dir1
trong thư mục hiện tại của người dùng.
$ mkdir dir1 dir2 dir3
Lệnh trên sẽ tạo ra ba thư mục dir1
, dir2
và dir3
cùng một lúc.
Để tạo một thư mục cùng với các thư mục con của nó, hãy sử dụng tùy chọn -p
(“parents”):
$ mkdir -p parents/children
Lệnh này sẽ tạo cấu trúc thư mục parents/children
(mẹ/con), tức là nó sẽ tạo các thư mục parents
(mẹ) và children
(con). children
sẽ được đặt bên trong parents
.
Xóa Thư mục bằng rmdir
rmdir
sẽ xóa một thư mục nếu nó trống. Cú pháp của nó được đưa ra bởi:
rmdir OPTIONS DIRECTORY
trong đó, DIRECTORY
có thể là một đối số hoặc một danh sách các đối số.
$ rmdir dir1
Lệnh này sẽ xóa tệp file1
.
$ rmdir dir1 dir2
Lệnh này sẽ đồng thời xóa dir1
và dir2
.
Ta có thể xóa một thư mục cùng với thư mục con của nó:
$ rmdir -p parents/children
Thao tác này sẽ xóa cấu trúc thư mục parents/children
. Hãy lưu ý rằng nếu bất kỳ thư mục nào không trống, chúng sẽ không bị xóa.
Thao tác đệ quy của Tệp và Thư mục
Để thao tác với một thư mục và nội dung của nó, ta cần áp dụng quy tắc đệ quy. Đệ quy có nghĩa là thực hiện một hành động và lặp lại hành động đó xuống toàn bộ cây thư mục. Trong Linux, các tùy chọn -r
, -R
hoặc --recursive
thường là chỉ các thao tác đệ quy.
Ngữ cảnh sau đây sẽ giúp chúng ta hiểu rõ hơn về đệ quy:
Người dùng liệt kê nội dung của thư mục students
. Thư mục này chứa hai thư mục con là level 1
và level 2
và một tệp có tên frank
. Bằng cách áp dụng đệ quy, lệnh ls
sẽ liệt kê nội dung của students
, tức là level 1
, level 2
và frank
nhưng sẽ không kết thúc ở đó. Nó cũng sẽ nhập các thư mục con là level 1
và level 2
và liệt kê nội dung của chúng, v.v. xuống cây thư mục.
Liệt kê Đệ quy với ls -R
ls -R
được sử dụng để liệt kê nội dung của một thư mục cùng với các thư mục con và tệp của nó.
$ ls -R mydirectory mydirectory/: file1 newdirectory mydirectory/newdirectory:
Trong danh sách trên, mydirectory
cùng với toàn bộ nội dung của nó đã được liệt kê. Ta có thể quan sát mydirectory
chứa thư mục con newdirectory
và tệp file1
. Vì thư mục newdirectory
trống nên không có nội dung nào được hiển thị.
Nói chung, để liệt kê nội dung của một thư mục bao gồm cả các thư mục con của nó, hãy sử dụng:
ls -R DIRECTORY_NAME
Việc thêm dấu gạch chéo vào DIRECTORY_NAME
sẽ không có tác dụng:
$ ls -R animal
cũng tương tự như
$ ls -R animal/
Sao chép Đệ quy với cp -r
cp -r
(hoặc -R
hoặc --recursive
) sẽ cho phép ta sao chép một thư mục cùng với tất cả các thư mục con và tệp của nó.
$ tree mydir mydir |_file1 |_newdir |_file2 |_insidenew |_lastdir 3 directories, 2 files $ mkdir newcopy $ cp mydir newcopy cp: omitting directory 'mydir' $ cp -r mydir newcopy * tree newcopy newcopy |_mydir |_file1 |_newdir |_file2 |_insidenew |_lastdir 4 directories, 2 files
Trong danh sách trên, chúng ta có thể thấy rằng việc cố gắng sao chép mydir
vào newcopy
bằng cp
mà không có -r
sẽ khiến hệ thống hiển thị thông báo cp: omitting directory 'mydir'
(bỏ qua thư mục 'mydir'`). Tuy nhiên, bằng cách thêm tùy chọn -r
, tất cả nội dung của mydir
(bao gồm cả chính nó) sẽ được sao chép vào newcopy
.
Để sao chép các thư mục và thư mục con, hãy sử dụng:
cp -r SOURCE DESTINATION
Xóa Đệ quy với rm -r
rm -r
sẽ xóa một thư mục và tất cả nội dung của nó (thư mục con và tệp).
Warning
|
Hãy hết sức cẩn thận với |
Khi cố gắng xóa một thư mục mà không sử dụng -r
, hệ thống sẽ báo lỗi:
$ rm newcopy/ rm: cannot remove 'newcopy/': Is a directory $ rm -r newcopy/
Ta phải thêm -r
như trong lệnh thứ hai để việc xóa có hiệu lực.
Note
|
Có thể bạn sẽ thắc mắc tại sao chúng ta không sử dụng |
Hãy thêm tùy chọn -i
để xác nhận trước khi tệp bị xóa:
$ rm -ri mydir/ rm: remove directory 'mydir/'?
Hệ thống sẽ nhắc trước khi xóa thư mục mydir
.
Khớp mẫu khối trong Tệp và Ký tự Đại diện
Khớp mẫu khối trong Tệp là một tính năng được cung cấp bởi vỏ Unix/Linux để biểu thị nhiều tên tệp bằng cách sử dụng các ký tự đặc biệt được gọi là ký tự đại diện (wildcards). Ký tự đại diện về cơ bản là các ký hiệu có thể được sử dụng để thay thế cho một hoặc nhiều ký tự (ví dụ như cho phép hiển thị tất cả các tệp bắt đầu bằng chữ cái như A
hoặc tất cả các tệp kết thúc bằng chữ cái .conf
).
Ký tự đại diện rất hữu ích vì chúng có thể được sử dụng với các lệnh như cp
, ls
hoặc rm
.
Sau đây là một số ví dụ về khớp mẫu khối trong tệp:
rm *
-
Xóa tất cả các tệp trong thư mục làm việc hiện tại.
ls l?st
-
Liệt kê tất cả các tệp có tên bắt đầu bằng
l
, theo sau là bất kỳ ký tự đơn nào và kết thúc bằngst
. rmdir [a-z]*
-
Xóa tất cả các thư mục có tên bắt đầu bằng một chữ cái.
Các loại Ký tự Đại diện
Có ba ký tự có thể được sử dụng làm ký tự đại diện trong Linux:
*
(dấu hoa thị)-
đại diện cho không, một hoặc nhiều lần xuất hiện của bất kỳ ký tự nào.
?
(dấu chấm hỏi)-
đại diện cho một lần xuất hiện của bất kỳ ký tự nào.
[ ]
(ký tự trong ngoặc vuông)-
đại diện cho bất kỳ sự xuất hiện nào của các ký tự được đặt trong ngoặc vuông. Ta có thể sử dụng nhiều loại ký tự khác nhau dù là số, chữ, ký tự đặc biệt khác. Ví dụ: khối
[0-9]
khớp với tất cả các chữ số.
Dấu hoa thị
Dấu hoa thị (*
) khớp với không, một hoặc nhiều lần xuất hiện của bất kỳ ký tự nào.
Ví dụ:
$ find /home -name *.png
Thao tác này sẽ tìm tất cả các tệp kết thúc bằng .png
(chẳng hạn như photo.png
, cat.png
, frank.png
). Lệnh find
sẽ được thảo luận thêm trong bài học sau.
Tương tự như vậy:
$ ls lpic-*.txt
sẽ liệt kê tất cả các tệp văn bản bắt đầu bằng các ký tự lpic-
, theo sau là bất kỳ số lượng ký tự nào và kết thúc bằng .txt
(chẳng hạn như lpic-1.txt
và lpic-2.txt
).
Ký tự đại diện dấu hoa thị có thể được sử dụng để thao tác (sao chép, xóa hoặc di chuyển) với toàn bộ nội dung của một thư mục:
$ cp -r animal/* forest
Trong ví dụ này, tất cả nội dung của animal
đã được sao chép vào forest
.
Nói chung, để sao chép tất cả nội dung của một thư mục, chúng ta sẽ sử dụng:
cp -r SOURCE_PATH/* DEST_PATH
trong đó, SOURCE_PATH
có thể được bỏ qua nếu chúng ta đã đang ở trong thư mục được yêu cầu.
Dấu hoa thị, cũng giống như bất kỳ ký tự đại diện nào khác, có thể được sử dụng nhiều lần trong cùng một lệnh và tại bất kỳ vị trí nào:
$ rm *ate*
Tên tệp có tiền tố là không, một hoặc nhiều lần xuất hiện của bất kỳ ký tự nào, theo sau là các chữ cái ate
và kết thúc bằng không, một hoặc nhiều lần xuất hiện của bất kỳ ký tự nào sẽ bị xóa.
Dấu Hỏi
Dấu chấm hỏi (?
) khớp với một lần xuất hiện đơn của một ký tự.
Hãy xem phần liệt kê sau:
$ ls last.txt lest.txt list.txt third.txt past.txt
Để chỉ trả lại các tệp bắt đầu bằng l
theo sau bởi bất kỳ ký tự đơn nào và kết thúc st.txt
, chúng ta sẽ sử dụng ký tự đại diện dấu chấm hỏi (?
):
$ ls l?st.txt last.txt lest.txt list.txt
Chỉ các tệp last.txt
, lest.txt
và list.txt
mới được hiển thị vì chúng khớp với tiêu chí đã cho.
Tương tự như vậy:
$ ls ??st.txt last.txt lest.txt list.txt past.txt
sẽ cho đầu ra là các tệp có tiền tố là hai ký tự bất kỳ, theo sau là văn bản st.txt
.
Ký tự trong Ngoặc Vuông
Ký tự đại diện trong ngoặc sẽ tương ứng với bất kỳ sự xuất hiện nào của các ký tự được đặt trong dấu ngoặc vuông.
$ ls l[aef]st.txt last.txt lest.txt
Lệnh này sẽ liệt kê tất cả các tệp bắt đầu bằng l
và theo sau là bất kỳ ký tự nào trong tập hợp aef
và kết thúc bằng st.txt
.
Các dấu ngoặc vuông cũng có thể sử dụng với các phạm vi:
$ ls l[a-z]st.txt last.txt lest.txt list.txt
Lệnh này sẽ xuất ra tất cả các tệp có tên bắt đầu bằng l
và theo sau là bất kỳ chữ cái viết thường nào trong phạm vi từ a
đến z
và kết thúc bằng st.txt
.
Nhiều phạm vi cũng có thể được áp dụng trong ngoặc vuông:
$ ls student-1A.txt student-2A.txt student-3.txt $ ls student-[0-9][A-Z].txt student-1A.text student-2A.txt
Danh sách hiển thị một thư mục trường học với một danh sách các học sinh đã đăng ký. Để chỉ liệt kê những sinh viên có số báo danh đáp ứng các tiêu chí sau:
-
bắt đầu bằng
student-
-
theo sau là một số và một ký tự viết hoa
-
và kết thúc bằng
.txt
Kết hợp các Ký tự Đại diện
Các ký tự đại diện có thể được kết hợp như sau:
$ ls last.txt lest.txt list.txt third.txt past.txt $ ls [plf]?st* last.txt lest.txt list.txt past.txt
Thành phần ký tự đại diện đầu tiên ([plf]
) sẽ khớp với bất kỳ ký tự nào trong số các ký tự p
, l
hoặc f
. Thành phần ký tự đại diện thứ hai (?
) sẽ khớp với bất kỳ ký tự đơn nào. Thành phần ký tự đại diện thứ ba (*
) sẽ khớp với không, một hoặc nhiều lần xuất hiện của bất kỳ ký tự nào.
$ ls file1.txt file.txt file23.txt fom23.txt $ ls f*[0-9].txt file1.txt file23.txt fom23.txt
Lệnh trên sẽ hiển thị tất cả các tệp bắt đầu bằng chữ cái f
, theo sau là bất kỳ bộ chữ cái nào, ít nhất một lần xuất hiện của một chữ số và kết thúc bằng .txt
. Hãy lưu ý rằng file.txt
sẽ không được hiển thị vì nó không khớp với tiêu chí này.
Bài tập Hướng dẫn
-
Hãy xem danh sách dưới đây:
$ ls -lh total 60K drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Desktop drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Documents drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Downloads -rw-r--r-- 1 frank frank 21 Sep 7 12:59 emp_name -rw-r--r-- 1 frank frank 20 Sep 7 13:03 emp_salary -rw-r--r-- 1 frank frank 8.8K Apr 1 2018 examples.desktop -rw-r--r-- 1 frank frank 10 Sep 1 2018 file1 -rw-r--r-- 1 frank frank 10 Sep 1 2018 file2 drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Music drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Pictures drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Public drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Templates drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Videos
-
Ký tự
d
biểu thị điều gì trong đầu ra? -
Tại sao các kích thước lại được đưa ra ở định dạng con người có thể đọc được?
-
Sự khác biệt trong đầu ra sẽ là gì nếu
ls
được sử dụng mà không có đối số?
-
-
Hãy xem lệnh dưới đây:
$ cp /home/frank/emp_name /home/frank/backup
-
Điều gì sẽ xảy ra với tệp
emp_name
nếu lệnh này được thực thi thành công? -
Nếu
emp_name
là một thư mục thì tùy chọn nào sẽ được thêm vàocp
để thực thi lệnh? -
Nếu
cp
được đổi thànhmv
thì kết quả sẽ như thế nào?
-
-
Hãy xem danh sách:
$ ls file1.txt file2.txt file3.txt file4.txt
Ký tự đại diện nào sẽ giúp ta xóa toàn bộ nội dung của thư mục này?
-
Dựa trên danh sách trên, những tệp nào sẽ được hiển thị bởi lệnh sau?
$ ls file*.txt
-
Hãy hoàn thành lệnh bằng cách thêm các chữ số và ký tự thích hợp trong dấu ngoặc vuông để liệt kê toàn bộ nội dung ở trên:
$ ls file[].txt
Bài tập Mở rộng
-
Trong thư mục chính của bạn, hãy tạo các tệp có tên
dog
vàcat
. -
Vẫn trong thư mục chính của bạn, hãy tạo thư mục có tên
animal
. Hãy di chuyểndog
vàcat
vàoanimal
. -
Hãy di chuyển đến thư mục
Documents
trong thư mục chính của bạn và tạo thư mụcbackup
. -
Hãy sao chép
animal
và nội dung của nó vàobackup
. -
Hãy đổi tên
animal
trongbackup
thànhanimal.bkup
. -
Thư mục
/home/lpi/databases
có chứa nhiều tệp bao gồm:db-1.tar.gz
,db-2.tar.gz
vàdb-3.tar.gz
. Bạn có thể sử dụng lệnh đơn nào để chỉ liệt kê các tệp được đề cập ở trên? -
Hãy xem danh sách sau:
$ ls cne1222223.pdf cne12349.txt cne1234.pdf
Với việc sử dụng một ký tự khớp mẫu khối duy nhất, lệnh nào sẽ chỉ xóa các tệp pdf?
Tóm tắt
Trong bài học này, chúng ta đã khám phá cách xem nội dung bên trong một thư mục bằng lệnh ls
, cách sao chép các tệp và thư mục (cp
) cũng như cách di chuyển (mv
) chúng. Chúng ta cũng đã xem xét cách tạo thư mục mới bằng lệnh mkdir
. Các lệnh để xóa tệp (rm
) và thư mục (rmdir
) cũng đã được thảo luận.
Trong bài học này, bạn cũng đã học về khớp mẫu khối tệp và ký tự đại diện. Khớp mẫu khối tệp được sử dụng để biểu thị nhiều tên tệp bằng cách sử dụng các ký tự đặc biệt được gọi là ký tự đại diện. Các ký tự đại diện cơ bản và ý nghĩa của chúng:
?
(dấu chấm hỏi)-
đại diện cho một lần xuất hiện của một ký tự.
[ ]
(dấu ngoặc vuông)-
đại diện cho bất kỳ sự xuất hiện nào của các ký tự nằm trong dấu ngoặc vuông.
*
(dấu hoa thị)-
đại diện cho không, một hoặc nhiều lần xuất hiện của bất kỳ ký tự nào.
Bạn có thể kết hợp bất kỳ ký tự đại diện nào với nhau trong cùng một câu lệnh.
Đáp án Bài tập Hướng dẫn
-
Hãy xem danh sách dưới đây:
$ ls -lh total 60K drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Desktop drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Documents drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Downloads -rw-r--r-- 1 frank frank 21 Sep 7 12:59 emp_name -rw-r--r-- 1 frank frank 20 Sep 7 13:03 emp_salary -rw-r--r-- 1 frank frank 8.8K Apr 1 2018 examples.desktop -rw-r--r-- 1 frank frank 10 Sep 1 2018 file1 -rw-r--r-- 1 frank frank 10 Sep 1 2018 file2 drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Music drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Pictures drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Public drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Templates drwxr-xr-x 2 frank frank 4.0K Apr 1 2018 Videos
-
Ký tự
d
biểu thị điều gì trong đầu ra?d
là ký tự để xác định một thư mục. -
Tại sao các kích thước lại được đưa ra ở định dạng con người có thể đọc được?
Do có tùy chọn
-h
. -
Sự khác biệt trong đầu ra sẽ là gì nếu
ls
được sử dụng mà không có đối số?Sẽ chỉ có tên của thư mục và tệp được cung cấp.
-
-
Hãy xem lệnh dưới đây:
$ cp /home/frank/emp_name /home/frank/backup
-
Điều gì sẽ xảy ra với tệp
emp_name
nếu lệnh này được thực thi thành công?emp_name
sẽ được sao chép vàobackup
. -
Nếu
emp_name
là một thư mục thì tùy chọn nào sẽ được thêm vàocp
để thực thi lệnh?-r
-
Nếu
cp
được đổi thànhmv
thì kết quả sẽ như thế nào?emp_name
sẽ được di chuyển đếnbackup
. Nó sẽ không còn hiện diện trong thư mục chính của người dùngfrank
nữa.
-
-
Hãy xem danh sách:
$ ls file1.txt file2.txt file3.txt file4.txt
Ký tự đại diện nào sẽ giúp ta xóa toàn bộ nội dung của thư mục này?
Dấu hoa thị
*
. -
Dựa trên danh sách trên, những tệp nào sẽ được hiển thị bởi lệnh sau?
$ ls file*.txt
Tất cả các tệp vì ký tự dấu hoa thị đại diện cho bất kỳ một số lượng ký tự nào.
-
Hãy hoàn thành lệnh bằng cách thêm các chữ số và ký tự thích hợp trong dấu ngoặc vuông để liệt kê toàn bộ nội dung ở trên:
$ ls file[].txt
file[0-9].txt
Đáp án Bài tập Mở rộng
-
Trong thư mục chính của bạn, hãy tạo các tệp có tên
dog
vàcat
.$ touch dog cat
-
Vẫn trong thư mục chính của bạn, hãy tạo thư mục có tên
animal
. Hãy di chuyểndog
vàcat
vàoanimal
.$ mkdir animal $ mv dog cat -t animal/
-
Hãy di chuyển đến thư mục
Documents
trong thư mục chính của bạn và tạo thư mụcbackup
.$ cd ~/Documents $ mkdir backup
-
Hãy sao chép
animal
và nội dung của nó vàobackup
.$ cp -r animal ~/Documents/backup
-
Hãy đổi tên
animal
trongbackup
thànhanimal.bkup
.$ mv animal/ animal.bkup
-
Thư mục
/home/lpi/databases
có chứa nhiều tệp bao gồm:db-1.tar.gz
,db-2.tar.gz
vàdb-3.tar.gz
. Bạn có thể sử dụng lệnh đơn nào để chỉ liệt kê các tệp được đề cập ở trên?$ ls db-[1-3].tar.gz
-
Hãy xem danh sách sau:
$ ls cne1222223.pdf cne12349.txt cne1234.pdf
Với việc sử dụng một ký tự khớp mẫu khối duy nhất, lệnh nào sẽ chỉ xóa các tệp pdf?
$ rm *.pdf