Gunakan Pintasan Mac untuk meneruskan teks ke skrip shell yang memilih file teks yang paling baru diubah di satu folder lokal dan menambahkan entri Anda. Panduan ini menggunakan file contoh sekali pakai dan berhenti jika folder kosong atau stempel waktu terbaru sama (seri).
Tugas di sini spesifik: tambahkan entri singkat ke file teks biasa yang sudah ada tanpa memilih file tersebut secara manual setiap kali. Apple mendokumentasikan dukungan untuk skrip shell di dalam Pintasan Mac. Alur kerja di bawah menggabungkan kemampuan terdukung tersebut dengan pemilihan file zsh dan perilaku penambahan (append) yang terdokumentasi. Kenali Pintasan untuk macOS
Tentukan arti "file terbaru"
Artikel ini mendefinisikan terbaru sebagai paling baru diubah. Skrip hanya mempertimbangkan file reguler yang terlihat yang namanya diakhiri dengan .txt huruf kecil, langsung di dalam folder yang ditunjuk. Ia mengecualikan subfolder dan tautan simbolis. Aturan pemilihan ini berasal dari pola nama file dan penentu (qualifiers) zsh. Ekspansi
Definisi ini memengaruhi eksekusi berulang. Setelah Anda menambahkan ke sebuah file, waktu modifikasinya berubah, sehingga file tersebut umumnya tetap menjadi file yang memenuhi syarat paling baru. Jika niat Anda adalah mengikuti dokumen yang baru dibuat, waktu modifikasi adalah aturan yang berbeda; jangan asumsikan alur kerja ini menerapkan pemilihan berdasarkan tanggal pembuatan.
Sebelum membangun pintasan, pilih aturan yang sesuai dengan tugas Anda:
| Tugas yang Anda inginkan | Apakah contoh ini cocok? |
|---|---|
Tambahkan ke file .txt yang paling baru diedit |
Ya |
| Tambahkan ke file dengan tanggal terbaru di namanya | Tidak; nama file tidak ditafsirkan sebagai tanggal |
| Tambahkan ke file yang paling baru dibuat | Tidak; waktu pembuatan tidak digunakan |
| Sertakan file di dalam subfolder | Tidak; pemilihan dibatasi pada satu folder |
| Tambahkan ke dokumen rich-text atau PDF | Tidak; contoh ini menulis teks biasa |
Finder menyediakan pemeriksaan visual yang berguna. Buka folder dalam tampilan daftar dan klik judul kolom Tanggal Diubah; klik lagi jika perlu agar item terbaru berada di atas. Apple mendokumentasikan pengurutan kolom dan membalikkan urutan. Tampilan Finder membantu Anda memeriksa hasil, tetapi skrip melakukan pemilihan sendiri. Urutkan dan susun item di Finder pada Mac
Buat folder contoh sekali pakai
Contoh ini menggunakan folder bernama Shortcut Append Demo di dalam folder home Anda. Persiapan sengaja berhenti jika nama itu sudah ada, daripada menggunai isinya. Ia membuat dua file teks sintetis, dengan jeda dua detik sehingga file kedua seharusnya memiliki waktu modifikasi yang lebih baru.
Buka Terminal, tempel blok persiapan lengkap ini, dan tekan Return. Heredoc yang dikutip menjalankan perintah dalam proses zsh terpisah, sehingga kegagalan persiapan keluar dari proses tersebut.
/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
Persiapan menggunakan pengalihan keluaran untuk membuat file hanya setelah folder baru berhasil dibuat. Apple membedakan pengalihan keluaran biasa, yang menulis keluaran perintah ke file, dari pengalihan tambah (append), yang menambahkan keluaran di akhir. Alihkan masukan dan keluaran Terminal di Mac
Jika persiapan melaporkan folder sudah ada, pilih nama sekali pakai lain dan ubah penetapan folder di persiapan dan skrip pintasan di bawah. Jangan menjalankan kembali baris penulisan file individual terhadap folder yang sudah ada.
Bangun pintasan dan pertahankan masukan teks
Buat pintasan baru di aplikasi Pintasan dan beri nama Tambahkan ke File Teks Terbaru. Gunakan pencarian aksi untuk menambahkan aksi di bawah. Apple mendokumentasikan pencarian pustaka aksi dan memeriksa masukan yang diterima serta keluaran hasil setiap aksi melalui Tampilkan Info. Jelajahi daftar aksi di Pintasan pada Mac
- Tambahkan aksi
Teksberisi entri sintetisContoh entri: buku catatan oranye. - Tambahkan
Jalankan Skrip Shellsegera setelahnya. - Atur shell ke
/bin/zsh. - Atur masukan skrip ke keluaran aksi
Tekssebelumnya. - Atur
Teruskan Masukankesebagai argumen. - Ganti bidang skrip dengan skrip lengkap di bagian selanjutnya.
Koneksi yang dimaksudkan adalah satu nilai Teks ke satu argumen skrip. Skrip membaca argumen itu sebagai $1. Keluaran berhasilnya adalah konfirmasi teks berisi jalur tujuan; jalur itu bukan objek File Pintasan, dan keluaran bukan isi lengkap file.
Jaga masukan tetap terhubung ke keluaran Teks. Meneruskan file, daftar nama file, atau masukan tidak terkait pintasan akan mengubah apa yang sampai ke skrip. Skrip memeriksa jumlah argumen sehingga kumpulan masukan tak terduga tidak menjadi beberapa entri yang ditambahkan.
Jika skrip dinonaktifkan, buka Pintasan > Pengaturan, pilih Lanjutan, dan aktifkan Izinkan Menjalankan Skrip. Ini adalah kontrol Apple yang terdokumentasi untuk mengizinkan skrip di pintasan. Instruksi pengaturan skrip Apple
Tambahkan skrip yang memilih dan menambahkan
Tempel seluruh program ini ke dalam Jalankan Skrip Shell. Ia tidak memerlukan alat unduhan atau file skrip terpisah. Penetapan folder cocok dengan persiapan sekali pakai di atas.
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"
Ekspresi pemilihan membangun array jalur file yang cocok. Di (N.om), N mengizinkan kecocokan kosong, . membatasi kecocokan ke file reguler, dan om mengurutkan berdasarkan waktu modifikasi dengan yang paling muda duluan. Menyimpan jalur dalam array menghindari pemecahan nama file di spasi. Ekspansi
Pemeriksaan selanjutnya mengharuskan file pertama lebih baru secara ketat dari yang kedua. Jika mereka memiliki waktu modifikasi yang sama, pintasan berhenti alih-alih diam memilih salah satu. zsh mendokumentasikan -nt untuk membandingkan usia file, bersama dengan pengujian file reguler, tautan simbolis, dan file yang dapat ditulis yang digunakan di sini. Ekspresi Bersyarat
Perintah tambah (append) menggunakan format printf tetap dan menyediakan entri Anda sebagai argumen %s-nya. Tanda persen dan garis miring terbalik di dalam entri karena itu diperlakukan sebagai teks, bukan instruksi pemformatan tambahan. Baris baru awal memisahkan entri dari teks yang ada; baris baru akhir mengakhinya. Jika file sudah diakhiri dengan baris baru, ini menghasilkan baris kosong antara entri. Perintah Bawaan Shell
Skrip juga membatalkan CLOBBER dan APPEND_CREATE. Dengan kedua opsi tidak disetel, zsh mendokumentasikan bahwa pengalihan tambah gagal ketika tujuan tidak ada. Hal ini penting jika file terpilih hilang sebelum penambahan: skrip seharusnya melaporkan kegagalan, bukan menciptakan pengganti di jalur lama. Pengalihan
Periksa hasil dengan file contoh
Jalankan pintasan sekali. Dengan folder contoh yang belum disentuh, tujuan yang diharapkan adalah newer.txt. Buka file itu dan periksa konten berikut. Ini adalah hasil yang diharapkan dari contoh, bukan klaim pengujian UI Mac yang selesai.
Contoh entri: buku catatan hijau.
Contoh entri: buku catatan oranye.
Buka older.txt juga. Ia seharusnya masih hanya berisi Contoh entri: buku catatan biru. Memeriksa kedua file memverifikasi dua bagian tugas: memilih satu tujuan dan mempertahankan file lain.
Coba entri sintetis kedua dengan mengubah aksi Teks ke Contoh entri: buku catatan kuning. dan jalankan lagi. Harapkan entri terpisah lagi di newer.txt, asalkan tidak ada file memenuhi syarat lain yang menjadi lebih baru. Menjalankan pintasan dua kali dengan masukan yang sama menambahkan masukan itu dua kali; program ini tidak mendeteksi entri duplikat.
Contoh ini diperiksa terhadap dokumentasi tapi tidak dieksekusi di sini: lingkungan yang tersedia tidak memiliki Pintasan macOS maupun zsh. Selesaikan pemeriksaan file sekali pakai di Mac Anda sebelum menyesuaikan penetapan folder.
Pahami folder kosong, tabrakan, dan file yang berubah
Alur kerja memerlukan tujuan yang sudah ada. Folder tidak ada, folder kosong, atau folder yang hanya berisi item tidak memenuhi syarat menghasilkan kesalahan sebelum penambahan. Ia tidak membuat file default, memilih subfolder, atau kembali ke dokumen dengan nama berbeda.
Tabrakan nama ditangani dengan menghindari pembuatan tujuan sepenuhnya. Persiapan berhenti ketika nama foldernya sudah ada. Selama eksekusi pintasan normal, file terpilih mempertahankan namanya saat ini: skrip tidak mengganti namanya atau menyimpan salinan kedua. Perilaku file-hilang terpisah dikendalikan oleh opsi tambah zsh yang terdokumentasi. Pengalihan
Gunakan urutan diagnostik kecil ini jika hasil berbeda dari harapan Anda:
- Periksa penetapan folder. Harus cocok dengan folder yang dibuat saat persiapan.
- Periksa kelayakan. Pola contoh menyertakan file reguler terlihat yang diakhiri
.txthuruf kecil di tingkat atas folder. - Periksa urutan modifikasi. Periksa
Tanggal Diubahdi Finder, ingat bahwa mengedit file bisa menjadikannya tujuan berikutnya. - Periksa stempel waktu seri (tied). Edit dan simpan file contoh yang dimaksudkan nanti, lalu periksa urutan lagi.
- Periksa koneksi aksi. Satu nilai teks harus sampai ke shell sebagai satu argumen.
Skrip diperuntukkan folder yang tidak berubah selama eksekusi. Pemilihan dan penulisan adalah operasi terpisah: proses lain bisa mengedit, mengganti, atau menambah file di antaranya. Pemeriksaan tidak mengubah alur kerja menjadi transaksi, dan kegagalan penulisan bisa meninggalkan entri tambahan parsial. Periksa file sebelum mencoba lagi setelah kesalahan tambah.
Di mana filter file native cocok
Apple mendokumentasikan Filter File sebagai aksi yang menerima konten, menyaringnya menggunakan filter, dan meneruskan hasil yang cocok ke depan. Kontrol filter umumnya bisa mengurutkan hasil dan membatasi jumlahnya. Operasi-operasi itu membantu memilih file; mereka sendiri tidak menambahkan teks. Pengenalan aksi Temukan dan Filter, Tambahkan parameter filter
Panduan ini mempertahankan pemilihan dan penulisan bersama dalam skrip shell sehingga pola file, perilaku seri, dan persyaratan file yang ada bersifat eksplisit. Jika Anda membangun rantai berbeda menggunakan aksi file, periksa Tampilkan Info setiap aksi dulu: hasil File, isi file yang dikonversi ke Teks, dan jalur yang direpresentasikan sebagai Teks adalah nilai berbeda. Apple menyediakan deskripsi aksi tersebut khusus untuk mengidentifikasi tipe masukan dan keluaran. Jelajahi daftar aksi di Pintasan pada Mac
Setelah contoh berperilaku seperti yang diharapkan, pertahankan kontrak yang sama yang jelas saat menyesuaikannya: satu entri teks, satu folder lokal yang ditunjuk, dan satu file memenuhi syarat yang paling baru secara ketat. Itu membuat setiap eksekusi bisa diprediksi dan memberi Anda tempat konkret untuk menyelidiki setiap kali pintasan berhenti.
Sumber
- Kenali Pintasan untuk macOS — Apple Developer.
- Jelajahi daftar aksi di Pintasan pada Mac — Apple Support.
- Pengaturan Lanjutan Privasi dan keamanan di Pintasan pada Mac — Apple Support.
- Urutkan dan susun item di Finder pada Mac — Apple Support.
- Alihkan masukan dan keluaran Terminal di Mac — Apple Support.
- Pengenalan aksi Temukan dan Filter di Pintasan pada Mac — Apple Support.
- Tambahkan parameter filter ke aksi Temukan dan Filter di Pintasan pada Mac — Apple Support.
- 14 Ekspansi — The Zsh Development Group.
- 12 Ekspresi Bersyarat — The Zsh Development Group.
- 17 Perintah Bawaan Shell — The Zsh Development Group.
- 7 Pengalihan — The Zsh Development Group.