Alat Command Line macOS yang Mungkin Belum Anda Ketahui
(saurabhs.org)- Hanya dengan Terminal, Anda bisa menangani fitur khas macOS seperti mode tidur, clipboard, Finder, Spotlight, dan pembaruan, sehingga pekerjaan berulang di GUI bisa dikurangi
caffeinate,pmset,taskpolicysecara langsung memengaruhi perilaku sistem, seperti mencegah tidur, memeriksa status daya, dan menyesuaikan prioritas eksekusi proses- Dengan
pbcopy,pbpaste,open,screencapture,say, tugas sehari-hari seperti clipboard, membuka file, tangkapan layar, dan keluaran suara jadi mudah dimasukkan ke dalam skrip sips,textutil,mdfind,mdlsdigunakan sebagai alat pemrosesan file untuk mengotomatiskan konversi gambar dan dokumen, pencarian berbasis Spotlight, serta pemeriksaan metadatanetworkQuality,networksetup,softwareupdate,system_profilermembantu memeriksa dengan cepat kualitas jaringan, Wi‑Fi/DNS, pembaruan OS, serta informasi perangkat keras dan perangkat lunak
Cakupan perintah khusus macOS
- Selain alat Unix standar, macOS juga menyertakan alat command line khusus untuk mengakses fungsi sistem operasi
- Cara penggunaan rinci tiap perintah dapat dilihat dengan
man <command> - Lingkungan acuan yang digunakan adalah macOS Sonoma
Daya, mode tidur, dan kontrol proses
-
caffeinate- Mencegah Mac masuk tidur- Menjalankan
caffeinatetanpa flag atau argumen akan membuat Mac tidak masuk ke mode tidur selama perintah berjalan caffeinate -u -t <seconds>menerapkan pencegahan tidur selama jumlah detik yang ditentukan- Menambahkan flag
-djuga mencegah layar masuk tidur - Dengan
-w <pid>, Anda dapat menunjuk proses yang sudah ada, dancaffeinateakan berakhir saat proses tersebut selesai caffeinate <command>memulai perintah yang diberikan sebagai proses baru dan mencegah tidur sampai proses itu selesai
- Menjalankan
-
pmset- Memeriksa dan mengontrol status manajemen dayapmset -gmenampilkan informasi pengaturan daya yang tersediapmset -g assertionsmenampilkan assertion terkait daya yang dibuat proses lain, berguna untuk mencari proses yang mencegah Mac tidurpmset -g thermlogmenampilkan informasi proses yang di-throttle, sehingga bisa dijadikan referensi saat menjalankan benchmarkpmset displaysleepnowsegera membuat hanya layar masuk mode tidur tanpa menidurkan seluruh sistempmset sleepnowsegera membuat seluruh sistem masuk mode tidur
-
taskpolicy- Mengontrol penjadwalan prosestaskpolicy -b <command>menjalankan perintah yang diberikan di latar belakang, dan pada Mac Apple silicon hanya akan berjalan di core efisiensitaskpolicy -b -p <pid>menurunkan proses yang sudah ada ke eksekusi latar belakangtaskpolicy -B -p <pid>menghapus status eksekusi latar belakang dari proses yang ditentukan- Pada Mac Apple silicon, setelah itu proses dapat berjalan di core efisiensi atau core performa
- Perilaku ini hanya berlaku untuk proses yang diturunkan ke latar belakang, dan tidak berlaku untuk proses yang sejak awal dimulai di latar belakang
taskpolicy -s <command>memulai perintah yang diberikan dalam status ditangguhkan, sehingga debugger dapat dipasang saat awal eksekusi
Clipboard, menjalankan aplikasi, tangkapan layar, dan keluaran suara
-
pbcopy,pbpaste- Menggunakan clipboard sistem<command> | pbcopymenyalin hasil keluaran perintah ke clipboardpbpastemengirim isi clipboard ke keluaran standar
-
open- Membuka file dan aplikasiopen -a <app> <file>membuka file yang ditentukan dengan aplikasi tertentu- Jika menambahkan flag
-g, file akan dibuka di latar belakang sambil mempertahankan fokus pada aplikasi saat ini open .membuka direktori saat ini di jendela Finder baruopen -R <file>menampilkan file yang ditentukan di jendela Finder baru
-
screencapture- Mengambil tangkapan layarscreencapture -cmengambil tangkapan layar dan menyalinnya ke clipboardscreencapture <file>menyimpan tangkapan layar ke file yang ditentukan- Jika menambahkan flag
-T <seconds>, pengambilan dilakukan setelah menunggu selama jumlah detik yang ditentukan
-
say- Teks ke suarasay <message>mengeluarkan pesan yang diberikan dalam bentuk suarasay -f input.txt -o output.aiffmembuat audiobook dari file teks yang ditentukan
Gambar, dokumen, pencarian, dan metadata
-
sips- Manipulasi gambarsips -z <height> <width> <image>mengubah ukuran gambar ke ukuran yang ditentukan dengan mengabaikan rasio aspek yang adasips -Z <size> <image>menyesuaikan sisi terpanjang ke ukuran yang ditentukan sambil mempertahankan rasio aspeksips -c <height> <width> <image>melakukan crop ke ukuran yang ditentukan berdasarkan pusat gambar aslisips -r <degrees> <image>memutar gambar sebesar sudut yang ditentukan- Perilaku default-nya adalah menimpa secara destruktif gambar input, jadi jika membutuhkan jalur keluaran lain gunakan flag
-o - File keluaran harus memiliki ekstensi file yang sama dengan gambar input
-
textutil- Konversi file dokumentextutildapat mengonversi file antara format Microsoft Word, teks biasa, rich text, dan HTMLtextutil -convert html journal.docmengonversijournal.docmenjadijournal.html- Nilai yang dapat digunakan untuk
-convertadalahtxt,html,rtf,rtfd,doc,docx
-
mdfind,mdls- Pencarian Spotlight dan metadatamdfind <query>menjalankan pencarian kata kunci Spotlight dengan kueri yang diberikanmdfind kMDItemAppStoreHasReceipt=1menemukan semua aplikasi yang dipasang dari Mac App Storemdfind -name <name>mencari semua file yang cocok dengan nama yang ditentukan- Dengan flag
-onlyin <dir>, cakupan pencarian dapat dibatasi ke direktori tertentu mdls <file-path>menampilkan semua metadata Spotlight yang terhubung ke file yang ditentukan
Jaringan, pembaruan, dan informasi sistem
-
networkQuality- Mengukur kecepatan internetnetworkQualitymenjalankan uji kecepatan internet di Mac- Menambahkan flag
-vakan menampilkan informasi yang lebih rinci - Flag
-Imenjalankan pengujian pada antarmuka jaringan tertentu
-
networksetup- Memeriksa dan mengonfigurasi pengaturan jaringannetworksetup -listnetworkserviceordermenampilkan daftar layanan jaringan yang tersedianetworksetup -getinfo <networkservice>menampilkan informasi layanan jaringan yang ditentukannetworksetup -getdnsservers <networkservice>menampilkan server DNS dari layanan jaringan yang ditentukannetworksetup -setairportnetwork <device> <network> [password]terhubung ke jaringan Wi‑Fi yang ditentukan- Dalam kebanyakan kasus, argumen
<device>adalah"en0"
-
softwareupdate- Mengelola pembaruan OSsoftwareupdate --listmenampilkan pembaruan perangkat lunak yang tersediasudo softwareupdate -iamemasang semua pembaruan yang tersediasoftwareupdate --fetch-full-installer --full-installer-version <version>mencoba mengunduh installer penuh untuk versi macOS yang ditentukan ke/Applications
-
system_profiler- Mengambil informasi sistemsystem_profilersecara default menampilkan semua informasi sistem yang tersedia, dan jumlah keluarannya umumnya sangat banyaksystem_profiler <datatype>hanya menampilkan informasi subsistem yang ditentukansystem_profiler -listDataTypesmenampilkan daftar semua subsistem yang informasinya dapat diambil- Tipe data yang berguna antara lain
system_profiler SPHardwareDataType: menampilkan ringkasan perangkat keras Mac saat ini, nama model, dan nomor serisystem_profiler SPSoftwareDataType: menampilkan ringkasan perangkat lunak Mac saat ini dan nomor versi macOS yang tepatsystem_profiler SPPowerDataType: menampilkan informasi daya dan baterai, termasuk daya AC saat ini dan jumlah siklus bateraisystem_profiler SPDeveloperToolsDataType: menampilkan alat pengembang Xcode yang sedang aktif dan versi SDK
5 komentar
Perintah terminal MacBook tingkat lanjut yang berguna dalam kehidupan (untuk orang awam)
https://www.youtube.com/watch?v=EhiqpFtmjig
Perintah CLI macOS tingkat lanjut
Saya pernah mengunggah ringkasan tulisan yang sama sekitar 7 bulan lalu, tetapi ringkasan yang ini lebih menarik untuk dibaca.. huhu
Saya malah merasa lebih baik begini, mungkin karena meski diringkas sampai sekitar tingkat ringkasan yang Anda buat, tetap tidak sulit untuk dipahami hehe
Tidak begitu...... hehe
Opini Hacker News
Dengan menggunakan sips dan iconutil bersama, kita bisa membuat file
.icnsuntuk aplikasi dari satu PNG 1024×1024 tanpa alat pihak ketigaBuat icon set dengan
mkdir MyIcon.iconset, lalu gunakansips -zuntuk menghasilkan ukuran 16/32/128/256/512 serta file@2x, setelah itu jalankaniconutil -c icns MyIcon.iconsetSebagai bonus,
.icojuga bisa dibuat denganffmpeg -i MyIcon.iconset/icon_256x256.png icon.icoNamun, karena cara
sipsmengecilkan PNG, jadi penasaran apakah lebih baik membuat versi 16px langsung dari 1024px, atau menurunkannya bertahap dari 32pxcpkita bisa memakai qlmanage lebih dulu untuk membuat PNG 1024×1024qlmanage -t -s 1024x1024 -o MyIcon.iconset/Icon1024.png icon.svgTapi setelah melihat ikon sistem macOS, sepertinya sekarang sudah tidak lagi disesuaikan manual
Dari daftar itu, yang paling disukai terutama pbcopy dan pbpaste
Saat menangani JSON yang terkompres, sangat praktis membuka iTerm lalu menjalankan
pbpaste | json_pp | pbcopy, karena output yang sudah dirapikan langsung masuk ke clipboardpbpaste | something | pbcopysering dipakai, rasanya layak dijadikan fungsi shellBisa dipakai seperti
pbfilter json_pp,pbfilter base64 -d,pbfilter sed 's/this/that/'Menjalankan
pbfiltertanpa argumen juga bisa berfungsi sebagai filter untuk menghapus formatting clipboard dan menyisakan teks polos sajaTapi ini tidak bisa dipakai untuk alias, pipeline, atau ekspresi yang rumit; perintah filternya harus berupa perintah biasa atau fungsi beserta argumennya
Misalnya, baris kosong ganda yang muncul dari copy/paste ala Windows bisa dibersihkan dengan
alias winlines="sed '/^$/{$!{N;s/\n//;};}'"danalias pbw="pbpaste | winlines | pbcopy"Di Linux juga bisa ditiru agar mirip macOS dengan
alias pbcopy='xsel --clipboard --input',alias pbpaste='xsel --clipboard --output'Di X11 ada
xclip[0], di Wayland adawl-clipboard[1], dan keduanya juga mendukung format file biner melalui parsing header atau pengaturan tipe MIME eksplisitJadi kita bisa menyalin gambar dari terminal lalu menempelkannya ke program GUI seperti browser atau klien chat, atau sebaliknya, dan ini juga berguna untuk skrip shell otomatisasi desktop
Di macOS perlu jalan memutar dengan memanggil AppleScript lewat
osascriptdan memakaiset the clipboard to...[0] https://github.com/astrand/xclip
[1] https://github.com/bugaevc/wl-clipboard
Saat menyalin teks di ponsel, kita bisa langsung mengambilnya di command line Mac dengan
pbpastepbpaste | vipe | pbcopyDi sini vipe adalah utilitas yang menyisipkan editor, biasanya vim, di tengah pipe, dan bisa dilihat di https://joeyh.name/code/moreutils/
Memang bukan alat command line, tapi Network Link Conditioner juga sangat bagus
Kita bisa mensimulasikan jaringan yang sangat buruk dengan menambahkan latensi, bandwidth, packet loss, dan sebagainya, sehingga berguna untuk pengujian
Bahkan dalam rapat yang mewajibkan kamera menyala, kita bisa sengaja membuat koneksi berantakan agar video tampak pecah-pecah dan suara seperti robot, lalu setelah semua orang meminta video dimatikan, koneksi bisa “pulih” secara ajaib
https://developer.apple.com/download/all/
https://tldp.org/HOWTO/Traffic-Control-HOWTO/components.html
Ia menetapkan aturan untuk menyuntikkan latensi paket atau menjatuhkan paket dengan persentase tertentu sesuai profil
Di macOS, hal serupa—bahkan lebih banyak lagi—bisa dilakukan dengan
dnctldanpfctlafplay untuk memutar audio juga wajib disebut
Dengan ini, kita bisa membuat pemutar MP3 baris perintah sederhana
Ada juga utilitas
sayuntuk sintesis suara, yang mendukung format TUNE sehingga melodi dan timing keseluruhan ujaran bisa diatur dan dibuat terdengar seolah punya emosiApple's Speech Synthesis Programming Guide ada di https://josh8.com/blog/img/speech-synthesis.pdf, dan tulisan terkait dirangkum di https://josh8.com/blog/commandline-audio-mac.html
Generasi terakhir sintesis suara yang mendukungnya adalah suara Alex yang disertakan pada 2007, dan tampaknya sangat kecil kemungkinan kita akan melihatnya lagi
Kontrol presisi terhadap sintesis dan kealamian pada dasarnya berada dalam hubungan yang saling tegang, dan yang terakhir jauh lebih bernilai
say -v '?'Kalau ingin meningkatkan produktivitas atau saat presentasi, sembunyikan semua ikon dan folder di desktop
Jalankan
defaults write com.apple.finder CreateDesktop 0lalukillall Finderuntuk menyembunyikannya, dan ubah nilainya menjadi1agar muncul lagiSaya juga membuat alias bash untuk toggle ini, dan gist-nya ada di https://gist.github.com/berndverst/6f58c0d6aedddb6c06c23e57d...
Meski begitu, saya tetap sering memakai
~/Desktopsehingga itu menjadi salah satu dari dua folder yang saya taruh di Dock; satunya lagi adalah~/DownloadsDi sisi lain, masuknya Stacks ke desktop macOS adalah hal yang bagus, dan ini fitur yang selalu saya tunjukkan kepada orang yang desktop-nya berantakan penuh file
Bagus kalau digabung dengan pengaturan lain yang mungkin dibutuhkan saat presentasi
Daftar yang bagus, dan ada juga hidutil
https://developer.apple.com/library/archive/technotes/tn2450...
Misalnya, di keyboard PC Anda bisa mengubah tombol
Ins, yang di macOS hampir tidak berguna, menjadi tombol sepertiPC Execute, lalu menangkapnya di Keyboard Maestro untuk dipetakan ulanghidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000035}]}', Anda bisa mengubah tombolparagraphdi kiri atas pada keyboard Eropa menjadi backtick yang lebih bergunahttps://hidutil-generator.netlify.app/
Misalnya, Anda bisa melepas drive USB dengan
hdiutil detach /Volumes/some-usb-drive, atau membuat ISO denganhdiutil makehybrid -joliet -o foo.iso ./srcfolder/Beberapa tahun lalu saya pernah membuat skrip yang mencari sesuatu dalam bongkahan data besar dan memberi tahu saat selesai, lalu saya menaruh perintah say di bagian akhirnya
Saya lupa soal itu lalu tertidur, dan beberapa jam kemudian saya terbangun kaget oleh suara dari kantor rumah yang terdengar seperti “penyusup” sedang berbicara kepada kaki tangannya; saya baru benar-benar lega setelah sadar apa yang terjadi
pushyang menerima judul dan isi opsionalEnak dipakai seperti
./longRunningCommand && push "Task Done" "Here is a body", dan juga saya gunakan bersama skripbeepyang hanya membunyikan suara saat selesai ketika saya sedang berada di depan komputersaySaya belum pernah melihatnya dipakai sungguhan, tapi saya menantikan suatu hari ada thread Twitter yang dimulai dengan “Saya memakai modul msf yang memanggil
saydi laptop pelanggan”Karena itu saya menambahkan skrip penyelesaian perintah fish yang membunyikan bip lewat
afplayjika tugasnya memakan waktu lebih dari 5 detikIni membantu saya kembali fokus pada tugas yang “cukup lama untuk terlupakan”
Utilitas baris perintah diskutil di macOS juga layak dipuji
Hari ini saya mengalami masalah dengan sebagian slice disk, dan Disk Utility grafis macOS tidak bisa memperbaikinya; itu adalah sisa-sisa dari saat dulu mencoba menjalankan Asahi Linux
Saya menduga pasti ada cara menyelesaikannya lewat CLI
diskutil, dan saya menemukan solusinya di thread berikuthttps://apple.stackexchange.com/questions/411544/cant-reclai...
Sekarang seluruh disk bisa saya gunakan lagi sepenuhnya di macOS
diskutilmemang hebat, tetapi keadaan Disk Utility.app sekarang benar-benar menyedihkanSejak transisi APFS, aplikasi ini seperti tidak terurus dengan baik, dan ada kasus ketika
diskutilbisa melakukan sesuatu tetapi aplikasi GUI-nya gagal totalSebelum perombakan antarmuka, ini adalah alat yang tangguh yang setidaknya memberi tahu alasan kegagalan; sekarang rasanya seperti antarmuka LEGO Duplo untuk bayi yang nyaris cuma bisa memformat flash drive
Saat tidak ingat perintah atau parameternya, um juga layak dicoba
https://github.com/promptops/cli
Misalnya, jika memasukkan
um prevent my mac from sleeping for 30m, hasilnya akan seperticaffeinate -u -t 1800open adalah perintah sederhana dan bagus yang selalu dipakai
Buat alias seperti
alias tab='open . -a iterm',alias phpstorm='open -a "PhpStorm"',alias smerge='open -a "Sublime Merge"', lalu dipakai lebih sering daripada dialog Open/Recents di masing-masing aplikasiopen -a ...terasa buruk selama bertahun-tahun karena Apple tidak memperbarui definisi completionSolusinya saya tinggalkan di jawaban Stack Overflow ini: https://stackoverflow.com/a/63097652
-nIni memungkinkan menjalankan beberapa instance dari aplikasi yang sama, dan dulu secara pribadi merupakan utilitas yang paling sering saya pakai
Sekarang frekuensi pemakaiannya menurun karena makin sedikit aplikasi dengan masalah desain yang separah itu
Anda bisa memakai
/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smergedan/Applications/Sublime Text.app/Contents/SharedSupport/bin/sublhttps://github.com/davatorium/rofi
Tampilannya seperti https://i.imgur.com/Hm9TGeV.jpg
Di terminal VS Code, jika memakai alias
o, akan terbuka dari lokasi saat ini, lalu dari sana bisa mencari file dan membukanya di editoralias finder='open .'