Thêm dấu thời gian
Thuộc phần Kiến thức cơ bản trong hành trình Terminal của Coddy. Bài học 78 trên 82.
Thử thách
DễHãy thêm dấu thời gian vào tên thư mục sao lưu để tên thư mục luôn duy nhất. Nhờ vậy, mỗi lần sao lưu sẽ tạo một thư mục mới thay vì ghi đè lên thư mục trước đó.
Sửa đổi backup.sh để:
- Giữ lại toàn bộ code hiện có từ bài học trước
- Thay
backup_dir="backup"cố định bằng một tên động có dấu thời gian - Dùng phép thay thế lệnh với lệnh
dateđể tạo dấu thời gian theo định dạngYYYYMMDD_HHMMSS - Đặt tên thư mục sao lưu theo dạng:
backup_[timestamp]
Lệnh date cùng các ký hiệu định dạng sẽ tạo dấu thời gian:
date +%Y%m%d_%H%M%SDùng phép thay thế lệnh $(command) để lưu đầu ra này vào một biến:
timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"Viết script nhiều dòng bằng một lệnh
echocho mỗi dòng vẫn hiệu quả, nhưng có cách ngắn hơn: here document gửi mọi nội dung cho đến từ kết thúc thẳng vào tệp.cat > script.sh << 'EOF' #!/bin/bash echo "hello" EOFDấu nháy quanh
'EOF'ngăn$variablesđược mở rộng khi ghi tệp. Đây là điều bạn cần khi chính script sử dụng chúng.
Chạy script với documents làm đầu vào (echo "documents" | bash backup.sh). Đầu ra sẽ trông như sau:
Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfullyDấu thời gian trong đầu ra sẽ khác nhau tùy theo ngày giờ hiện tại.
Gợi ý: Thêm
timestamp=$(date +%Y%m%d_%H%M%S)trước khi định nghĩabackup_dir, sau đó dùngbackup_dir="backup_$timestamp"để tạo tên thư mục động.
Tự làm thử
cat > backup.sh << 'EOF'
#!/bin/bash
read -p "Enter source directory: " source_dir
echo "Backing up: $source_dir"
backup_dir="backup"
mkdir -p "$backup_dir"
echo "Created backup folder: $backup_dir"
cp "$source_dir"/* "$backup_dir"
echo "Files copied successfully"
EOF
echo "documents" | bash backup.sh
ls backupTất cả bài học trong Kiến thức cơ bản
4Thư mục
Tạo thư mụcSao chép thư mụcDi chuyển và đổi tên thư mụcXóa thư mụcÔn tập: thao tác với thư mục2Điều hướng
In đường dẫn thư mục hiện tạiLiệt kê tệpChuyển thư mụcĐường dẫn tuyệt đối và tương đốiThư mục chính và thư mục gốcÔn tập: tìm đường8Chuyển hướng
Đầu ra chuẩnGhi đè vào tệpGhi thêm vào tệpĐầu vào chuẩnLỗi chuẩnÔn tập: Công cụ tạo nhật ký11Quyền truy cập
Tìm hiểu quyền truy cậpXem quyền truy cậpChmod bằng sốChmod bằng ký hiệuQuyền sở hữu tệpÔn tập: khóa chặt quyền14Dự án script sao lưu
Tổng quan dự ánLấy đường dẫn nguồn6Ký tự đại diện và mẫu
Ký tự đại diện dấu saoKý tự đại diện dấu hỏiKý tự đại diện trong ngoặc vuôngKết hợp ký tự đại diệnÔn tập: thao tác có chọn lọc9Đường ống
Đường ống là gìNối hai lệnh bằng đường ốngNối nhiều lệnh bằng đường ốngDùng đường ống với grepÔn tập: luồng xử lý dữ liệuTự luyện tập: Playground Terminal