הוספת חותמת זמן
חלק מהיחידה יסודות במסלול ה-Terminal של Coddy. שיעור 78 מתוך 82.
אתגר
קלניצור שם ייחודי לתיקיית הגיבוי על ידי הוספת חותמת זמן. כך, כל גיבוי ייצור תיקייה חדשה במקום לדרוס את הגיבוי הקודם.
שנו את backup.sh כך:
- השאירו את כל הקוד הקיים מהשיעור הקודם
- החליפו את
backup_dir="backup"בשם דינמי שכולל חותמת זמן - השתמשו בהחלפת פקודה עם הפקודה
dateכדי ליצור חותמת זמן בפורמטYYYYMMDD_HHMMSS - שם תיקיית הגיבוי צריך להיות:
backup_[timestamp]
הפקודה date עם מצייני פורמט יוצרת חותמות זמן:
date +%Y%m%d_%H%M%Sהשתמשו בהחלפת פקודה $(command) כדי ללכוד את הפלט הזה במשתנה:
timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"כתיבת סקריפט מרובה שורות באמצעות
echoאחד בכל שורה עובדת, אבל יש דרך קצרה יותר: *מסמך כאן* מעביר ישירות לקובץ את כל התוכן עד למילה הסוגרת.cat > script.sh << 'EOF' #!/bin/bash echo "hello" EOFהמרכאות סביב
'EOF'מונעות את הרחבת$variablesבזמן כתיבת הקובץ, וזה מה שרוצים כשהסקריפט עצמו משתמש בהם.
הריצו את הסקריפט כשהקלט הוא documents (echo "documents" | bash backup.sh). הפלט שלכם אמור להיראות כך:
Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfullyחותמת הזמן בפלט שלכם תהיה שונה בהתאם לתאריך ולשעה הנוכחיים.
רמז: הוסיפו
timestamp=$(date +%Y%m%d_%H%M%S)לפני הגדרתbackup_dir, ואז השתמשו ב-backup_dir="backup_$timestamp"כדי ליצור את שם התיקייה הדינמי.
נסו בעצמכם
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 backupכל השיעורים ביחידה יסודות
7תוכן הקובץ
ראש וזנבספירת מיליםפקודת המיוןפקודת הסינון לכפילויותיסודות grepgrep עם דגליםסיכום – בלש/ית טקסט13יסודות כתיבת סקריפטים ב-Shell
מהו סקריפט Shellיצירה והרצה של סקריפטמשתנים בסקריפטיםקלט משתמש בסקריפטיםמשפט ifלולאת forלולאת whileסיכום – נחשו את המספר2ניווט
הצגת ספריית העבודההצגת קבציםשינוי ספרייהנתיבים מוחלטים לעומת יחסייםספריית הבית וספריית השורשסיכום – מצאו את הדרך8ניתוב מחדש
פלט סטנדרטיכתיבה לקובץ תוך דריסת התוכןהוספה לקובץקלט סטנדרטישגיאה סטנדרטיתסיכום – בונה יומני רישום14פרויקט סקריפט לגיבוי
סקירת הפרויקטקבלת נתיב המקורתרגלו בעצמכם: Terminal אונליין