การใช้ลูป while true บน Bash/Zsh ใน Terminal ช่วยให้คุณรันคำสั่งซ้ำไปเรื่อย ๆ โดยอัตโนมัติ เหมาะสำหรับการเฝ้าดูโฟลเดอร์ (Watch Directory) เพื่อจัดการไฟล์ทันทีที่มีไฟล์ใหม่เข้ามา
โครงสร้างคำสั่งพื้นฐาน
รูปแบบคำสั่งบรรทัดเดียว (One-liner) ที่พิมพ์ใน Terminal
BASH / Shell
while true; do mv ~/Downloads/* ~/Archive/ 2>/dev/null; sleep 5; done
#!/bin/bash
SOURCE_DIR="$HOME/Downloads"
TARGET_DIR="$HOME/Archive"
# สร้างโฟลเดอร์ปลายทางหากยังไม่มี
mkdir -p "$TARGET_DIR"
while true; do
# ตรวจสอบว่ามีไฟล์อยู่ในโฟลเดอร์หรือไม่ก่อนย้าย
if compgen -G "$SOURCE_DIR/*" > /dev/null; then
mv "$SOURCE_DIR"/* "$TARGET_DIR"/
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ย้ายไฟล์เรียบร้อยแล้ว"
fi
# หน่วงเวลา 5 วินาทีก่อนวนรอบถัดไป
sleep 5
done