Untuk membersihkan folder output boleh digunakan semula sambil mengekalkan folder itu sendiri, ciptakan pintasan Mac yang membuang hanya anak-anaknya. Panduan ini menggunakan folder tetap, fail teks terbuang, dan skrip shell yang memeriksa folder sebelum mengosongkannya.
Tugasan adalah untuk menetapkan semula satu folder antara batch fail yang dijana. Contoh ini termasuk fail biasa, nama fail yang mengandungi ruang, fail tersembunyi, dan folder bersarang. Skrip ini membuang kandungan ini secara langsung; ia tidak memindahkannya ke Tong Sampah. Manual rm yang diterbitkan Apple mendokumentasikan pemindahan rekursif dan pelaporan ralat. Manual rm Apple
Menentukan apa yang harus kekal selepas dibersihkan
Bagi alur kerja ini, keputusan yang dijangka adalah folder sedia ada yang kosong pada laluan yang sama. Mana-mana subfolder di dalamnya juga merupakan output, jadi ia dibuang bersama kandungannya. Jika direktori output anda mengandungi templat atau struktur subfolder yang kekal, skrip khusus ini memerlukan kaedah pemilihan yang berbeza sebelum anda menggunakannya.
Sasaran contoh ialah Shortcut Output Demo, terus di dalam folder home anda. Mengekalkan sasaran tetap menjadikan pintasan itu mudah untuk diperiksa: tingkah lakunya tidak bergantung pada tetingkap Finder yang terbuka atau fail yang dipilih.
| Keperluan | Tingkah laku dalam panduan ini |
|---|---|
| Kekalkan folder output | Hanya laluan anak yang diteruskan ke rm |
| Sertakan output tersembunyi | Opsyen dotglob Bash mengandungi nama berprefix titik |
| Tangani folder yang sudah kosong | Senarai anak kosong diterima |
| Tangani folder yang hilang | Berhenti dengan ralat; jangan cipta semula |
| Buang output bersarang | Buang setiap folder anak secara rekursif |
Kekalkan keupayaan gunakan Put Back Finder |
Gunakan alternatif Finder di bawah |
Finder menyediakan alternatif yang berguna apabila anda mahu item kekal di dalam Tong Sampah. Buka folder output, pilih item terbuang di dalamnya, dan tekan Command-Delete. Biarkan folder penampung tidak dipilih. Apple mendokumentasikan bahawa item yang dipindahkan ke Tong Sampah kekal di sana sehingga dikosongkan dan boleh dipulihkan dengan File > Put Back. Padam fail dan folder pada Mac
Cipta folder terbuang untuk jalankan pertama
Buka Terminal dan tampal blok persediaan lengkap di bawah. Ia hanya mencipta fail teks sintetik. mkdir awal mesti berjaya sebelum sebarang fail ditulis, jadi fail atau folder sedia ada bernama Shortcut Output Demo menyebabkan persediaan berhenti instead of menggunakan semula kandungannya.
/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 home anda di Finder dan cari Shortcut Output Demo. Ia mengandungi tiga anak nampak: alpha.txt, sample output.txt, dan Batch. Anak keempat, .demo-marker, disengaja disembunyikan. Di dalam Batch terdapat nested.txt. Ini adalah input ujian ilustratif, bukan fail pengguna sedia ada.
Jika persediaan berhenti kerana nama sudah wujud, biarkan item sedia ada itu sendiri. Pilih nama demo lain yang tidak digunakan dan tukar penugasan sasaran dalam kedua-dua persediaan dan skrip pembersihan untuk sepadan. Jangan buang semakan penciptaan awal hanya untuk mengelakkan pertembungan.
Bangun pintasan dan kekalkan jenis input dan outputnya
Dalam Pintasan, klik butang tambah untuk mencipta pintasan dan namakan Clear Demo Output. Cari dalam senarai tindakan untuk Run Shell Script dan tambah tindakan itu. Apple mendokumentasikan penciptaan pintasan dengan menambah tindakan, dan mencari senarai tindakan mengikut nama. Cipta pintasan khas pada Mac, Navigasi senarai tindakan dalam Pintasan pada Mac
Tetapkan Shell tindakan kepada /bin/bash, lalu gantikan perintah samplenya dengan skrip pembersihan lengkap di bawah. Skrip ini menggunakan larik Bash dan shopt, jadi kekalkan pemilihan shell itu.
Jika skrip dinyahdayakan, pilih Shortcuts > Settings, buka Advanced, dan dayakan Allow Running Scripts. Apple mendokumentasikan tetapan ini untuk menjalankan skrip dari pintasan. Tetapan menjalankan skrip Apple
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 berjaya tindakan ialah teks: satu baris bermula Folder is empty:. Ia bukan objek Folder, senarai fail dipadam, atau rujukan ke direktori boleh digunakan semula. Jika anda nanti melanjutkan pintasan, bekalkan folder destinasi secara eksplisit kepada mana-mana tindakan yang menanti folder. Panel maklumat tindakan Apple mengenal pasti input diterima dan output yang dihasilkan; Control-klik ikon tindakan dan pilih Show Info untuk memeriksanya. Lihat maklumat input dan output tindakan
Bagi mesej penyelesaian nampak, tambah Show Alert selepas skrip dan masukkan pemboleh ubah output skrip ke dalam mesejnya. Apple mendokumentasikan pemindahan output tindakan sebelum ini ke Show Alert untuk pemeriksaan. Mesej tetap yang berkata folder kosong akan memberi maklupan balas kurang berguna berbanding memaparkan keputusan sebenar skrip. Gunakan tindakan Show Alert dalam pintasan pada Mac
Faham mengapa folder kekal
Penugasan items=( "$target"/* ) mengumpul laluan anak. Gelung itu memasukkan setiap anak secara berasingan ke rm; ia tidak pernah memasukkan "$target" itu sendiri. Pemindahan rekursif maka terpakai ke subfolder output sambil meninggalkan folder induk boleh digunakan semula di tempatnya.
Dua opsyen Bash menangani masalah penapan semula biasa. dotglob mengandungi nama fail bermula dengan titik, dan nullglob membuat corak yang tidak sepadan mengembang kepada tiada apa-apa. Pengembangan larik bertanda petik mengekalkan nama fail yang mengandungi ruang sebagai argumen berasingan. Tingkah laku ini didokumentasikan dalam manual Bash yang diedarkan Apple. Manual Bash: pengembangan pathname dan larik
Perintah pemindahan menggunakan -R untuk folder bersarang dan -- untuk tamat pengecualian opsyen. Ia memeriksa keputusan setiap perintah dan berhenti pada kegagalan. Manual rm Apple menentukan status keluar bukan sifar apabila ralat berlaku. Pemindahan bukan transaksi: kegagalan pada anak kemudian tidak memulihkan anak yang sudah dibuang. Manual rm Apple
Skrip juga menolak sasaran yang merupakan pautan simbolik. Kekalkan contoh ini skop kepada folder output tempatan biasa, tanpa volum dipasang di dalamnya. Hentikan mana-mana proses yang menjana output sebelum membersihkan: fail yang dicipta semasa atau selepas lari boleh membatalkan jangkaan folder kekal kosong.
Sahkan jalankan pertama dan jalankan berulang
Jalankan pintasan menggunakan butang run editor. Semak keputusan terhadap urutan ini sebelum menyesuaikan laluan sasaran. Apple mendokumentasikan menguji pintasan khas dari editornya. Uji pintasan khas
- Sahkan bahawa
Shortcut Output Demomasih wujud di Finder. - Sahkan bahawa fail contoh nampak dan folder
Batchtelah hilang. - Sahkan bahawa skrip mengembalikan mesej folder-kosongnya; semakan akhir termasuk anak tersembunyi.
- Jalankan pintasan lagi. Folder yang sudah kosong harus menghasilkan mesej yang sama.
- Namakan semula folder demo kosong secara sementara dan jalankan lagi. Skrip harus berhenti dengan ralat folder-sedia-ada. Kembalikan namanya kemudian.
Skrip pembersihan lulus semakan sintaks Bash dengan bash -n. Ia tidak dijalankan dalam macOS Pintasan untuk artikel ini, jadi urutan pertama-jalankan terbuang kekal sebahagian daripada persediaan.
Jika pemindahan gagal, periksa item yang dilaporkan dan kandungan folder yang tinggal sebelum mencuba lagi. Sasaran yang hilang, direktori yang tidak dibaca, dan pemindahan yang gagal adalah keadaan berbeza; skrip tidak menukarnya kepada mesej kejayaan.
Guna semula folder tanpa mengandaikan penanganan pertembungan
Seperti ujian terbuang berkelakuan seperti dijangka, tukar penugasan sasaran ke folder output pilihan anda. Semak kandungannya dulu dan kekalkan kontrak yang sama: semua di dalam adalah output ganti, termasuk item tersembunyi dan subfolder.
Mengosongkan folder membuang nama sedia ada pada masa itu. Ia tidak mentakrifkan apa yang tindakan eksport atau simpan kemudian buka apabila dua output baru mempunyai nama yang sama. Semak opsyen dan perihalan tindakan itu sendiri instead of mengandaikan penapan semula ini membolehkan penggantian, penggabungan, atau penamaan automatik. Apple menyediakan perihalan tindakan melalui Show Info. Periksa tingkah laku tindakan
Anda juga boleh jalankan pintasan yang disimpan dari Terminal dengan perintah lengkap di bawah. Apple mendokumentasikan menanda petik nama pintasan yang mengandungi ruang dan melaporkan bahawa perintah shortcuts mengembalikan 0 pada kejayaan atau 1 pada ralat. Jalankan pintasan dari baris perintah
shortcuts run "Clear Demo Output"
Kekalkan pembersihan dan penjanaan output dalam urutan yang sengaja: selesaikan batch sebelum, kosongkan folder pilihan, semak keputusan, lalu cipta batch seterusnya. Itu memberi folder boleh digunakan semula tujuan yang jelas dan menjadikan jalankan berulang dapat dijangka.
Sumber
- Cipta pintasan khas pada Mac — Sokongan Apple.
- Navigasi senarai tindakan dalam Pintasan pada Mac — Sokongan Apple.
- Tetapan privasi dan keselamatan lanjutan dalam Pintasan pada Mac — Sokongan Apple.
- Gunakan tindakan Show Alert dalam pintasan pada Mac — Sokongan Apple.
- Padam fail dan folder pada Mac — Sokongan Apple.
- Jalankan pintasan dari baris perintah — Sokongan Apple.
- rm.1 — Pengagihan Kod Terbuka Apple.
- bash.1 — Pengagihan Kod Terbuka Apple.