Bỏ qua nội dung

Ngày 15 - Linux101

Xin chào, đã đến lúc Linux lên sóng rồi. Bây giờ sẽ là lúc mà chúng ta sẽ học các câu lệnh Linux một cách chỉnh chu nhất. Đây là ngày thứ 15 của hành trình, và mời mọi người đi cùng mình nào! 🚓

Dạo quanh làng “Command”

Làng này có rất nhiều “command” - nhưng để tiện di chuyển hơn, chúng ta sẽ chỉ đi qua một số “command” chính thôi.

Lệnh man

Lệnh xem hướng dẫn sử dụng. Cách dùng đơn giản như sau.

Checking user guide...
man <command>

man command

man page

Từ khóa sudo

sudo là một từ khóa đặc biệt - nó cấp cho người dùng quyền root tạm thời để thực hiện các yêu cầu khác nhau, khá giống Run as Administator - Chạy với quyền Quản trị viên trên Windows.

Doing things in admin mode...
sudo <command>

Trong trường hợp nếu cần vào thẳng root để thực hiện các công việc, sử dụng câu lệnh sau và nhập mật khẩu. Thoát khỏi quyền root bằng lệnh exit

Going into root mode...
sudo su

sudo

Exiting root...
exit

Xóa màn hình

Với Linux, người ta có câu: Sạch gàu như Clear… à nhầm, sạch command như clear. Windows thì dùng cls.

Clearing screen...
clear

sudo exit

Xử lý với thư mục và tập tin

Chùm câu lệnh xử lý bao gồm tạo thư mục, tạo tập tin, xóa thư mục, thay đổi thư mục, kiểm tra thư mục hiện thời và thao tác với các tập tin chứa trong thư mục.

Thư mục

Creating folder...
mkdir <name>
Deleting folder...
rmdir <name>
Changing working directory...
cd <name>
Checking working directory...
pwd
Checking files in folder...
ls

Tập tin

Creating files...
touch <filename>

Câu lệnh sau giúp chúng ta xác định vị trí của tập tin. Trong trường hợp không có kết quả, chạy đồng thời hai câu lệnh sudo apt install mlocatesudo updatedb trước khi chạy lại lệnh locate.

Checking file location...
locate <filename>

locate

Di chuyển tập tin sang vị trí khác, sử dụng câu lệnh sau. Câu lệnh này cũng có thể dùng để đổi tên tập tin.

Moving/renaming files...
mv <file> <new location>

move

rename

Deleting files...
rm <filename> # Remove file, xóa thường
rm -R <filename> # Remove recursively, xóa đệ quy, tức tìm trong các thư mục
rm -R -f <filename> # Remove forcefully, buộc xóa đệ quy

Nếu bạn muốn sao chép một tập tin sang nơi khác, sử dụng câu lệnh sau.

Copying files...
cp <filename> <new location>

Hãy thêm chút gia vị vào món ăn của mình và xem nó có gì nào…

Adding content and checking...
echo "Xin chào Việt Nam!" > <filename>
cat <filename> | grep "Xin chào"

echo

grep

Tìm lại bản đồ

Thất lạc trong làng và không biết mình đã đi đâu? Dùng các câu lệnh sau để tìm lại.

Checking history...
history # Checking history, xem lịch sử
history -c # Clearing history, xóa lịch sử
history | grep <command> # Checking specific command, câu lệnh cụ thể
history ![n] # Check nth command in history, câu lệnh thứ n trong lịch sử

Trên các hệ thống Linux, biến sau giúp quản trị được thời gian câu lệnh được thực thi, ta có thể ghi nó vào trong bash_profile để xuất ra màn hình.

Terminal window
HISTTIMEFORMAT="%d-%m-%Y %T "
echo 'export HISTTIMEFORMAT="%d-%m-%Y %T "' >> ~/.bash_profile

Ta cũng có thể tăng kích thước lịch sử.

Increasing size...
echo 'export HISTSIZE=100000' >> ~/.bash_profile
echo 'export HISTFILESIZE=10000000' >> ~/.bash_profile

history

Thao tác với người dùng

Các thao tác bao gồm thêm và điều chỉnh người dùng, nhóm cũng như đổi mật khẩu.

Đổi mật khẩu

Changing password
passwd # Đổi password không lộ thông tin trên lịch sử
passwd -p <password> # Đổi password lưu vết trên lịch sử

password

Thêm người dùng và nhóm

Terminal window
sudo useradd NewUser # Thêm người dùng NewUser
sudo groupadd DevOps # Thêm nhóm người dùng DevOps
sudo usermod NewUser -a -G DevOps # Thêm NewUser vào nhóm DevOps
usermod -a -G sudo NewUser # Thêm NewUser vào nhóm sudo, hiếm gặp

adduser moduser

Quyền hạn của người dùng

Đây là cách mà chúng ta hiểu về quyền hạn trên Linux.

  • 4 = Read (Đọc, R)
  • 2 = Write (Ghi, W)
  • 1 = Execute (Thực thi, X)

Lúc này, chúng ta sẽ ghi nhớ theo thứ tự quyền hạn được phân như sau: Người dùng - Nhóm người dùng - Người khác.

Đi vào nội dung, hãy xem tấm hình này sau khi chạy ls -la, tức xuất dưới dạng danh sách toàn bộ thông tin của tập tin đó.

ls

Ta thấy được thứ này: -rw-rw-r--. Phân giải ta có thông tin sau.

  1. Loại chỉ mục: Tập tin (-). Nếu là thư mục, phần này phải bắt đầu bằng chữ d.
  2. Quyền cho người dùng vagrant: rw- = 6 (4+2), quyền đọc ghi
  3. Quyền cho nhóm người dùng vagrant: rw- = 6 (4+2), quyền đọc ghi
  4. Quyền cho người khác: r = 4, quyền chỉ đọc.

Ta sẽ thay đổi quyền hạn sao cho hợp lý bằng cách dùng lệnh sau.

Changing permissions...
sudo chmod 750 <filename> # Quyền chuyển thành -rwxr-x---, Người dùng có toàn quyền, nhóm không có quyền ghi
sudo chmod 750 -R <name> # Đổi quyền cho toàn thư mục
sudo chmod uo+x,g-x <filename> # Tăng quyền thực thi cho người dùng và người khác, nhưng lại rút quyền thực thi cho nhóm

chmod

Ta cũng có thể thay đổi luôn chủ nhân của tập tin/thư mục.

Changing owner...
sudo chown <filename> # Đổi người dùng quản lý tập tin
sudo chgrp -R <name> # Đổi nhóm quản lý cho toàn thư mục

chown

Thao tác trên luồng dữ liệu

Chúng ta khởi động bằng câu lệnh awk này. Đây là câu lệnh chỉ lấy một phần thông tin từ câu lệnh khác.

Checking one column...
who | awk '{print $1}' # Lấy cột đầu tiên của kết quả lệnh who

awk

Trong trường hợp chúng ta muốn lấy kết quả câu lệnh thành đầu vào của câu lệnh khác, ta sử dụng xargs. Đây là cách chúng ta thao tác với nó.

Getting arguments...
cut -d: -f1 < /etc/passwd | sort | xargs
# cut -d: -f1 < /etc/passwd: Lấy toàn bộ thông tin tài khoản trên hệ thống
# sort: Lọc theo thứ tự
# xargs: Biến nó thành tham số của câu lệnh khác

xargs

Câu lệnh cuối cùng là cut - Câu lệnh giúp chúng ta cắt dữ liệu và chỉ lấy một phần dữ liệu trên mỗi dòng của tập tin. Ví dụ như phần dưới.

Getting just some data on each line...
cut -d " " -f 2 list.txt
# Từ vị trí ngăn cách (-d) là dấu cách, chỉ lấy thêm 2 bytes mỗi dòng

cut

Nếu bấm nhầm, nhấn Ctrl + C để ngừng lệnh.

Chúng ta kết thúc ngày 15 của hành trình tại đây.

Tài liệu tham khảo 📚

Mời mọi người chuyển sang trang này để theo dõi tất cả tài liệu liên quan trong giai đoạn 3, để giúp bản thân có được những tài liệu hữu ích về Linux trong làm việc với DevOps.

Hẹn gặp mọi người ở những ngày tiếp theo. 🚀