Untuk mengosongkan folder output yang dapat digunakan kembali tanpa menghapus foldernya, buat pintasan Mac yang hanya menghapus isi di dalamnya. Panduan ini menggunakan folder tetap, file teks sementara, dan skrip shell yang memeriksa folder sebelum mengosongkannya.

Tugasnya adalah mengatur ulang satu folder di antara beberapa batch file yang dihasilkan. Contohnya mencakup file biasa, nama file yang berisi spasi, file tersembunyi, dan folder bertingkat. Skrip menghapus isi tersebut secara langsung; file tidak dipindahkan ke Tong Sampah. Manual rm yang diterbitkan Apple mendokumentasikan penghapusan rekursif dan pelaporan kesalahan. Manual rm dari Apple

Tentukan apa yang harus tetap ada setelah folder dikosongkan

Untuk alur kerja ini, hasil yang diharapkan adalah folder yang tetap ada dan kosong di jalur yang sama. Semua subfolder di dalamnya juga merupakan output, jadi subfolder tersebut dihapus bersama isinya. Jika direktori output Anda berisi templat atau struktur subfolder permanen, skrip khusus ini memerlukan aturan pemilihan yang berbeda sebelum Anda menggunakannya.

Target contoh adalah Shortcut Output Demo, tepat di dalam folder rumah Anda. Menetapkan target tetap membuat pintasan mudah diperiksa: perilakunya tidak bergantung pada jendela Finder yang terbuka atau file yang sedang dipilih.

Persyaratan Perilaku dalam panduan ini
Pertahankan folder output Hanya jalur isi di dalam folder yang diteruskan ke rm
Sertakan output tersembunyi Opsi Bash dotglob menyertakan nama yang diawali titik
Tangani folder yang sudah kosong Daftar isi kosong diterima
Tangani folder yang tidak ditemukan Berhenti dengan kesalahan; jangan buat ulang folder
Hapus output bertingkat Hapus setiap folder di dalamnya secara rekursif
Pertahankan kemampuan menggunakan Put Back di Finder Gunakan alternatif Finder di bawah

Finder menyediakan alternatif yang berguna saat Anda ingin item tetap berada di Tong Sampah. Buka folder output, pilih item sementara di dalamnya, lalu tekan Command-Delete. Jangan pilih folder yang menampung item tersebut. Apple menjelaskan bahwa item yang dipindahkan ke Tong Sampah akan tetap di sana sampai Tong Sampah dikosongkan dan dapat dipulihkan dengan File > Put Back. Menghapus file dan folder di Mac

Buat folder sementara untuk dijalankan pertama kali

Buka Terminal dan tempelkan seluruh blok penyiapan di bawah. Blok ini hanya membuat file teks sintetis. Perintah awal mkdir harus berhasil sebelum file apa pun ditulis, jadi jika sudah ada file atau folder bernama Shortcut Output Demo, penyiapan akan berhenti dan tidak menggunakan ulang isinya.

/bin/bash <<'BASH'
set -eu
target="$HOME/Shortcut Output Demo"

if ! /bin/mkdir "$target"; then
  printf 'Setup stopped: choose an unused demo folder name.\n' >&2
  exit 1
fi

/bin/mkdir "$target/Batch"
printf 'Synthetic output A\n' > "$target/alpha.txt"
printf 'Synthetic output B\n' > "$target/sample output.txt"
printf 'Synthetic marker\n' > "$target/.demo-marker"
printf 'Synthetic nested output\n' > "$target/Batch/nested.txt"
printf 'Created disposable examples in: %s\n' "$target"
BASH

Buka folder rumah Anda di Finder dan cari Shortcut Output Demo. Folder itu berisi tiga item yang terlihat: alpha.txt, sample output.txt, dan Batch. Item keempat, .demo-marker, sengaja disembunyikan. Di dalam Batch terdapat nested.txt. Item-item ini adalah contoh masukan pengujian, bukan file pengguna yang sudah ada.

Jika penyiapan berhenti karena nama tersebut sudah digunakan, biarkan item yang sudah ada itu. Pilih nama demo lain yang belum digunakan, lalu ubah penetapan target pada blok penyiapan dan skrip pengosongan agar sesuai. Jangan hapus pemeriksaan pembuatan awal hanya agar proses bisa melewati konflik nama.

Buat pintasan dan pertahankan jenis input serta outputnya

Di Pintasan, klik tombol tambah untuk membuat pintasan dan beri nama Clear Demo Output. Cari Run Shell Script dalam daftar tindakan, lalu tambahkan tindakan tersebut. Apple mendokumentasikan pembuatan pintasan dengan menambahkan tindakan serta pencarian tindakan berdasarkan nama. Membuat pintasan khusus di Mac, Menavigasi daftar tindakan di Pintasan pada Mac

Atur Shell tindakan ke /bin/bash, lalu ganti perintah contohnya dengan seluruh skrip pengosongan di bawah. Skrip ini menggunakan array Bash dan shopt, jadi pertahankan pilihan shell tersebut. Skrip membaca target dari penetapan di dalamnya; skrip tidak menggunakan input pintasan, input standar, atau argumen baris perintah.

Jika skrip dinonaktifkan, pilih Shortcuts > Settings, buka Advanced, lalu aktifkan Allow Running Scripts. Apple mendokumentasikan pengaturan ini untuk menjalankan skrip dari pintasan. Pengaturan Apple untuk menjalankan skrip

set -u
target="$HOME/Shortcut Output Demo"

if [[ ! -d "$target" || -L "$target" ]]; then
  printf 'Expected an existing ordinary folder: %s\n' "$target" >&2
  exit 1
fi

if [[ ! -r "$target" || ! -x "$target" ]]; then
  printf 'Cannot list the output folder.\n' >&2
  exit 1
fi

unset GLOBIGNORE
set +f
shopt -u failglob
shopt -s dotglob nullglob

items=( "$target"/* )
for item in "${items[@]}"; do
  if ! /bin/rm -R -- "$item"; then
    printf 'Clearing stopped; some items may remain.\n' >&2
    exit 1
  fi
done

remaining=( "$target"/* )
if (( ${#remaining[@]} != 0 )); then
  printf 'The folder still contains items.\n' >&2
  exit 1
fi

printf 'Folder is empty: %s\n' "$target"

Output tindakan yang berhasil berupa teks: baris yang diawali Folder is empty:. Output ini bukan objek Folder, daftar file yang dihapus, atau referensi ke direktori yang dapat digunakan kembali. Jika nanti Anda memperluas pintasan, berikan folder tujuan secara eksplisit kepada setiap tindakan yang memerlukan folder. Panel informasi tindakan Apple menunjukkan input yang diterima dan output yang dihasilkan; Control-klik ikon tindakan, lalu pilih Show Info untuk memeriksanya. Melihat informasi input dan output tindakan

Untuk menampilkan pesan penyelesaian, tambahkan Show Alert setelah skrip dan sisipkan variabel output skrip ke dalam pesannya. Apple mendokumentasikan cara meneruskan output tindakan sebelumnya ke Show Alert untuk diperiksa. Pesan tetap yang menyatakan folder kosong akan memberi informasi yang kurang berguna dibandingkan menampilkan hasil aktual dari skrip. Menggunakan tindakan Show Alert dalam pintasan di Mac

Pahami mengapa folder tetap ada

Penetapan items=( "$target"/* ) mengumpulkan jalur isi di dalam folder. Perulangan meneruskan setiap isi satu per satu ke rm; perulangan tidak pernah meneruskan \"$target\" itu sendiri. Karena itu, penghapusan rekursif berlaku pada subfolder output, sementara folder induk yang dapat digunakan kembali tetap ada.

Dua opsi Bash menangani masalah umum saat mengatur ulang folder. dotglob menyertakan nama file yang diawali titik, dan nullglob membuat pola yang tidak cocok menghasilkan nilai kosong. Ekspansi array dengan tanda kutip mempertahankan nama file yang berisi spasi sebagai argumen terpisah. Perilaku ini didokumentasikan dalam manual Bash yang didistribusikan Apple. Manual Bash: ekspansi nama jalur dan array

Perintah penghapusan menggunakan -R untuk folder bertingkat dan -- untuk mengakhiri penguraian opsi. Perintah ini memeriksa hasil setiap perintah dan berhenti jika terjadi kegagalan. Manual rm dari Apple menetapkan status keluar bukan nol saat terjadi kesalahan. Penghapusan tidak berlangsung sebagai satu transaksi: kegagalan pada isi berikutnya tidak memulihkan isi yang sudah dihapus. Manual rm dari Apple

Skrip juga menolak target yang merupakan tautan simbolis. Batasi contoh ini pada folder output lokal biasa tanpa volume terpasang di dalamnya. Hentikan proses apa pun yang sedang membuat output sebelum mengosongkan folder: file yang dibuat selama atau setelah proses berlangsung dapat menggagalkan harapan bahwa folder tetap kosong.

Verifikasi proses pertama dan proses berulang

Jalankan pintasan menggunakan tombol jalankan di editor. Periksa hasilnya sesuai urutan berikut sebelum mengubah jalur target. Apple mendokumentasikan pengujian pintasan khusus dari editornya. Menguji pintasan khusus

  1. Pastikan Shortcut Output Demo masih ada di Finder.
  2. Pastikan file contoh yang terlihat dan folder Batch sudah hilang.
  3. Pastikan skrip mengembalikan pesan bahwa folder kosong; pemeriksaan terakhirnya mencakup isi tersembunyi.
  4. Jalankan pintasan sekali lagi. Folder yang sudah kosong seharusnya menampilkan pesan yang sama.
  5. Untuk sementara, ubah nama folder demo yang kosong, lalu jalankan lagi. Skrip seharusnya berhenti dengan kesalahan bahwa folder masih ada. Setelah itu, pulihkan namanya.

Skrip pengosongan lolos pemeriksaan sintaks Bash dengan bash -n. Skrip belum dijalankan di Pintasan macOS untuk artikel ini, jadi rangkaian proses pertama dengan folder sementara tetap menjadi bagian dari penyiapan.

Jika penghapusan gagal, periksa item yang dilaporkan dan isi folder yang masih tersisa sebelum mencoba lagi. Target yang tidak ditemukan, direktori yang tidak dapat dibaca, dan penghapusan yang gagal adalah kondisi yang berbeda; skrip tidak mengubahnya menjadi pesan sukses.

Gunakan kembali folder tanpa mengasumsikan cara penanganan konflik nama

Setelah pengujian sementara berperilaku sesuai harapan, ubah penetapan target ke folder output pilihan Anda. Periksa isinya terlebih dahulu dan pertahankan aturan yang sama: semua yang ada di dalamnya adalah output yang dapat diganti, termasuk item tersembunyi dan subfolder.

Mengosongkan folder menghapus nama yang ada pada saat itu. Tindakan ini tidak menentukan apa yang dilakukan ekspor atau penyimpanan berikutnya saat dua output baru memiliki nama yang sama. Periksa opsi dan deskripsi tindakan tersebut; jangan berasumsi bahwa proses pengaturan ulang ini memungkinkan penggantian, penggabungan, atau penggantian nama otomatis. Apple menyediakan deskripsi tindakan melalui Show Info. Memeriksa perilaku tindakan

Anda juga dapat menjalankan pintasan yang telah disimpan dari Terminal dengan perintah lengkap di bawah. Apple mendokumentasikan penggunaan tanda kutip untuk nama pintasan yang berisi spasi dan menjelaskan bahwa perintah shortcuts mengembalikan 0 jika berhasil atau 1 jika terjadi kesalahan. Menjalankan pintasan dari baris perintah

shortcuts run "Clear Demo Output"

Lakukan pengosongan dan pembuatan output dalam urutan yang terencana: selesaikan batch sebelumnya, kosongkan folder yang dipilih, periksa hasilnya, lalu buat batch berikutnya. Dengan begitu, folder yang dapat digunakan kembali memiliki tujuan yang jelas dan proses berulang dapat diprediksi.

Sumber