Tổng quan về Hệ điều hành Linux và Dòng lệnh Bash

Quản lý người dùng và quyền truy cập

Hệ thống Linux phân biệt rõ ràng giữa người dùng thông thường và siêu quản trị viên (root). Tài khoản root có toàn quyền kiểm soát hệ thống, cho phép thực hiện mọi thao tác bao gồm thay đổi cấu hình lõi và xóa dữ liệu quan trọng. Do mức độ rủi ro cao, các kỹ sư hệ thống thường hạn chế sử dụng root trực tiếp và ưu tiên sử dụng tài khoản thông thường có quyền hạn chế để bảo vệ hệ thống.

Các loại thiết bị đầu cuối (Terminals)

Linux hỗ trợ nhiều loại thiết bị đầu cuối để tương tác với hệ thống:

  • Thiết bị đầu cuối ảo: Truy cập thông qua tổ hợp phím Ctrl + Alt + F[1-6], tương ứng với các đường dẫn /dev/tty#.
  • Thiết bị đầu cuối đồ họa: Mặc định thường ở /dev/tty7.
  • Thiết bị đầu cuối giả (Pseudo-terminal): Sử dụng khi kết nối qua SSH, đường dẫn dạng /devpts/#.

Để kiểm tra thiết bị đầu cuối hiện tại, ta sử dụng lệnh tty. Để xem địa chỉ IP gán cho máy chủ, lệnh ip addr (hoặc ip a) được sử dụng thay thế cho lệnh ifconfig cũ.

$ ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ec:6b:40 brd ff:ff:ff:ff:ff:ff
    inet 192.168.234.129/24 brd 192.168.234.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever

Giao diện dòng lệnh và Bash Shell

Shell đóng vai trò là lớp giao tiếp giữa người dùng và nhân hệ điều hành (kernel). Trong số các loại shell như sh, zsh, csh, thì Bash (Bourne Again Shell) là mặc định trên hầu hết các bản phân phối Linux hiện đại như CentOS.

Để xác định shell đang sử dụng:

$ echo $SHELL
/bin/bash

Để liệt kê các shell đã cài đặt trên hệ thống:

$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/zsh

Tối ưu hóa tốc độ kết nối SSH

Đôi khi việc đăng nhập SSH bị chậm do cơ chế phân giải DNS. Để tắt tính năng này, ta có thể chỉnh sửa file cấu hình sshd:

sudo echo "UseDNS no" >> /etc/ssh/sshd_config
sudo systemctl restart sshd

Tùy biến dòng nhắc lệnh (Prompt)

Dòng nhắc lệnh mặc định của root là # và của người dùng thường là $. Biến môi trường PS1 điều khiển định dạng hiển thị này. Các ký tự đặc biệt phổ biến bao gồm:

  • \u: Tên người dùng hiện tại.
  • \h: Tên máy chủ (hostname).
  • \W: Tên thư mục làm việc hiện tại.

Ví dụ thay đổi màu sắc dòng nhắc lệnh vĩnh viễn:

echo 'export PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\] "' >> ~/.bashrc
source ~/.bashrc

Thực thi lệnh và tìm kiếm trợ giúp

Các lệnh trong Linux được chia làm hai loại: Lệnh nội bộ (built-in) tích hợp sẵn trong shell và Lệnh ngoài (external) nằm dưới dạng file thực thi. Lệnh type giúp phân loại này:

$ type cd
cd is a shell builtin
$ type top
top is /usr/bin/top

Để tìm trợ giúp, ta sử dụng:

  • help ten_lenh: Dành cho lệnh nội bộ.
  • man ten_lenh: Sổ tay hướng dẫn sử dụng (Manual) cho cả lệnh nội bộ và ngoài.
  • ten_lenh --help: Thường có sẵn cho các lệnh ngoài.

Sử dụng Alias (Bí danh)

Alias giúp đặt tên tắt cho các câu lệnh phức tạp.

# Tạo alias tạm thời
alias c='clear'
alias ll='ls -la'

# Hủy alias
unalias c

Để lưu alias vĩnh viễn, cần thêm chúng vào file cấu hình ~/.bashrc (cho từng user) hoặc /etc/bashrc (cho toàn hệ thống). Để chạy lệnh gốc bỏ qua alias, ta sử dụng dấu gạch chéo ngược \lenh hoặc đường dẫn đầy đủ.

Cú pháp lệnh và các phím tắt trong Bash

Cú pháp chung: lenh [tu_chon] [doi_so].

Một số phím tắt hữu ích:

  • Ctrl + l: Xóa màn hình (tương đương clear).
  • Ctrl + c: Hủy lệnh đang chạy.
  • Ctrl + a: Nhảy con trỏ về đầu dòng.
  • Ctrl + e: Nhảy con trỏ về cuối dòng.
  • Ctrl + u: Xóa ký tự từ vị trí con trỏ về đầu dòng.
  • Ctrl + r: Tìm kiếm lịch sử lệnh.

Tính năng mở rộng lệnh và lịch sử

Lịch sử các lệnh đã thực thi được lưu trong file ~/.bash_history. Ta có thể thực hiện lại lệnh trước đó bằng cách dùng phím mũi tên lên hoặc toán tử !!.

Tính năng Tab completion (hoàn thiện tự động) giúp gõ lệnh nhanh hơn. Nếu nhấn Tab một lần và không có sự thay đổi, có nghĩa là có nhiều kết quả trùng khớp; nhấn Tab lần hai sẽ liệt kê chúng.

Ví dụ về Brace Expansion (mở rộng ngoặc nhọn) để tạo file hàng loạt:

$ touch report_{01..05}.txt
$ ls
report_01.txt  report_02.txt  report_03.txt  report_04.txt  report_05.txt

Xử lý chuỗi và trích dẫn

Ký tự nháy đơn ' bảo toàn nguyên văn chuỗi, trong khi nháy kép " cho phép biên dịch các biến và lệnh con.

$ user_name="admin"
$ echo "Hello $user_name"
Hello admin
$ echo 'Hello $user_name'
Hello $user_name

# Thực thi lệnh con trong nháy kép hoặc $
$ current_dir=$(pwd)
$ echo "Thu muc hien tai: $current_dir"

Các tiện ích hệ thống

Lệnh echo dùng để hiển thị văn bản. Tùy chọn -e cho phép hiển thị các ký tự đặc biệt như xuống dòng \n hoặc chuông \a.

Thông tin người dùng và thời gian

  • whoami: Xem user hiện tại.
  • w: Xem chi tiết các user đang đăng nhập và các process họ đang chạy.
  • date: Xem hoặc chỉnh sửa thời gian hệ thống.
# Định dạng ngày tháng cụ thể
$ date +"Ngay: %d/%m/%Nam - Gio: %H:%M:%S"
Ngay: 22/08/2019 - Gio: 16:30:05

# Xem lịch
$ cal -y  # Lịch cả năm

Quản lý năng lượng

Để tắt hoặc khởi động lại máy:

# Tắt máy ngay lập tức
$ poweroff

# Khởi động lại sau 1 phút
$ shutdown -r +1

# Hủy lệnh tắt máy đã lên lịch
$ shutdown -c

Thẻ: linux Bash shell system-administration CLI

Đăng vào ngày 19 tháng 7 lúc 21:35