Klasörün kendisini koruyarak yeniden kullanılabilir bir çıktı klasörünü temizlemek için yalnızca içindekileri kaldıran bir Mac kestirmesi oluşturun. Bu anlatımda sabit bir klasör, geçici metin dosyaları ve klasörü temizlemeden önce kontrol eden bir kabuk betiği kullanılıyor.
Görev, oluşturulan dosya grupları arasında tek bir klasörü sıfırlamak. Örnekte sıradan dosyalar, adında boşluk bulunan bir dosya, gizli bir dosya ve iç içe bir klasör yer alıyor. Betik bu içerikleri doğrudan kaldırır; Çöp Sepeti'ne taşımaz. Apple’ın yayımladığı rm kılavuzu, özyinelemeli kaldırma ve hata bildirimini açıklar. Apple’ın rm kılavuzu
Temizleme sonrasında nelerin kalması gerektiğine karar verin
Bu iş akışında beklenen sonuç, aynı yolda bulunan ve boş olan bir klasördür. İçindeki alt klasörler de çıktının parçasıdır; bu nedenle içerikleriyle birlikte kaldırılır. Çıktı dizininizde şablonlar veya kalıcı bir alt klasör yapısı varsa bu betiği kullanmadan önce farklı bir seçim kuralı belirlemeniz gerekir.
Örnek hedef, ana klasörünüzün doğrudan içindeki Shortcut Output Demo klasörüdür. Hedefi sabit tutmak kestirmeyi incelemeyi kolaylaştırır: davranışı, hangi Finder penceresinin açık olduğuna veya hangi dosyanın seçili olduğuna bağlı değildir.
| Gereksinim | Bu anlatımdaki davranış |
|---|---|
| Çıktı klasörünü koruma | Yalnızca içindeki yollar rm komutuna verilir |
| Gizli çıktıları dahil etme | Bash’in dotglob seçeneği noktayla başlayan adları dahil eder |
| Klasör zaten boşsa bunu ele alma | Boş bir içindekiler listesi kabul edilir |
| Klasör yoksa bunu ele alma | Hata vererek durur; klasörü yeniden oluşturmaz |
| İç içe çıktıları kaldırma | Her alt klasörü özyinelemeli olarak kaldırır |
Finder’daki Put Back özelliğini kullanabilme |
Bunun yerine aşağıdaki Finder seçeneğini kullanın |
Öğelerin Çöp Sepeti'nde kalmasını istiyorsanız Finder kullanışlı bir alternatif sunar. Çıktı klasörünü açın, içindeki geçici öğeleri seçin ve Command-Delete tuşlarına basın. İçeren klasörü seçili bırakmayın. Apple, Çöp Sepeti'ne taşınan öğelerin Çöp Sepeti boşaltılana kadar orada kaldığını ve File > Put Back ile geri yüklenebileceğini açıklar. Mac’te dosya ve klasörleri silme
İlk çalıştırma için geçici bir klasör oluşturun
Terminal’i açın ve aşağıdaki kurulum bloğunun tamamını yapıştırın. Yalnızca yapay metin dosyaları oluşturur. Dosyalar yazılmadan önce ilk mkdir işleminin başarılı olması gerekir; bu nedenle Shortcut Output Demo adlı mevcut bir dosya veya klasör varsa kurulum, içeriğini yeniden kullanmak yerine durur.
/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
Finder’da ana klasörünüzü açın ve Shortcut Output Demo klasörünü bulun. Klasörde görünür üç öğe vardır: alpha.txt, sample output.txt ve Batch. Dördüncü öğe olan .demo-marker bilerek gizlenmiştir. Batch klasörünün içinde nested.txt bulunur. Bunlar mevcut kullanıcı dosyaları değil, örnek test girdileridir.
Ad zaten kullanımda olduğu için kurulum durursa mevcut öğeye dokunmayın. Kullanılmayan başka bir demo adı seçin ve hem kurulumdaki hem de temizleme betiğindeki hedef atamasını bu adla değiştirin. Ad çakışmasını aşmak için ilk oluşturma kontrolünü kaldırmayın.
Kestirmeyi oluşturun, girdi ve çıktı türlerini koruyun
Kestirmeler’de ekleme düğmesine tıklayarak bir kestirme oluşturun ve adını Clear Demo Output koyun. Eylem listesinden Run Shell Script eylemini arayıp ekleyin. Apple, eylemler ekleyerek kestirme oluşturmayı ve eylem listesini ada göre aramayı açıklar. Mac’te özel bir kestirme oluşturma, Mac’te Kestirmeler’de eylem listesinde gezinme
Eylemin Shell ayarını /bin/bash yapın ve örnek komutlarını aşağıdaki temizleme betiğinin tamamıyla değiştirin. Bu betik Bash dizilerini ve shopt kullanır; bu nedenle kabuk seçimini koruyun. Hedefini betikteki atamadan alır; kestirme girdisini, standart girdiyi veya komut satırı bağımsız değişkenlerini kullanmaz.
Betikler devre dışıysa Shortcuts > Settings menüsünü seçin, Advanced bölümünü açın ve Allow Running Scripts seçeneğini etkinleştirin. Apple, kestirmelerden betik çalıştırmak için bu ayarı açıklar. Apple’ın betik çalıştırma ayarı
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"
Eylem başarıyla tamamlandığında metin çıktısı verir: Folder is empty: ile başlayan bir satır. Bu çıktı bir Klasör nesnesi, silinen dosyaların listesi veya yeniden kullanılabilir dizine başvuru değildir. Kestirmeyi daha sonra genişletirseniz klasör bekleyen tüm eylemlere hedef klasörü açıkça sağlayın. Apple’ın eylem bilgi paneli, kabul edilen girdileri ve ortaya çıkan çıktıları gösterir. İncelemek için bir eylemin simgesine Kontrol tuşuyla tıklayıp Show Info seçeneğini belirleyin. Eylem girdi ve çıktı bilgilerini görüntüleme
Görünür bir tamamlanma mesajı için betikten sonra Show Alert ekleyin ve ileti alanına betiğin çıktı değişkenini yerleştirin. Apple, önceki bir eylemin çıktısını incelemek üzere Show Alert eylemine aktarmayı açıklar. Klasörün boş olduğunu belirten sabit bir ileti, betiğin gerçek sonucunu göstermekten daha az yararlı bilgi verir. Mac’te kestirmede Show Alert eylemini kullanma
Klasörün neden yerinde kaldığını anlayın
items=( "$target"/* ) ataması, içindeki yolları toplar. Döngü her öğeyi ayrı ayrı rm komutuna verir; \"$target\" değerini hiçbir zaman komuta vermez. Böylece özyinelemeli kaldırma çıktı alt klasörlerine uygulanırken yeniden kullanılabilir üst klasör yerinde kalır.
İki Bash seçeneği yaygın sıfırlama sorunlarını ele alır. dotglob, noktayla başlayan dosya adlarını dahil eder; nullglob ise eşleşmeyen bir kalıbın boş olarak genişletilmesini sağlar. Tırnak içine alınmış dizi genişletmesi, adlarında boşluk bulunan dosyaları ayrı bağımsız değişkenler olarak korur. Bu davranışlar Apple’ın dağıttığı Bash kılavuzunda belgelenmiştir. Bash kılavuzu: yol adı genişletmesi ve diziler
Kaldırma komutu iç içe klasörler için -R, seçenek ayrıştırmasını sonlandırmak için de -- kullanır. Her komutun sonucunu kontrol eder ve hata durumunda durur. Apple’ın rm kılavuzu, hata oluştuğunda sıfırdan farklı bir çıkış durumu belirtir. Kaldırma işlemi bir işlem bütünü değildir: sonraki bir öğede oluşan hata, daha önce kaldırılmış öğeleri geri getirmez. Apple’ın rm kılavuzu
Betik, hedefin sembolik bağlantı olmasını da reddeder. Bu örneği, içinde bağlı birim bulunmayan sıradan bir yerel çıktı klasörüyle sınırlı tutun. Temizlemeden önce çıktı oluşturan tüm süreçleri durdurun: çalışma sırasında veya sonrasında oluşturulan dosyalar klasörün boş kalacağı beklentisini geçersiz kılabilir.
İlk çalıştırmayı ve tekrarlanan çalıştırmaları doğrulayın
Düzenleyicideki çalıştır düğmesini kullanarak kestirmeyi çalıştırın. Hedef yolunu uyarlamadan önce sonucu aşağıdaki adımlarla karşılaştırın. Apple, özel bir kestirmenin düzenleyicisinden test edilmesini açıklar. Özel bir kestirmeyi test etme
- Finder’da
Shortcut Output Demoklasörünün hâlâ bulunduğunu doğrulayın. - Görünür örnek dosyalarının ve
Batchklasörünün kaybolduğunu doğrulayın. - Betiğin klasörün boş olduğunu bildiren mesajı döndürdüğünü doğrulayın; son kontrol gizli öğeleri de kapsar.
- Kestirmeyi yeniden çalıştırın. Zaten boş olan bir klasör aynı mesajı vermelidir.
- Boş demo klasörünü geçici olarak yeniden adlandırıp tekrar çalıştırın. Betik, klasörün mevcut olduğuna ilişkin hatayla durmalıdır. Ardından klasörün adını geri yükleyin.
Temizleme betiği, bash -n ile Bash sözdizimi kontrolünden geçti. Bu makale için macOS Kestirmeler’de çalıştırılmadı; bu nedenle geçici ilk çalıştırma adımları kurulumun parçası olmaya devam ediyor.
Kaldırma başarısız olursa yeniden denemeden önce bildirilen öğeyi ve klasörde kalan içerikleri inceleyin. Eksik hedef, okunamayan dizin ve başarısız kaldırma birbirinden farklı durumlardır; betik bunları başarı mesajına dönüştürmez.
Çakışma yönetimini varsaymadan klasörü yeniden kullanın
Geçici test beklendiği gibi çalıştıktan sonra hedef atamasını seçtiğiniz çıktı klasörüyle değiştirin. Önce içeriğini gözden geçirin ve aynı koşulları koruyun: gizli öğeler ve alt klasörler dahil içindeki her şey değiştirilebilir çıktıdır.
Bir klasörü temizlemek, o anda var olan adları kaldırır. Daha sonraki bir dışa aktarma veya kaydetme eyleminin, iki yeni çıktı aynı ada sahip olduğunda ne yapacağını belirlemez. Sıfırlamanın üzerine yazmayı, birleştirmeyi veya otomatik yeniden adlandırmayı etkinleştirdiğini varsaymak yerine eylemin kendi seçenek ve açıklamasını kontrol edin. Apple, eylem açıklamalarını Show Info üzerinden sunar. Bir eylemin davranışını inceleme
Kaydedilmiş kestirmeyi aşağıdaki komutun tamamıyla Terminal’den de çalıştırabilirsiniz. Apple, boşluk içeren kestirme adlarının tırnak içine alınmasını açıklar ve shortcuts komutunun başarı durumunda 0, hata durumunda 1 döndürdüğünü bildirir. Kestirmeleri komut satırından çalıştırma
shortcuts run "Clear Demo Output"
Çıktıyı temizleme ve oluşturma işlemlerini belirli bir sırayla yapın: önceki grubu tamamlayın, seçilen klasörü temizleyin, sonucu kontrol edin, ardından yeni grubu oluşturun. Böylece yeniden kullanılabilir klasörün amacı net olur ve işlemleri tekrarlamak öngörülebilir hâle gelir.
Kaynaklar
- Mac’te özel bir kestirme oluşturma — Apple Support.
- Mac’te Kestirmeler’de eylem listesinde gezinme — Apple Support.
- Mac’te Kestirmeler’in ileri düzey gizlilik ve güvenlik ayarları — Apple Support.
- Mac’te kestirmede Show Alert eylemini kullanma — Apple Support.
- Mac’te dosya ve klasörleri silme — Apple Support.
- Kestirmeleri komut satırından çalıştırma — Apple Support.
- rm.1 — Apple Open Source Distributions.
- bash.1 — Apple Open Source Distributions.