/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Hard Links & Symbolic Links In Linux/Ubuntu/CentOS

Khi một file hoặc folder được tạo ra trong Linux nó sẽ tạo ra 1 số cho file hoặc folder đó. Số đó gọi là INODE và đây là dãy số duy nhất trên hệ thống của Linux nhằm mục đích quản lý. 

Ví dụ:

khanhvc@ubutu:~/projects$ ll -i

total 12

2621505 drwxrwxr-x  3 khanhvc khanhvc 4096 Thg 9  23 14:05 ./

2621442 drwxr-xr-x 27 khanhvc khanhvc 4096 Thg 9  23 14:05 ../

2621869 -rw-rw-r--  1 khanhvc khanhvc    0 Thg 9  23 14:05 file_name.txt

2755955 drwxrwxr-x  2 khanhvc khanhvc 4096 Thg 9  23 14:05 folder_name/

khanhvc@ubutu:~/projects$


1. Hard Links

Ví dụ: tạo hard links có tên hardlink.txt trỏ về file_name.txt
khanhvc@ubutu:~/projects$ ln file_name.txt hardlink.txt
khanhvc@ubutu:~/projects$ ll -i
total 12
2621505 drwxrwxr-x  3 khanhvc khanhvc 4096 Thg 9  23 14:17 ./
2621442 drwxr-xr-x 27 khanhvc khanhvc 4096 Thg 9  23 14:05 ../
2621869 -rw-rw-r--  2 khanhvc khanhvc    0 Thg 9  23 14:05 file_name.txt
2755955 drwxrwxr-x  2 khanhvc khanhvc 4096 Thg 9  23 14:05 folder_name/
2621869 -rw-rw-r--  2 khanhvc khanhvc    0 Thg 9  23 14:05 hardlink.txt
khanhvc@ubutu:~/projects$

Chúng ta thấy file hardlink.txt và file_name.txt có inode giống nhau, có nghĩa hard link sẽ tạo link trỏ về link gốc của tập tin, hay nói cách khác hardlink.txt và file_name.txt có cùng chung một dữ liệu.

Nếu chúng ta thêm dữ liệu vào file hardlink.txt, cũng đồng nghĩa dữ liệu đó được thêm vào file_name.txt
khanhvc@ubutu:~/projects$ echo "thêm nội dung vào hardlink.txt" >> hardlink.txt
khanhvc@ubutu:~/projects$ cat file_name.txt
thêm nội dung vào hardlink.txt
 
khanhvc@ubutu:~/projects$ cat hardlink.txt
thêm nội dung vào hardlink.txt
khanhvc@ubutu:~/projects$

Nội dung 2 file hoàn toàn giống nhau. Nếu chung ta xóa 1 trong 2 file này vẫn không ảnh gì đến dữ liệu của file còn lại

khanhvc@ubutu:~/projects$ rm file_name.txt
khanhvc@ubutu:~/projects$ ls -i
2755955 folder_name  2621869 hardlink.txt
khanhvc@ubutu:~/projects$


Thực hiện xóa file file_name.txt, kiểm tra nội dung file hardlink.txt

 

khanhvc@ubutu:~/projects$ cat hardlink.txt
thêm nội dung vào hardlink.txt
khanhvc@ubutu:~/projects$


2. Symbolic Links: Tạo ra 1 link để trỏ đến file hoặc thưc mục gọi target. Nó không chứa bản sao copy của target mà nó chỉ link đến file hay thư mục, nó tương tự như shortcut trong windows. Vì là shortcut nên khi symbolic links bị xóa sẽ không ảnh hưởng đến nội của file hay thư mục, ngược lại nếu target bị xóa hay đổi tên symblic link sẽ không cập nhật, không hoạt động như link

Ví dụ:
Tạo symbolic link có tên softlink.txt trỏ về file_name.txt, và softlink_folder.txt trỏ về folder_name
khanhvc@ubutu:~/projects$ ln -s file_name.txt softlink.txt
khanhvc@ubutu:~/projects$ ln -s folder_name softlink_folder.txt
khanhvc@ubutu:~/projects$ 

 

khanhvc@ubutu:~/projects$ ls -i
2621869 file_name.txt  2625309 softlink_folder.txt
2755955 folder_name    2621566 softlink.txt
khanhvc@ubutu:~/projects$ 

Các số/inode của symbolic link và target là khác nhau

khanhvc@ubutu:~/projects$ ll -i
total 16
2621505 drwxrwxr-x  3 khanhvc khanhvc 4096 Thg 9  23 14:42 ./
2621442 drwxr-xr-x 27 khanhvc khanhvc 4096 Thg 9  23 14:05 ../
2621869 -rw-rw-r--  1 khanhvc khanhvc   35 Thg 9  23 14:24 file_name.txt
2755955 drwxrwxr-x  2 khanhvc khanhvc 4096 Thg 9  23 14:05 folder_name/
2625309 lrwxrwxrwx  1 khanhvc khanhvc   11 Thg 9  23 14:42 softlink_folder.txt -> folder_name/
2621566 lrwxrwxrwx  1 khanhvc khanhvc   13 Thg 9  23 14:42 softlink.txt -> file_name.txt
khanhvc@ubutu:~/projects$

Thuộc tính của symbolic link là  l

Xong!

Basic File Editing - Vim In Linux/Ubuntu/CentOS

Nội dung

1. Cài đặt Vim
2. Vim modes
3. Saving Changes
4. Moving File
5. Cut, Copy & Paste
6. Searching
7. Replace
8. Specials
9. Others

Commands

1. Cài đặt Vim

Ubuntu:

sudo apt install wim


CentOS:

sudo yum install vim


2. Vim modes

  • Command Mode
  • Insert Mode
  • Visual Mode


 

3. Saving Changes

Commands Diễn Giải
:e ten_file.txt Mở file có tên ten_file.txt từ editor
:sav filename.txt Lưu và đặt tên cho file là filename.txt
:x Lưu và thoát khởi vim
:wq Lưu và thoát khởi vim
:wq! Lưu và thoát khởi vim, ghi đè
:w Lưu, nhưng không thoát khỏi vim
:w! Lưu và thoát khởi vim, ghi đè
:q Thoát vim và không lưu
:q! Thoát vim và không lưu (overrides protection)
ZZ Lưu và thoát khởi vim
. Lặp lại thao tác gần nhất ở Normal Mode
10. Lặp lại 10 lần thao tác gần nhất ở Normal Mode


4. Moving File

Commands Diễn Giải
h hoặc mũi tên trái Duy chuyển sang trái 1 ký tự
l hoặc mũi tên phải Duy chuyển sang phải 1 ký tự
j hoặc mũi tên xuống Duy chuyển con trỏ xuống dưới 1 dòng
k hoặc mũi tên lên Duy chuyển con trỏ lên trên 1 dòng
e Duy chuyển con trỏ đến cuối từ
b Duy chuyển con trỏ đến đầu từ
w Duy chuyển con trỏ đến từ đầu tiên của chữ kế tiếp
gg Duy chuyển con trỏ về đầu file
G Duy chuyển con trỏ về cuối file
5G hoặc :5 Duy chuyển con trỏ đến dòng thứ 5
CTR + Y Cuộn lên 1 dòng
CTR + E Cuộn xuống 1 dòng
CTR + U Cuộn lên nữa màn hình
CTR + D Cuộn xuống nữa màn hình
CTR + B Cuộn lên 1 màn hình
CTR + F Cuộn xuống 1 màn hình


5. Cut, Copy & Paste

Commands Diễn Giải
y Copy phần text đã chọn vào clipboard
p Paste
dd Cut dòng hiện tại
yw Copy word
yy Copy dòng hiện tại
y$ Copy đến cuối dòng
D Copy tới cuối file


6. Searching

Commands Diễn Giải
/vidu Tìm kiếm "vidu" từ trên xuống dưới
?vidu Tìm kiếm "vidu" từ trên dưới lênh
/\cvidu Tìm "vidu" cả chữ hoa lẫn chữ thường (từ trên xuống)
/jo[ha]n Tìm "john" và "joan"
/^the Tìm từ bắt đầu bằng the (từ trên xuống) ví dụ: theatre or then
/the$ Tìm từ kết thúc bằng the ví dụ: breathe



7. Replace

Commands Diễn Giải
:%s/hoc/HocHanh/g nếu tìm thấy chữ "hoc" thì thay thế bằng "HocHanh" trong tất cả các dòng.
:%s/hoc/HocHanh/gc nếu tìm thấy chữ "hoc" thì thay thế bằng "HocHanh" trong tất cả các dòng, nhưng confirm trước khi replace.
:s/hoc/HocHanh/g nếu tìm thấy chữ "hoc" thì thay thế bằng "HocHanh" ở dòng hiện tại.
:4,10s/123/Mot Hai Ba/gc tìm từ dòng 4 -> 10 nếu có nội dung "123" thì thay bằng "Mot Hai Ba", confirm trước khi thay thế.
:5,$s/hoc/hocLinux/g Replace toàn bộ chữ "hoc" thành "hocLinux" từ dòng 5 đến cuối file
:%s/^/hello/g Thêm vào đầu của mỗi dòng chữ "hello"
:%s/$/Seeyouagain/g Thêm vào cuối của mỗi dòng chữ "Seeyouagain"


8. Specials

Commands Diễn Giải
:!ip a hiển thị kết quả của dòng lệnh ip a, nhưng không thoát editor
:r!ip a đưa kết quả của lệnh ip a vào editor
:r file.txt lấy nội dung của file đưa vào editor


9. Others

Commands Diễn Giải
:set number đánh số dòng cho file đang mở
:start,end dòng bắt đầu, dòng kết thức


Xong!

Regular Expression In Linux/Ubuntu/CentOS

Nội dung:

  • Tạo Regular Expression (RegEx) đơn giản
  • Sự khác nhau giữa RegEx căn bản và RegEx extended (Egrep)


Commands

1. Grep - Global RegEx: In ra dòng nếu tìm thấy mẫu (patterns)

Cú Pháp Ví Dụ Giải Thích
grep "chuoi can tim" ten_file grep "vi du" file.txt Tìm chuỗi "vi du" trong file.txt, nếu có trả về dòng có chứa nội dung chữ "vi du"
grep "chuoi" file_pattern grep "vi du" fil*.txt Tìm chuỗi "vi du" trong các file bắt đầu bằng fil*.txt, nếu có trả về dòng có chứa nội dung chữ "vi du"
grep -i "vi du" file.txt -i: không phân biệt chữa hoa chữ thường
grep -l -r -w "vi du" * đưa ra danh sách các file nếu tìm thấy chuỗi "vi du" file đó.(w: word-regex; r: đệ quy; l: tên file nếu tìm thấy)
grep -w "no" file_name.txt - Tìm kiếm chính xác, chỉ trả về kết của các dòng có chứa chữ "no".
- Nếu chuỗi có chữ "not" hoặc "nothing" thì với cách tìm kiếm này "not", "nothing" kết quả sẽ KHÔNG trả về ouput
grep -n -w "Error" file.txt hiển thị số thứ tự của dòng đó nếu tìm thấy chuỗi
grep [0-9] file.txt trả về kết quả dòng đó nếu dòng đó có chứa sổ [0-9]

2. Egrep - Extended grep:

Với grep dùng tham số -E, tuy nhiên để cải tiến về tốc độ cũng như giảm không ban bộ nhớ chúng ta dùng egrep.

grep -E "[a-z]+" file.txt

tương đương
egrep "[a-z]+" file.txt


Xong!
/*header slide*/