Hệ điều hành Linux đã cung cấp nhiều lệnh để chúng ta có thể làm việc với tập tin và thư mục. Bài viết này sẽ giới thiệu với các bạn về cách tạo thư mục trên linux, tạo tập tin mới hoặc tập tin trống, xem nội dung của tập tin và tìm kiếm tập tin trên linux, thay đổi dấu thời gian của tập tin và di chuyển, xóa và đổi tên tập tin hoặc thư mục. Các lệnh này giúp bạn quản lý dữ liệu và tập tin của mình và đảm bảo rằng dữ liệu chính xác có sẵn tại đúng vị trí từ đây giúp cho các bạn có thể tự học linux một cách dể dàng hơn.
Làm việc với tập tin và thư mục
1. Lệnh ls - xem danh sách tập tin thư mục
ls -[tùy chọn] [đường dẫn thư mục muốn xem]
Các tuỳ chọn phổ biến của lệnh ls:
Các tùy chọn | Ý nghĩa |
---|---|
-L | Hiển thị danh sách tập tin, thư mục (chỉ hiện thị tên). |
-l | Hiển thị danh sách tập tin, thư mục (gồm nhiều cột: filename, size, date,…. |
-a | Liệt kê tất cả các tập tin, thư mục, bao gồm những tập tin ẩn. |
-R | Liệt kê tất cả các tập tin, thư mục kể cả các tập tin, thư mục bên trong thư mục cha. |
Ngoài ra chúng ta có thể sử dụng "man" để xem các tuỳ chọn của lệnh ls
man ls
1.1. Lệnh grep
Lệnh grep - lọc lại tên tập tin thư mục muốn xem
Lệnh ls -l
của "/" cho kết quả nhiều thông tin, nếu muốn lọc lại tên tập tin thư mục muốn xem chỉ cần thêm grep
.
lệnh | grep [nhập ký tự muốn lọc]
Ví dụ 1: Muốn xem trong "/" có tập tin, thư mục nào có ký tự là pro thì thực hiện như sau:
ls -l | grep pro
Ví dụ 2: Muốn xem trong thư mục /etc có tập tin, thư mục nào có ký tự là yum thì thực hiện như sau:
ls -l /etc/ | grep yum
Lệnh grep còn được dùng tìm kiếm chuỗi trong file:
grep “ chuoi ” tên file
Lệnh grep còn được dùng tìm kiếm chuỗi trong nhiều file cùng lúc:
grep “ chuoi ” file_pattern
Chú ý: Dùng ký hiệu "*" để thực hiện tìm kiếm nhiều tập tin cùng một lúc.
Ví dụ: Tìm kiếm chuỗi "yum" trong các file có đuôi .txt trong thư mục /root:
grep “yum” /root/*.txt
2. Lệnh cd
Lệnh cd
dùng để đổi sang thư mục khác
Các lệnh cd thông dụng
- Di chuyển về thư mục gốc:
cd /
- Di chuyển đến 1 vị trí bất kì khi biết đường dẫn tuyệt đối:
cd /etc/networks
- Di chuyển đến thư mục con nằm trong thư mục hiện tại:
cd docs
hoặc./docs
Di chuyển đến thư mục mẹ:
cd ..
Hoặc
cd ../.. : di chuyển về thư mục mẹ 2 lần
- Lệnh cd không có tham số, sẽ đưa bạn về home directory, dù bất kể bạn đang ở đâu:
cd
hoặccd ~
- Lệnh cd dùng để quay về thư mục trước:
cd -
3. Lệnh pwd
Lệnh pwd
chúng ta sẽ có ful path của thư mục mà chúng ta đang dùng ở hiện tại.
pwd
4. Lệnh mkdir – dùng để tạo thư mục trên Linux
Lệnh mkdir
được sử dụng để tạo một thư mục trong thư mục hiện tại:
mkdir [tên thư mục cần tạo]
Ví dụ: Tạo thư mục tên exampledir trong thư mục hiện tại:
mkdir exampledir
5. Lệnh xóa tập tin thư mục
5.1: Xóa tập tin:
rm [đường dẫn]
Ví dụ: Xóa tập tin abc.txt trong /usr/passwd:
rm /usr/passwd/abc.txt
5.2: Xóa tập tin mà không cần hỏi:
rm -f [đường dẫn]
Ví dụ: Xóa tập tin abc.txt trong /usr/passwd:
rm -f /usr/passwd/abc.txt
5.3: Xóa thư mục:
rm -rf [đường dẫn]
Ví dụ: Xóa thư mục example trong /usr/bin:
rm -rf /usr/bin/example
5.4: Xóa thư mục rỗng:
rmdir [đường dẫn]
Ví dụ: Xóa thư mục dir trong /usr/bin: rmdir dir
6. Lệnh copy tập tin, thư mục
6.1: Lệnh sao chép tập tin:
cp [đường dẫn nguồn] [đường dẫn đích]
Ví dụ: Sao chép tập tin abc.txt trong thư mục /root sang /usr: cp /root/abc.txt /usr
6.2: Lệnh sao chép thư mục:
cp -R [đường dẫn nguồn] [đường dẫn đích]
Ví dụ: Sao chép thư mục /root/networks sang /usr/bin:
cp -r /root/networks /usr/bin
7. Lệnh mv - dùng di chuyển, đổi tên
Lệnh mv
thực hiện nhiệm vụ kép. Nó có thể thực hiện:
7.1:Cần đổi tên một tập tin
mv [đường dẫn với tên củ] [đường dẫn với tên mới]
Ví dụ: Đổi tên tập tin test1.txt trong /root thành test.txt:
mv /root/test1.txt /root/test.txt
7.2: Di chuyển một tập tin đến vị trí khác, trong khi đó nó có thể đổi tên cùng lúc.
mv [đường dẫn nguồn] [đường dẫn đích]
Ví dụ: Di chuyển và đổi tên tập tin test1.txt trong /root sang /etc đổi tên thành test.txt: mv /root/test1.txt /etc/test.txt
8.Lệnh touch - dùng để tạo tập tin rỗng
Lệnh touch
thường được sử dụng để thiết lập hoặc cập nhật quyền truy cập, thay đổi và sửa đổi thời gian của tập tin.Theo mặc định, nó đặt lại dấu thời gian của tập tin để khớp với thời gian hiện tại.
Ngoài ra lệnh touch
còn dùng để tạo tập tin rỗng.
touch [tên tập tin]
Ví dụ: Tạo tập tin tên test1.txt:
touch test1.txt
Lệnh touch
còn cung cấp một số tiện ích, như tuỳ chọn -t cho phép bạn đặt ngày thời gian của tệp.
touch -t [thoigian] [tên tập tin]
Ví dụ: Đặt thời gian cho tập tin myfile, ngày 9 tháng 12 và lúc 4 giờ chiều (12091600):
touch -t 12091600 myfile
9. Dùng trình soạn thảo vi
Linux có nhiều chương trình cho phép soạn thảo văn bản như: vi, emacs, joe, pico,… chương trình soạn thảo văn bản thông dụng nhất đó là vi.
Khi vi
khởi động sẽ ở chế độ dòng lệnh. Để chuyển đổi từ chế độ dòng lệnh sang chế độ soạn thảo thì nhấn phím insert. Để trở lại chế độ dòng lệnh thì chọn phím ESC.
vi [đường dẫn]
Ví dụ: Tạo tập tin 123.txt và đặt trong thư mục /usr/bin với nội dung là “ dung trinh soan thao vi”
Bước 1: Dùng lệnh vi để tạo tập tin 123.txt. Nếu tập tin này đã có thì cũng dùng vi để mở và cũng theo cú pháp ở trên.
vi 123.txt
Bước 2: Nhấn phím i để nhập nội dung “dung trinh soan thao vi”.
Bước 3: Nhấn phím ESC để nhập một trong các yêu cầu sau:
q!
: thoát mà không lưu văn bản.wq
: Lưu và thoát khỏi tập tin.
Các câu lệnh và tác dụng trong chế độ dòng lệnh của trình soạn thảo vi:
Câu lệnh | Tác dụng |
---|---|
^ hoặc 0 | Dịch chuyển con trỏ đến vị trí bắt đầu của dòng hiện tại. |
$ | Dịch chuyển con trỏ đến vị trí kết thúc của dòng hiện tại. |
i,a | Chèn văn bản ngay trước/sau vị trí con trỏ. |
O | Mở một dòng mới ngay sau dòng hiện tại. |
O | Mở một dòng mới ngay trước dòng hiện tại. |
X | Xóa ký tự sau con trỏ. |
Dw | Xoá một từ (bao gồm cả ký tự trống ngay sau nó). |
D | Xoá từ vị trí con trỏ đến kết thúc dòng. |
d^ | Xoá từ vị trí bắt đầu dòng đến vị trí ký tự trống hay ký tự bên trái con trỏ. |
U | Huỷ bỏ thay đổi trước đó. |
/pattern | Tìm xâu pattern. Theo hướng tiến. |
?pattern | Tìm xâu pattern, theo hướng lùi về đầu văn bản. |
n,N | Lặp lại việc tìm kiếm theo cùng hướng/ngược hướng. |
p, P | Dán đoạn văn bản vừa xoá vào trước/sau con trỏ. |
. | Lặp lại câu lệnh cuối. |
Dd | Xóa dòng có con trỏ chạy. |
:w | Ghi lại tất cả các thay đổi của file hiện tại và tiếp tục soạn thảo. |
:q! | Kết thúc, không lưu trữ bất kỳ thay đổi. |
:ZZ | Lưu thay đổi của file hiện tại và kết thúc. |
10. Tạo tập tin có nội dung:
echo “noi dung” >[đường dẫn]
Ghi vào dòng tiếp theo của tập tin có nội dung:
echo “noi dung tiep theo” >>[đường dẫn]
11. Xem tập tin
Chúng ta sử dụng các lệnh để xem tập tin:
Lệnh | Chức năng |
---|---|
cat | Dùng để xem các tập tin không quá dài. |
tac | Dùng để xem nội dung của một tập tin ngước bắt đầu từ dòng cuối. |
tess | Dùng để xem tập tin lớn hơn vì đây là chương trình phân trang. |
tail | Dùng để in 10 dòng cuối của tập tin theo mặc định. Chúng ta có thể thay đổi số dòng bằng cách thêm -n vào sau tail, n là số dòng bạn muốn. |
head | Dùng để in 10 dòng đầu của tập tin theo mặc định. Chúng ta có thể thay đổi số dòng bằng cách thêm -n vào sau head, n là số dòng bạn muốn. |
12. Lệnh tìm kiếm
find [đường dẫn] -name [tên cần tìm]
Ví dụ: Tìm vị trí của tập tin xyz.txt trong /etc:
find /etc/ -name xyz.txt
Ngoài việc tìm theo tên (-name), có thể tìm theo các tùy chọn khác như: -type, -user, -atime, -amin, -newer,… Sử dụng lệnh man find để xem chi tiết.
Chú ý: Có thể dùng ký hiệu "*" để thực hiện xóa, tìm kiếm, sao chép... nhiều tập tin cùng một lúc.
12.1: Tìm theo thời gian và size
Find có thêm cả phần lọc kết quả theo thời gian và size nữa.
12.1.1: Size
Ta có thể tìm những file có dung lượng tùy ý, bằng cách dùng -size. Một số option thường dùng:
c
: bytesk
: KilobytesM
: MegabytesG
: Gigabytesb
: 512-byte blocks
Tìm tất cả các file nặng đúng 100 bytes:
find / -size 100c
Tìm các file nhỏ hơn 100 bytes:
find / -size -100c
Hoặc tìm các file nặng hơn 1GB:
find / -size +1G
12.1.2: Time
Linux lưu trữ 1 vài thông tin liên quan đến thời gian như: thời điểm truy cập, thời điểm chỉnh sửa, và thời điểm thay đổi file.
- Access Time (thời điểm truy cập): Lần cuối cùng file được đọc hoặc ghi vào.
- Modification Time (thời điểm chỉnh sửa): Lần cuối nội dung file được chỉnh sửa.
- Change Time (thời điểm thay đổi): Lần cuối mà inode meta-data của file bị sửa.
Tương đương với các thông tin trên, ta dùng -atime, -mtime, -ctime, và cả "-" và "+" để lọc ra những thời gian trước hay sau thời điểm đó.
Để tìm các file được chỉnh sửa trong vòng 1 ngày trước:
find / -mtime 1
Tìm các file được truy cập trong ngày hôm qua:
find / -atime -1
Các file mà meta-data bị chỉnh sửa lần cuối là 3 ngày trước và hơn:
find / -ctime +3
Hoặc tìm theo phút chứ không phải ngày:
find / -mmin -1
Lệnh trên sẽ tìm các file được chỉnh sửa trong vòng 1 phút trước.
Lệnh find còn có thể so sánh với 1 file, và trả về những file mới hơn:
find / -newer myfile
12.2: Tìm theo Owner và Permission
Chúng ta có thể tìm theo user hay group owner bằng -user
và -group
.
Tìm các file mà user "test" sở hữu:
find / -user test
Hoặc các file mà group "newgroup" sở hữu:
find / -group newgroup
Chúng ta cũng tìm được theo permission của file, bằng -perm
Tìm những file có permission 644:
find / -perm 644
hoặc những file có permission ít nhất 644, nghĩa là gồm cả các file có permisson là 744:
find / -perm -644
12.3: Kết hợp find và command khác
Chúng ta còn có thể kết hợp find
và các command khác để xử lý những file vừa tìm được với -exec
find find_parameters -exec command_and_params {} \;
Tìm các file có permission là 644 và chmod sang 755:
find / -type f -perm 644 -print -exec chmod 755 {} \;
Tìm 1 file test.py và xóa nó:
find . -type f -name "test.py" -exec rm -f {} \;
Hoặc xóa các file có đuôi .txt ở dir hiện tại:
find . -type f -name "*.txt" -exec rm -f {} \;
13. Lệnh nén và giải nén tập tin thư mục
Trong hệ thống Linux tồn tại một số dạng nén cơ bản như: zip,... Dưới đây là một vài ví dụ về cách nén và giải nén với định dạng đó.
Nén và giải nén tập tin có đuôi là .gz
gzip [đường dẫn]
Ví dụ 1: Nén tập tin test.txt trong thư mục /usr/bin thành test.txt.gz:
gzip /usr/bin/test.txt
gunzip [đường dẫn]
Ví dụ 2: Giải nén tập tin test.txt.gz trong thư mục /usr/bin:
gunzip /usr/bin/test.txt
14. Lệnh locate
Lệnh locate
giúp chúng ta tìm kiếm rất nhanh một file bất kì trên hệ thống Linux. Chúng ta thường dùng cú pháp như sau:
locate [tùy chọn] [name-file]
Chương trình locate
có tên gói cài đặt là mlocate
Cú pháp cài đặt chương trình locate
như sau:
Đối với CentOS/RHEL
yum install -y mlocate
Đối với Debian/Ubuntu
apt-get install -y mlocate
Một số ví dụ về lệnh locate
:
Ví dụ 1: Tìm một file với lệnh locate
[root@test1 ~]# locate sysctl.conf
/etc/sysctl.conf
/etc/sysctl.d/99-sysctl.conf
/usr/share/man/man5/sysctl.conf.5.gz
Ví dụ 2: Hiển thị đếm số lượng kết quả sử dụng tùy chọn -c
[root@test1 ~]# locate sysctl.conf
/etc/sysctl.conf
/etc/sysctl.d/99-sysctl.conf
/usr/share/man/man5/sysctl.conf.5.gz
[root@test1 ~]# locate -c sysctl.conf
3
Ví dụ 4: Hiển thị kết quả tên file chữ hoa chữ thường
Theo mặc định thì locate
chỉ tìm ra những file có chữ thường. Nhưng trong một số trường hợp thì chúng ta muốn tìm kiếm file có chữ thường chữ hoa chúng ta sử dụng tùy chọn -i
. Cú pháp như sau:
locate -i [name-file]
Ví dụ 5: Giới hạn kết quả xuất ra
Nếu không giới hạn kết quả xuất ra sẽ ra rất nhiều kết quả liên quan. Như ví dụ sau
[root@test1 ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/passwd
/usr/include/rpcsvc/yppasswd.h
/usr/include/rpcsvc/yppasswd.x
/usr/lib/firewalld/services/kpasswd.xml
/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/vmware/imc/config_passwd.py
/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/vmware/imc/config_passwd.pyc
/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/vmware/imc/config_passwd.pyo
/usr/lib64/security/pam_unix_passwd.so
/usr/sbin/chpasswd
/usr/sbin/lpasswd
...
Để giới hạn số lượng xuất ra chúng ta sử dụng tùy chọn -l
. Ví dụ chúng ta muốn xuất 5 dòng thì chúng ta thực hiện như sau:
[root@test1 ~]# locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
Để cập nhật lại dữ liệu cho locate
chúng ta chay lệnh sau:
updatedb
15. Lệnh which và lệnh whereis
15.1. Lệnh which
Lệnh which
xác định vị trí một chương trình trong đường dẫn của người dùng.
Một số cú pháp của lệnh which
:
Tìm kiếm biến môi trường PATH và hiển thị vị trí của bất kỳ tập tin thực thi phù hợp nào
which [executable]
Nếu có nhiều tập tin thực thi khớp, hiển thị tất cả:
which -a [executable]
15.2 Lệnh whereis
Lệnh whereis
rất hữu ích để tìm kiếm các trang nhị phân, nguồn các lệnh trong hệ thống Linux. Cú pháp như sau:
whereis [tuỳ chọn] [command]
Ví dụ 1: Nó định vị các trang nhị phân, nguồn và man của lệnh open
và nó hiển thị các đường dẫn trong đó các trang nhị phân, lệnh man có sẵn trong hệ thống.
[root@test1 ~]# whereis open
open: /usr/bin/open /usr/share/man/man1/open.1.gz /usr/share/man/man3/open.3pm.gz
[root@test1 ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
Ví dụ 2: Xác định vị trí của tập tin nhị phân lệnh ls
tuỳ chọn -b
[root@test1 ~]# whereis -b ls
ls: /usr/bin/ls
Ví dụ 3: Xác định vị trí của trang man lệnh ls
tuỳ chọn -m
[root@test1 ~]# whereis -m ls
ls: /usr/share/man/man1/ls.1.gz
16. Lệnh type
Lệnh type
trong Linux được sử dụng để tìm hiểu một lệnh mà chúng ta nhập sẽ diễn giải là một lệnh tích hợp, lệnh bên ngoài hoặc bí danh(alias) của shell hiện tại. Cú pháp của lệnh này là:
type [tuỳ chọn] [command]
Ví dụ 1: Xem lệnh pwd
là lệnh tích hợp, lệnh bên ngoài hay bí danh
[root@test1 ~]# type pwd
pwd is a shell builtin
Qua kết quả trên cho chúng ta thấy lệnh pwd
là một lệnh shell tích hợp.
Ví dụ 2: Để xem thêm thông tin về một lệnh cụ thể, chúng ta sử dụng tùy chọn -a
[root@test1 ~]# type -a pwd
pwd is a shell builtin
pwd is /usr/bin/pwd