Cách Tạo Thùng Rác trên Linux (Kèm File Bashscript chỉ cần chạy với 1 câu lệnh)

Anh em dùng Linux thì kiểu gì cũng đã dùng lệnh rm -rf vô tình xóa những file hay thư mục quan trọng, Linux thì mặc định lại không hề có thùng rác như ở Window nên dữ liệu đã bị xóa vĩnh viễn luôn, lúc ý thì lại chẳng “toát mồ hôi hột” 😀

28dc70b3-333e-4912-b942-8741fa48e7c1

Nhân đây mình sẽ hướng dẫn cài đặt và cấu hình một hệ thống thùng rác toàn diện trên Linux bằng công cụ trash-cli, tích hợp với lệnh rm quen thuộc, đầu tiên thì mình hướng dẫn từng bước để anh em hiểu và sau đó cuối bài mình có bonus một file bashscript hoàn chỉnh nên khi nào anh em mang sang server mới thì chỉ cần chạy một câu lệnh là xong, hoặc kết hợp với IaC thì làm phát tất cả hạ tầng nhẹ tênh để đảm bảo an toàn dữ liệu.

Tại Sao Cần Có Thùng Rác Trên Linux?

Lệnh rm trên Linux nổi tiếng về tính mạnh mẽ và hiệu quả, nhưng cũng đi kèm với rủi ro cao. Một khi đã xóa bằng rm, đặc biệt là với tùy chọn -f (force) và -r (recursive), dữ liệu của anh em sẽ biến mất vĩnh viễn, không thể khôi phục từ thùng rác. Điều này đặc biệt nguy hiểm trên môi trường server, nơi một lỗi nhỏ có thể gây ra hậu quả lớn (Cực kỳ lưu ý nhé anh em, nhất là tác động trên các hạ tầng quan trọng phải luôn đảm bảo nhỏ nhất cũng cần có phương pháp backup).

Việc thiết lập một “thùng rác” tùy chỉnh sẽ giúp:

  • Ngăn chặn xóa nhầm: Các tệp được “xóa” sẽ được chuyển vào một thư mục riêng thay vì biến mất hoàn toàn.
  • Dễ dàng khôi phục: Nếu chúng ta thay đổi ý định, việc khôi phục tệp từ thùng rác trở nên đơn giản.
  • Quản lý hiệu quả: Dễ dàng xem các tệp đã xóa và dọn dẹp thùng rác khi cần.

Giải Pháp: trash-cli Kết Hợp Alias

Chúng ta sẽ sử dụng trash-cli, một công cụ dòng lệnh được thiết kế chuyên biệt để quản lý thùng rác trên Linux. trash-cli thông minh hơn việc chỉ di chuyển tệp đơn thuần, nó quản lý thùng rác riêng cho từng phân vùng, xử lý tệp trùng tên và cung cấp các lệnh khôi phục tiện lợi.

Tuy nhiên, trash-cli là công cụ nên nó dùng lệnh riêng mà dùng lệnh riêng thì đâu có ý nghĩa nữa rm -rf vẫn mất như thường nên để làm cho trash-cli hoạt động như lệnh rm quen thuộc, chúng ta sẽ tạo một alias (bí danh). Khi anh em gõ rm, thực chất hệ thống sẽ chạy lệnh trash của trash-cli.

Hướng Dẫn Cài Đặt Thùng Rác trên Linux

Anh em có thể tự mình cài đặt hệ thống thùng rác này bằng các bước sau:

Bước 1: Cài Đặt trash-cli

Đầu tiên, cần cài đặt gói trash-cli trên hệ thống của mình. Lệnh cài đặt sẽ khác nhau tùy thuộc vào bản phân phối Linux đang sử dụng:

  • Trên Ubuntu / Debian:
    sudo apt update
    sudo apt install trash-cli
  • Trên Fedora / CentOS / RHEL:
    sudo dnf install trash-cli
  • Trên Arch Linux:
    sudo pacman -S trash-cli
  • Nếu không tìm thấy trong kho gói tin (ít khi xảy ra): Anh em có thể cài đặt bằng pip (cần cài đặt Python và pip trước):
    pip install trash-cli

Bước 2: Cấu Hình Alias cho Lệnh rm

Đây là bước quan trọng để lệnh rm hoạt động như trash. Anh em sẽ thêm một alias vào tệp cấu hình shell cá nhân của mình. Thông thường là ~/.bashrc cho Bash hoặc ~/.zshrc cho Zsh.

  1. Mở tệp cấu hình shell bằng một trình soạn thảo văn bản (ví dụ: vi):
    vi ~/.bashrc  # Hoặc vi ~/.zshrc nếu dùng Zsh
  2. Thêm các dòng sau vào cuối tệp:
    # --- Cấu hình Thùng Rác ---
    # Sử dụng trash-cli thay vì rm để có thùng rác an toàn
    alias rm='trash'
    alias lstrash='trash-list'         # Liệt kê các tệp trong thùng rác
    alias restoretrash='trash-restore' # Khôi phục tệp từ thùng rác
    alias emptytrash='trash-empty'     # Xóa vĩnh viễn tất cả tệp trong thùng rác
    # Để xóa vĩnh viễn không qua thùng rác: /bin/rm -rf hoặc command rm -rf
    # --- Kết thúc Cấu hình Thùng Rác ---
  3. Lưu tệp và thoát trình soạn thảo (với vi, ở Command Mode nhấn :x).

Bước 3: Tải Lại Cấu Hình Shell

Để các alias vừa thêm có hiệu lực, chúng ta cần tải lại cấu hình shell của mình.

  • Cách 1: Đóng và mở lại cửa sổ terminal. Đây là cách đơn giản và an toàn nhất.
  • Cách 2: Chạy lệnh source thủ công:
    source ~/.bashrc  # Hoặc source ~/.zshrc nếu dùng Zsh

Sử Dụng Hệ Thống Thùng Rác trên Linux

Sau khi hoàn tất các bước trên, anh em đã sẵn sàng trải nghiệm hệ thống thùng trên Linux:

  • Để “xóa” tệp/thư mục (chuyển vào thùng rác): Chỉ cần gõ lệnh rm như bình thường

    rm ten_file.txt
    rm -r ten_thu_muc/
    # Hoặc với đường dẫn tuyệt đối, ví dụ:
    rm /data/du_lieu_quan_trong.db

    trash-cli sẽ tự động xử lý và di chuyển tệp/thư mục vào thùng rác tương ứng.

  • Để liệt kê các tệp trong thùng rác:

    lstrash
  • Để khôi phục một tệp từ thùng rác:

    restoretrash

    Lệnh này sẽ hiển thị một danh sách các tệp đã xóa với các số tương ứng. Anh em chỉ cần nhập số của tệp muốn khôi phục.

  • Để xóa vĩnh viễn tất cả tệp trong thùng rác:

    emptytrash

    Anh em cũng có thể chỉ định số ngày để xóa các tệp đã ở trong thùng rác quá lâu:

    emptytrash 7  # Xóa các tệp đã ở trong thùng rác hơn 7 ngày.
  • Để xóa VĨNH VIỄN mà không thông qua thùng rác (hãy CỰC KỲ cẩn thận!): Trong những trường hợp anh em thực sự muốn xóa vĩnh viễn và bỏ qua thùng rác, có thể gọi trực tiếp lệnh rm gốc của hệ thống:

    /bin/rm -rf /duong/dan/den/file_can_xoa_vinh_vien
    # Hoặc sử dụng từ khóa 'command' để bỏ qua alias:
    command rm -rf /duong/dan/den/file_can_xoa_vinh_vien

Bonus: Bashscript Tạo Thùng Rác trên Linux tự động

Nếu anh em quản lý nhiều server hoặc có nhiều người dùng cần thiết lập thùng rác, việc thực hiện thủ công có thể tốn thời gian. Dưới đây là một script Bash chuyên nghiệp giúp tự động hóa toàn bộ quá trình: cài đặt trash-cli và cấu hình alias cho người dùng hiện tại, hoặc thậm chí cho toàn bộ hệ thống (với một chút điều chỉnh).

Anh em có thể sao chép nội dung này và lưu vào một tệp (ví dụ: install_trash_system.sh).

#!/bin/bash

# --- Cấu hình ---
# Tên file cấu hình Bash (thường là .bashrc)
BASH_CONFIG_FILE="$HOME/.bashrc"
# Tên file cấu hình Zsh (nếu dùng Zsh, thường là .zshrc)
ZSH_CONFIG_FILE="$HOME/.zshrc"

# Các alias sẽ được thêm vào file cấu hình shell
ALIASES_TO_ADD="
# --- Cấu hình Thùng Rác (Tự động thêm bởi script) ---
# Sử dụng trash-cli thay vì rm để có thùng rác an toàn
alias rm='trash'
alias lstrash='trash-list'         # Liệt kê các tệp trong thùng rác
alias restoretrash='trash-restore' # Khôi phục tệp từ thùng rác
alias emptytrash='trash-empty'     # Xóa vĩnh viễn tất cả tệp trong thùng rác
# Để xóa vĩnh viễn không qua thùng rác: /bin/rm -rf hoặc command rm -rf
# --- Kết thúc Cấu hình Thùng Rác ---
"

# --- Chức năng chính của Script ---

echo "========================================"
echo "   Cài Đặt Hệ Thống Thùng Rác với trash-cli"
echo "========================================"
echo "Script này sẽ cài đặt trash-cli và cấu hình alias cho lệnh 'rm'."
echo "Việc này sẽ giúp tránh xóa vĩnh viễn dữ liệu một cách vô ý."
echo ""

# 1. Xác định hệ điều hành và trình quản lý gói
echo "Đang xác định hệ điều hành và trình quản lý gói..."
if command -v apt &> /dev/null; then
    PKG_MANAGER="apt"
    echo "Phát hiện Ubuntu/Debian (apt)."
elif command -v dnf &> /dev/null; then
    PKG_MANAGER="dnf"
    echo "Phát hiện Fedora/CentOS/RHEL (dnf)."
elif command -v pacman &> /dev/null; then
    PKG_MANAGER="pacman"
    echo "Phát hiện Arch Linux (pacman)."
else
    echo "Lỗi: Không tìm thấy trình quản lý gói được hỗ trợ (apt, dnf, pacman)."
    echo "Vui lòng cài đặt trash-cli thủ công hoặc điều chỉnh script."
    exit 1
fi
echo ""

# 2. Cài đặt trash-cli
echo "Đang cập nhật danh sách gói và cài đặt trash-cli..."
case "$PKG_MANAGER" in
    apt)
        sudo apt update -y
        sudo apt install trash-cli -y
        ;;
    dnf)
        sudo dnf check-update
        sudo dnf install trash-cli -y
        ;;
    pacman)
        sudo pacman -Sy --noconfirm trash-cli
        ;;
esac

if [ $? -eq 0 ]; then
    echo "trash-cli đã được cài đặt thành công."
else
    echo "Lỗi: Không thể cài đặt trash-cli. Vui lòng kiểm tra lại."
    exit 1
fi
echo ""

# 3. Cấu hình alias trong các tệp cấu hình shell
echo "Đang cấu hình alias cho các shell..."

# Hàm để thêm alias vào file cấu hình nếu chưa tồn tại
add_aliases_to_config() {
    local config_file="$1"
    local shell_name="$2"

    if [ -f "$config_file" ]; then
        if ! grep -q "alias rm='trash'" "$config_file"; then
            echo "$ALIASES_TO_ADD" >> "$config_file"
            echo "Đã thêm alias vào $config_file ($shell_name)."
        else
            echo "Alias cho 'rm' đã tồn tại trong $config_file ($shell_name). Đã bỏ qua việc thêm."
        fi
    else
        echo "Không tìm thấy $config_file ($shell_name). Bỏ qua việc cấu hình cho shell này."
    fi
}

add_aliases_to_config "$BASH_CONFIG_FILE" "Bash"
add_aliases_to_config "$ZSH_CONFIG_FILE" "Zsh" # Zsh thường dùng ~/.zshrc

echo ""

# 4. Hướng dẫn người dùng các bước tiếp theo
echo "========================================"
echo "   Cài Đặt Đã Hoàn Tất!"
echo "========================================"
echo "Để các thay đổi có hiệu lực, hãy tải lại cấu hình shell."
echo "Vui lòng chạy một trong các lệnh sau (tùy thuộc vào shell đang sử dụng):"
echo ""
echo "   source $BASH_CONFIG_FILE"
echo "   hoặc"
echo "   source $ZSH_CONFIG_FILE"
echo ""
echo "Hoặc đơn giản hơn, hãy đóng và mở lại cửa sổ terminal."
echo ""
echo "Sau khi tải lại, có thể sử dụng các lệnh sau:"
echo "  - Để 'xóa' tệp/thư mục (chuyển vào thùng rác):    rm <tên_tệp_hoặc_thư_mục>"
echo "  - Để liệt kê các tệp trong thùng rác:          lstrash"
echo "  - Để khôi phục một tệp từ thùng rác:           restoretrash"
echo "  - Để xóa vĩnh viễn tất cả tệp trong thùng rác:  emptytrash"
echo ""
echo "Để xóa VĨNH VIỄN mà không qua thùng rác (hãy cẩn thận!):"
echo "  - Sử dụng đường dẫn tuyệt đối: /bin/rm -rf <đường_dẫn>"
echo "  - Hoặc sử dụng lệnh 'command': command rm -rf <đường_dẫn>"
echo ""
echo "Cấu hình hoàn tất Thùng Rác trên Linux - Hệ thống đã an toàn hơn!"
echo "========================================"

exit 0

Cách Sử Dụng Bashscript:

  1. Lưu script: Sao chép nội dung trên và dán vào một tệp trên server, ví dụ: install_trash_system.sh.
  2. Cấp quyền thực thi: chmod +x install_trash_system.sh
  3. Chạy script:
    ./install_trash_system.sh

    (Script sẽ tự động yêu cầu quyền sudo khi cần thiết để cài đặt trash-cli).

  4. Tải lại cấu hình shell: Sau khi script hoàn tất, hãy làm theo hướng dẫn trên màn hình để source tệp cấu hình shell hoặc đóng/mở lại terminal.

Áp Dụng Cho Toàn Bộ Người Dùng (Nâng Cao)

Script trên chỉ cấu hình cho người dùng hiện tại. Nếu anh muốn tất cả người dùng trên hệ thống đều có tính năng thùng rác này, anh em cần sửa đổi các tệp cấu hình shell chung của hệ thống.

Cảnh báo: Việc sửa đổi các tệp cấu hình hệ thống cần được thực hiện cẩn thận và với quyền sudo.

Anh em có thể chỉnh sửa biến BASH_CONFIG_FILEZSH_CONFIG_FILE trong script để trỏ đến các tệp cấu hình toàn hệ thống (ví dụ: /etc/bash.bashrc hoặc /etc/zsh/zshrc), và đảm bảo rằng script được chạy với sudo để có quyền ghi vào các vị trí này. Sau đó, người dùng hiện có sẽ cần đăng xuất/đăng nhập lại để các thay đổi có hiệu lực.

Mình để luôn bashscript áp dụng cho tất cả người dùng ở đây nhé anh em tham khảo:

#!/bin/bash

# --- Cấu hình ---
# Tên file cấu hình Bash chung
GLOBAL_BASH_CONFIG="/etc/bash.bashrc"
# Tên file cấu hình Zsh chung
GLOBAL_ZSH_CONFIG="/etc/zsh/zshrc" # Hoặc /etc/zshrc tùy bản phân phối

# Các alias sẽ được thêm vào file cấu hình shell
ALIASES_TO_ADD_GLOBAL="
# --- Cấu hình Thùng Rác (Tự động thêm bởi script) ---
# Sử dụng trash-cli thay vì rm để có thùng rác an toàn
alias rm='trash'
alias lstrash='trash-list'         # Liệt kê các tệp trong thùng rác
alias restoretrash='trash-restore' # Khôi phục tệp từ thùng rác
alias emptytrash='trash-empty'     # Xóa vĩnh viễn tất cả tệp trong thùng rác
# Để xóa vĩnh viễn không qua thùng rác: /bin/rm -rf hoặc command rm -rf
# --- Kết thúc Cấu hình Thùng Rác ---
"

echo "========================================"
echo "   Cấu Hình Hệ Thống Thùng Rác Chung Hệ Thống"
echo "========================================"
echo "Script này sẽ cấu hình alias cho 'rm' trong các tệp cấu hình shell chung."
echo "Việc này sẽ áp dụng cho hầu hết người dùng mới và hiện có khi họ đăng nhập."
echo ""

# 1. Xác định hệ điều hành và trình quản lý gói (Giữ nguyên phần này từ script trước)
# ... (Phần này giống hệt script trước, đảm bảo trash-cli đã được cài đặt)
echo "Đang xác định hệ điều hành và trình quản lý gói..."
if command -v apt &> /dev/null; then
    PKG_MANAGER="apt"
    echo "Phát hiện Ubuntu/Debian (apt)."
elif command -v dnf &> /dev/null; then
    PKG_MANAGER="dnf"
    echo "Phát hiện Fedora/CentOS/RHEL (dnf)."
elif command -v pacman &> /dev/null; then
    PKG_MANAGER="pacman"
    echo "Phát hiện Arch Linux (pacman)."
else
    echo "Lỗi: Không tìm thấy trình quản lý gói được hỗ trợ (apt, dnf, pacman)."
    echo "Vui lòng cài đặt trash-cli thủ công hoặc điều chỉnh script."
    exit 1
fi
echo ""

# 2. Cài đặt trash-cli (Giữ nguyên phần này từ script trước)
echo "Đang cập nhật danh sách gói và cài đặt trash-cli..."
case "$PKG_MANAGER" in
    apt)
        sudo apt update -y
        sudo apt install trash-cli -y
        ;;
    dnf)
        sudo dnf check-update
        sudo dnf install trash-cli -y
        ;;
    pacman)
        sudo pacman -Sy --noconfirm trash-cli
        ;;
esac

if [ $? -eq 0 ]; then
    echo "trash-cli đã được cài đặt thành công."
else
    echo "Lỗi: Không thể cài đặt trash-cli. Vui lòng kiểm tra lại."
    exit 1
fi
echo ""

# 3. Cấu hình alias trong các tệp cấu hình shell chung
echo "Đang cấu hình alias trong các tệp cấu hình shell chung (cần quyền root)..."

# Hàm để thêm alias vào file cấu hình chung nếu chưa tồn tại
add_aliases_to_global_config() {
    local config_file="$1"
    local shell_name="$2"

    if [ -f "$config_file" ]; then
        if ! sudo grep -q "alias rm='trash'" "$config_file"; then
            echo "Đang thêm alias vào $config_file ($shell_name)..."
            echo "$ALIASES_TO_ADD_GLOBAL" | sudo tee -a "$config_file" > /dev/null
            echo "Đã thêm alias vào $config_file ($shell_name)."
        else
            echo "Alias cho 'rm' đã tồn tại trong $config_file ($shell_name). Đã bỏ qua việc thêm."
        fi
    else
        echo "Không tìm thấy $config_file ($shell_name). Bỏ qua việc cấu hình cho shell này."
        echo "Hãy tạo tệp này hoặc kiểm tra đường dẫn cấu hình Zsh cho bản phân phối hiện tại."
    fi
}

add_aliases_to_global_config "$GLOBAL_BASH_CONFIG" "Bash (Global)"
add_aliases_to_global_config "$GLOBAL_ZSH_CONFIG" "Zsh (Global)"

echo ""

# 4. Hướng dẫn người dùng
echo "========================================"
echo "   Cài Đặt Chung Hệ Thống Đã Hoàn Tất!"
echo "========================================"
echo "Các alias đã được thêm vào cấu hình shell chung của hệ thống."
echo "Hầu hết người dùng sẽ thấy các alias này hoạt động khi họ đăng nhập lại."
echo ""
echo "Để các thay đổi có hiệu lực cho các phiên terminal hiện có:"
echo "  - Mỗi người dùng cần Đăng xuất và Đăng nhập lại."
echo "  - HOẶC, mỗi người dùng có thể chạy thủ công một trong các lệnh sau:"
echo "    source $HOME/.bashrc  (nếu Bash)"
echo "    source $HOME/.zshrc   (nếu Zsh)"
echo "    (Lưu ý: Nếu .bashrc/.zshrc của họ không gọi các file /etc/..., họ có thể cần phải thêm lệnh source thủ công)"
echo ""
echo "Các lệnh sử dụng vẫn như trước:"
echo "  - 'rm' để chuyển vào thùng rác"
echo "  - 'lstrash', 'restoretrash', 'emptytrash' cho quản lý thùng rác"
echo "  - '/bin/rm -rf' hoặc 'command rm -rf' để xóa vĩnh viễn"
echo ""
echo "Cấu hình hoàn tất Thùng Rác trên Linux - Hệ thống đã an toàn hơn!"
echo "========================================"

exit 0

Kết bài thôi

Thế là cũng xong rồi nhỉ. Với hệ thống thùng rác chuyên nghiệp này, anh em có thể yên tâm hơn khi thao tác với dữ liệu trên Linux, tránh được những “tai nạn” đáng tiếc do xóa nhầm : D

Bài viết khác

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Có thể bạn quan tâm