Metni bir kabuk betiğine aktarmak için Mac Kestirmeleri’ni kullanın; betik, tek bir yerel klasörde en son değiştirilmiş metin dosyasını seçip girdinizi dosyanın sonuna ekler. Bu adım adım anlatımda silinebilir örnek dosyalar kullanılır; klasör boşsa veya en yeni zaman damgaları eşitse işlem durur.
Buradaki görev belirli: her seferinde dosyayı elle seçmeden mevcut bir düz metin dosyasına kısa bir girdi eklemek. Apple, Mac Kestirmeleri’nde kabuk betiklerini desteklediğini belgeliyor. Aşağıdaki iş akışı, bu desteklenen özelliği zsh ile belgelenmiş dosya seçimi ve sona ekleme davranışıyla birleştiriyor. macOS için Kestirmeler’i tanıyın
“En yeni dosya”nın ne anlama geldiğine karar verin
Bu makalede en yeni, en son değiştirilmiş anlamına gelir. Betik yalnızca belirlenen klasörün doğrudan içindeki, adları küçük harfli .txt ile biten görünür ve normal dosyaları dikkate alır. Alt klasörleri ve sembolik bağlantıları dışarıda bırakır. Bu seçim kuralları zsh’nin dosya adı kalıplarına ve niteleyicilerine dayanır. Genişletme
Bu tanım, işlemin tekrarlanmasını etkiler. Bir dosyaya metin ekledikten sonra değiştirilme zamanı güncellenir; bu nedenle dosya genellikle uygun dosyalar arasında en yeni dosya olarak kalır. Amacınız en son oluşturulan belgeyi izlemekse değiştirilme zamanı farklı bir kuraldır; bu iş akışının oluşturulma tarihine göre seçim yaptığını varsaymayın.
Kestirmeyi oluşturmadan önce görevinize uygun kuralı seçin:
| Amaçladığınız görev | Bu örnek uygun mu? |
|---|---|
En son düzenlenen .txt dosyasının sonuna metin eklemek |
Evet |
| Adındaki en son tarih bulunan dosyaya metin eklemek | Hayır; dosya adları tarih olarak yorumlanmaz |
| En son oluşturulan dosyaya metin eklemek | Hayır; oluşturulma zamanı kullanılmaz |
| Alt klasörlerdeki dosyaları dahil etmek | Hayır; seçim tek bir klasörle sınırlıdır |
| Zengin metin belgesine veya PDF’ye metin eklemek | Hayır; bu örnek düz metin yazar |
Finder görsel olarak kontrol etmek için kullanışlıdır. Klasörü liste görünümünde açıp Date Modified sütun başlığına tıklayın; gerekirse en yeni öğeyi en üste getirmek için yeniden tıklayın. Apple hem sütunlara göre sıralamayı hem de sıralama yönünü tersine çevirmeyi belgeliyor. Finder’ın görünümü sonucu incelemenize yardımcı olur, ancak betik seçimi kendi yapar. Mac’te Finder’da öğeleri sıralama ve düzenleme
Silinebilir bir örnek klasör oluşturun
Örnekte ana klasörünüzün içinde Shortcut Append Demo adlı bir klasör kullanılır. Kurulum, içeriği yeniden kullanmak yerine bu ad zaten varsa özellikle durur. İki sahte metin dosyası oluşturur ve ikinci dosyanın değiştirilme zamanının daha ileri olması için aralarında iki saniye bekler.
Terminal’i açın, kurulum bloğunun tamamını yapıştırın ve Return tuşuna basın. Tırnak içine alınmış heredoc komutları ayrı bir zsh sürecinde çalıştırır; bu nedenle kurulum başarısız olursa o süreçten çıkılır.
/bin/zsh <<'ZSH'
emulate -L zsh
setopt ERR_EXIT
folder="$HOME/Shortcut Append Demo"
if ! /bin/mkdir "$folder"; then
printf '%s\n' 'Setup stopped: use a new folder name if this one exists.' >&2
exit 1
fi
printf '%s\n' 'Sample entry: blue notebook.' > "$folder/older.txt"
/bin/sleep 2
printf '%s\n' 'Sample entry: green notebook.' > "$folder/newer.txt"
printf 'Example folder: %s\n' "$folder"
ZSH
Kurulum, dosyaları yalnızca yeni klasör başarıyla oluşturulduktan sonra oluşturmak için çıktı yönlendirmesi kullanır. Apple, komut çıktısını dosyaya yazan normal çıktı yönlendirmesiyle çıktıyı dosyanın sonuna ekleyen yönlendirmeyi birbirinden ayırır. Mac’te Terminal girdisini ve çıktısını yönlendirme
Kurulum klasörün zaten var olduğunu bildirirse silinebilir başka bir ad seçin ve hem kurulumdaki hem de aşağıdaki kestirme betiğindeki klasör atamasını değiştirin. Mevcut bir klasörde tek tek dosya yazma satırlarını yeniden çalıştırmayın.
Kestirmeyi oluşturun ve metin girdisini koruyun
Kestirmeler uygulamasında yeni bir kestirme oluşturun ve adını Append to Newest Text File koyun. Aşağıdaki eylemleri eklemek için eylem aramasını kullanın. Apple, eylem arşivinde arama yapmayı ve Show Info aracılığıyla her eylemin kabul ettiği girdiyi ve ürettiği çıktıyı kontrol etmeyi belgeliyor. Mac’te Kestirmeler’de eylem listesinde gezinme
Texteylemi ekleyin ve içineSample entry: orange notebook.sahte girdisini yazın.- Hemen arkasına
Run Shell Scriptekleyin. - Kabuk olarak
/bin/zshseçin. - Betiğin girdisini önceki
Texteyleminin çıktısı olarak ayarlayın. Pass Inputseçeneğinias argumentsolarak ayarlayın.- Betik alanındaki içeriği bir sonraki bölümdeki betiğin tamamıyla değiştirin.
Amaçlanan bağlantı tek bir Text değerinin tek bir betik argümanına aktarılmasıdır. Betik bu argümanı $1 olarak okur. Başarılı çıktısı, hedef yolu içeren bir metin onayıdır; bu yol bir Kestirmeler Dosya nesnesi değildir ve çıktı dosyanın tüm içeriğini içermez.
Girdiyi Text çıktısına bağlı tutun. Bir dosya, dosya adları listesi veya kestirmenin ilgisiz girdisini aktarmak betiğe ulaşan veriyi değiştirir. Betik, beklenmedik bir girdi koleksiyonunun birden fazla girdinin eklenmesine yol açmaması için argüman sayısını denetler.
Betiğin çalıştırılması devre dışıysa Shortcuts > Settings bölümünü açın, Advanced seçeneğini belirleyin ve Allow Running Scripts seçeneğini etkinleştirin. Bunlar Apple’ın kestirmelerde betik çalıştırılmasına izin vermek için belgelediği denetimlerdir. Apple’ın betik ayarı yönergeleri
Seçim yapan ve metin ekleyen betiği ekleyin
Bu programın tamamını Run Shell Script alanına yapıştırın. İndirilen araçlara veya ayrı bir betik dosyasına gerek yoktur. Klasör ataması yukarıdaki silinebilir kurulumla eşleşir.
emulate -L zsh
unsetopt CLOBBER APPEND_CREATE
fail() {
printf '%s\n' "$1" >&2
exit 1
}
(( $# == 1 )) || fail 'Expected exactly one text input.'
[[ -n "$1" ]] || fail 'The text input is empty.'
folder="$HOME/Shortcut Append Demo"
[[ -d "$folder" ]] || fail 'The example folder does not exist.'
files=( "$folder"/*.txt(N.om) )
(( ${#files} > 0 )) || fail 'No eligible .txt files were found.'
newest="${files[1]}"
if (( ${#files} > 1 )); then
[[ "$newest" -nt "${files[2]}" ]] ||
fail 'The newest timestamp is tied or the folder changed. Check the files.'
fi
[[ -f "$newest" && ! -L "$newest" ]] ||
fail 'The selected file is no longer an eligible regular file.'
[[ -w "$newest" ]] || fail 'The selected file is not writable.'
if ! printf '\n%s\n' "$1" >> "$newest"; then
fail 'Append failed; inspect the selected file before retrying.'
fi
printf 'Appended to: %s\n' "$newest"
Seçim ifadesi, eşleşen dosya yollarından oluşan bir dizi oluşturur. (N.om) içinde N boş eşleşmeye izin verir, . eşleşmeleri normal dosyalarla sınırlar ve om en yeni dosya ilk sırada olacak şekilde değiştirilme zamanına göre sıralar. Yolların bir dizide tutulması, dosya adlarının boşluklardan bölünmesini önler. Genişletme
Sonraki denetim, ilk dosyanın ikinci dosyadan kesin olarak daha yeni olmasını gerektirir. Değiştirilme zamanları eşitse kestirme birini sessizce seçmek yerine durur. zsh, burada kullanılan normal dosya, sembolik bağlantı ve yazılabilir dosya sınamalarının yanı sıra dosya yaşını karşılaştırmak için -nt operatörünü belgeliyor. Koşullu İfadeler
Ekleme komutu sabit bir printf biçimi kullanır ve girdinizi %s argümanı olarak verir. Böylece girdideki yüzde işaretleri ve ters eğik çizgiler ek biçimlendirme yönergeleri değil, metin olarak değerlendirilir. Baştaki yeni satır girdiyi mevcut metinden ayırır; sondaki yeni satır ise girdiyi bitirir. Dosya zaten yeni satırla bitiyorsa girdiler arasında boş satır oluşur. Kabuk Yerleşik Komutları
Betik ayrıca CLOBBER ve APPEND_CREATE değişkenlerini tanımsız duruma getirir. Her iki seçenek de tanımsızken zsh, hedef dosya yoksa sona ekleme yönlendirmesinin başarısız olduğunu belgeliyor. Seçilen dosya metin eklenmeden önce silinirse betik eski yolda yeni bir dosya oluşturmak yerine hata bildirmelidir. Yönlendirme
Örnek dosyalarla sonucu kontrol edin
Kestirmeyi bir kez çalıştırın. Örnek klasör değiştirilmemişse beklenen hedef newer.txt olur. Bu dosyayı açıp aşağıdaki içeriği kontrol edin. Bu, örnekten çıkarılan beklenen sonuçtur; Mac arayüzünde testin tamamlandığı anlamına gelmez.
Sample entry: green notebook.
Sample entry: orange notebook.
older.txt dosyasını da açın. Bu dosyada yalnızca Sample entry: blue notebook. bulunmalıdır. Her iki dosyayı da kontrol etmek görevin iki bölümünü doğrular: tek bir hedef seçmek ve diğer dosyayı olduğu gibi bırakmak.
Text eylemini Sample entry: yellow notebook. olarak değiştirip kestirmeyi yeniden çalıştırarak ikinci bir sahte girdi deneyin. Başka bir uygun dosya daha yeni duruma gelmemişse newer.txt dosyasına araya boş satır konmuş yeni bir girdi eklenmesini bekleyin. Kestirmeyi aynı girdiyle iki kez çalıştırmak o girdiyi iki kez ekler; bu program yinelenen girdileri algılamaz.
Bu örnekler belgelerle karşılaştırılarak incelendi, ancak burada çalıştırılmadı: mevcut ortamda ne macOS Kestirmeler ne de zsh var. Klasör atamasını uyarlamadan önce silinebilir dosya denetimini Mac’inizde tamamlayın.
Boş klasörleri, çakışmaları ve değişen dosyaları anlayın
İş akışı için mevcut bir hedef gerekir. Klasör yoksa, boşsa veya yalnızca uygun olmayan öğeler içeriyorsa metin eklenmeden önce hata oluşur. Varsayılan bir dosya oluşturmaz, alt klasör seçmez veya adı farklı bir belgeye geçmez.
Ad çakışmaları, hedef oluşturulmamasıyla önlenir. Kurulum, klasör adı zaten varsa durur. Kestirme normal çalışırken seçilen dosyanın adı değişmeden kalır: betik dosyayı yeniden adlandırmaz veya ikinci bir kopyasını kaydetmez. Dosyanın eksik olması durumundaki davranış, belgelenmiş zsh sona ekleme seçenekleriyle denetlenir. Yönlendirme
Sonuç beklentinizden farklıysa şu kısa tanılama sırasını izleyin:
- Klasör atamasını kontrol edin. Kurulum sırasında oluşturulan klasörle eşleşmelidir.
- Uygunluğu kontrol edin. Örnek kalıp, klasörün en üst düzeyinde bulunan ve küçük harfli
.txtile biten görünür normal dosyaları kapsar. - Değiştirilme sırasını kontrol edin. Finder’da
Date Modifieddeğerine bakın; bir dosyayı düzenlemenin onu sonraki hedef yapabileceğini unutmayın. - Eşit zaman damgalarını kontrol edin. Amaçlanan örnek dosyayı daha sonra düzenleyip kaydedin ve sıralamayı yeniden inceleyin.
- Eylem bağlantısını kontrol edin. Kabuk betiğine tek argüman olarak tek bir metin değeri ulaşmalıdır.
Betik, çalışırken değişmeyen bir klasör için tasarlanmıştır. Seçim ve yazma ayrı işlemlerdir: başka bir süreç arada bir dosyayı düzenleyebilir, değiştirebilir veya yeni bir dosya ekleyebilir. Denetimler iş akışını işlemsel hale getirmez; yazma hatası, girdinin yalnızca bir bölümünün eklenmesine yol açabilir. Ekleme hatasından sonra yeniden denemeden önce dosyayı inceleyin.
Yerel dosya filtrelerinin yeri
Apple, Filter Files eylemini içerik kabul eden, filtrelerle daraltan ve eşleşen sonuçları sonraki eylemlere aktaran bir eylem olarak belgeliyor. Genel filtre denetimleri sonuçları sıralayabilir ve sayısını sınırlayabilir. Bu işlemler dosya seçmeye yardımcı olur; ancak kendi başlarına metin eklemez. Bul ve Filtrele eylemlerine giriş, Filtre parametreleri ekleme
Bu adım adım anlatımda dosya kalıbını, eşitlik durumundaki davranışı ve mevcut dosya gereksinimini açıkça belirtmek için seçim ve yazma işlemleri kabuk betiğinde bir arada tutuluyor. Dosya eylemlerini kullanarak farklı bir zincir oluşturursanız önce her eylemin Show Info bölümünü inceleyin: Dosya sonucu, metne dönüştürülmüş dosya içeriği ve metin olarak gösterilen bir yol farklı değerlerdir. Apple, girdi ve çıktı türlerini belirlemek amacıyla bu eylem açıklamalarını sunuyor. Mac’te Kestirmeler’de eylem listesinde gezinme
Örnek beklendiği gibi çalıştıktan sonra uyarlarken de aynı açık düzeni koruyun: tek bir metin girdisi, belirlenmiş tek bir yerel klasör ve koşulları karşılayanlar arasında kesin olarak en yeni dosya. Böylece her çalıştırma öngörülebilir olur ve kestirme durduğunda sorunu araştırabileceğiniz somut bir yeriniz bulunur.
Kaynaklar
- macOS için Kestirmeler’i tanıyın — Apple Developer.
- Mac’te Kestirmeler’de eylem listesinde gezinme — Apple Support.
- Mac’te Kestirmeler’de gelişmiş gizlilik ve güvenlik ayarları — Apple Support.
- Mac’te Finder’da öğeleri sıralama ve düzenleme — Apple Support.
- Mac’te Terminal girdisini ve çıktısını yönlendirme — Apple Support.
- Mac’te Kestirmeler’de Bul ve Filtrele eylemlerine giriş — Apple Support.
- Mac’te Kestirmeler’de Bul ve Filtrele eylemlerine filtre parametreleri ekleme — Apple Support.
- 14 Genişletme — The Zsh Development Group.
- 12 Koşullu İfadeler — The Zsh Development Group.
- 17 Kabuk Yerleşik Komutları — The Zsh Development Group.
- 7 Yönlendirme — The Zsh Development Group.