Pekerjaan yang paling layak diotomatiskan bukan yang paling membosankan. Melainkan yang paling sering Anda lakukan salah.
Mengubah nama tiga ratus berkas itu membosankan, tapi Anda hampir tidak pernah keliru. Menyalin folder proyek ke backup setiap Jumat itu tidak membosankan sama sekali — dan justru itu yang terlewat ketika Anda sedang sibuk.
Tulisan ini berisi lima skrip pendek yang benar-benar bisa dijalankan. Semuanya untuk macOS dan Linux, dan semuanya bisa Anda pahami dalam satu bacaan.
Satu hal yang menyelamatkan banyak orang dari kerugian: jalankan mode uji dulu.
Setiap skrip yang mengubah atau menghapus berkas sebaiknya punya sakelar yang hanya mencetak apa yang akan dilakukannya. Jalankan itu dulu, baca keluarannya, baru jalankan yang sesungguhnya. Kebiasaan ini terasa berlebihan sampai suatu hari ia menyelamatkan folder yang salah ketik.
Berguna untuk foto dari kamera yang namanya acak.
#!/bin/bash
# ganti-nama.sh — DRY_RUN=1 untuk mengecek dulu
prefix="${1:-foto}"
i=1
for f in *.jpg *.JPG; do
[ -e "$f" ] || continue
baru=$(printf "%s-%03d.jpg" "$prefix" "$i")
if [ "$DRY_RUN" = "1" ]; then
echo "akan: $f -> $baru"
else
mv -n -- "$f" "$baru"
fi
i=$((i+1))
done
Jalankan DRY_RUN=1 ./ganti-nama.sh liburan lebih dulu. Perhatikan mv -n — flag itu menolak menimpa berkas yang sudah ada, dan itu satu-satunya hal yang berdiri antara Anda dan kehilangan data.
#!/bin/bash
# backup.sh
sumber="$HOME/Proyek/"
tujuan="/Volumes/Backup/Proyek/"
[ -d "$tujuan" ] || { echo "Drive backup tidak terpasang."; exit 1; }
rsync -av --delete
--exclude 'node_modules'
--exclude '.DS_Store'
--exclude '*.tmp'
"$sumber" "$tujuan"
Kunci dari skrip ini ada di baris ketiga: ia berhenti kalau drive tujuan tidak terpasang. Tanpa pemeriksaan itu, rsync akan membuat folder kosong di titik pemasangan dan --delete akan bekerja pada tempat yang salah.
Tambahkan --dry-run saat pertama kali mencoba.
Butuh ImageMagick (brew install imagemagick).
#!/bin/bash
# perkecil.sh — hasil ditulis ke folder terpisah
mkdir -p keluaran
for f in *.jpg *.png; do
[ -e "$f" ] || continue
magick "$f" -resize '1600x1600>' -quality 82 "keluaran/${f%.*}.jpg"
echo "selesai: $f"
done
Tanda > di dalam -resize berarti “hanya perkecil, jangan pernah perbesar”. Hasilnya ditulis ke folder terpisah, jadi berkas asli Anda tidak pernah tersentuh.
#!/bin/bash
# bersihkan-unduhan.sh
hari="${1:-30}"
target="$HOME/Downloads"
echo "Berkas di $target yang lebih tua dari $hari hari:"
find "$target" -maxdepth 1 -type f -mtime +"$hari" -print
read -r -p "Pindahkan ke Trash? (y/N) " jawab
[ "$jawab" = "y" ] || exit 0
find "$target" -maxdepth 1 -type f -mtime +"$hari"
-exec mv -- {} "$HOME/.Trash/" ;
Perhatikan bahwa skrip ini memindahkan ke Trash, bukan menghapus. Dan ia menampilkan daftarnya dulu lalu meminta konfirmasi. Skrip pembersih yang langsung menghapus tanpa bertanya adalah cara cepat kehilangan sesuatu yang Anda butuhkan.
#!/bin/bash
# catat.sh "isi catatan"
berkas="$HOME/Catatan/$(date +%Y-%m).md"
mkdir -p "$(dirname "$berkas")"
if [ ! -s "$berkas" ]; then
echo "# Catatan $(date '+%B %Y')" > "$berkas"
fi
printf 'n- **%s** %sn' "$(date '+%d/%m %H:%M')" "$*" >> "$berkas"
echo "tercatat di $berkas"
Pasang alias di ~/.zshrc: alias c='~/skrip/catat.sh'. Setelah itu c "selesai migrasi database" cukup untuk membangun catatan bulanan tanpa membuka aplikasi apa pun.
Ini yang paling sederhana dari kelimanya, dan biasanya yang paling sering dipakai.
Di macOS, launchd adalah cara yang benar, tapi cron masih berfungsi dan jauh lebih mudah dibaca. Jalankan crontab -e:
# backup tiap Jumat pukul 17.00
0 17 * * 5 /Users/nama/skrip/backup.sh >> /tmp/backup.log 2>&1
Bagian >> /tmp/backup.log 2>&1 itu wajib. Tanpa mencatat keluaran, skrip terjadwal yang gagal akan gagal dalam diam — dan Anda baru tahu berbulan-bulan kemudian, saat membutuhkan backup yang ternyata tidak pernah dibuat.
Periksa log itu sesekali. Otomatisasi yang tidak pernah diperiksa bukan otomatisasi, melainkan asumsi.
Kalau pekerjaan itu Anda lakukan sekali sebulan dan hanya makan lima menit, menulis skripnya butuh waktu lebih lama daripada yang akan Anda hemat seumur hidup skrip itu.
Kalau langkahnya berubah setiap kali dijalankan, skrip akan lebih sering rusak daripada membantu.
Dan kalau kesalahannya mahal serta sulit dibatalkan — memindahkan uang, mengirim surel ke pelanggan, menghapus data produksi — biarkan ada manusia yang menekan tombol terakhir.
Semua skrip di atas ditulis untuk bash di macOS dan Linux. Uji di folder contoh sebelum menjalankannya pada berkas asli Anda.