Muhtemelen Bilmediğiniz macOS Komut Satırı Araçları
(saurabhs.org)- Yalnızca Terminal ile uyku modu, pano, Finder, Spotlight ve güncellemeler gibi macOS’e özgü özellikler yönetilebilir; bu da GUI’deki tekrarlayan işleri azaltabilir
caffeinate,pmset,taskpolicy; uyku modunu engelleme, güç durumunu kontrol etme ve süreç çalıştırma önceliğini ayarlama gibi sistem davranışı üzerinde doğrudan etkili olurpbcopy,pbpaste,open,screencapture,saykullanıldığında pano, dosya açma, ekran görüntüsü ve sesli çıktı gibi günlük işler betiklere kolayca eklenebilirsips,textutil,mdfind,mdls; görüntü ve belge dönüştürme, Spotlight tabanlı arama ve meta veri kontrolünü otomatikleştiren dosya işleme araçları olarak kullanılabilirnetworkQuality,networksetup,softwareupdate,system_profiler; ağ kalitesi, Wi‑Fi/DNS, OS güncellemeleri ve donanım/yazılım bilgilerini hızlıca denetlemeyi sağlar
macOS’e Özgü Komutların Kapsamı
- macOS, standart Unix araçlarının yanı sıra işletim sistemi özelliklerine erişen özel komut satırı araçları da içerir
- Her komutun ayrıntılı kullanımını
man <command>ile görebilirsiniz - Referans ortam macOS Sonoma’dır
Güç, Uyku Modu ve Süreç Kontrolü
-
caffeinate- Mac’in Uykuya Geçmesini Engellemecaffeinatebayrak veya argüman olmadan çalıştırıldığında, komut çalıştığı sürece Mac uyku durumuna geçmezcaffeinate -u -t <seconds>, belirtilen saniye boyunca uyku engelleme uygular-dbayrağı eklenirse ekranın uykuya geçmesi de engellenir-w <pid>ile mevcut bir süreç belirtilirse, o süreç sonlandığındacaffeinatede bitercaffeinate <command>, verilen komutu yeni bir süreç olarak başlatır ve o süreç bitene kadar uyku modunu engeller
-
pmset- Güç Yönetimi Durumunu Görüntüleme ve Kontrol Etmepmset -g, kullanılabilir güç ayarı bilgilerini çıktılarpmset -g assertions, diğer süreçlerin oluşturduğu güçle ilgili assertion’ları gösterir; bu da Mac’in uyumasını engelleyen süreci bulmak için yararlıdırpmset -g thermlog, throttling uygulanan süreç bilgilerini gösterir; benchmark çalıştırırken faydalı olabilirpmset displaysleepnow, tüm sistemi uyutmadan yalnızca ekranı hemen uyku moduna geçirirpmset sleepnow, tüm sistemi hemen uyku moduna geçirir
-
taskpolicy- Süreç Zamanlamasını Kontrol Etmetaskpolicy -b <command>, verilen komutu arka planda çalıştırır; Apple silicon Mac’lerde yalnızca verimlilik çekirdeklerinde çalışırtaskpolicy -b -p <pid>, mevcut bir süreci arka plan çalışmasına düşürürtaskpolicy -B -p <pid>, belirtilen sürecin arka plan çalıştırma durumunu kaldırır- Apple silicon Mac’lerde ardından verimlilik veya performans çekirdeklerinde çalışabilir
- Bu davranış yalnızca sonradan arka plana düşürülen süreçler için geçerlidir; baştan arka planda başlatılan süreçlere uygulanmaz
taskpolicy -s <command>, verilen komutu askıya alınmış durumda başlatır; böylece başlangıç anında debugger bağlanabilir
Pano, Uygulama Açma, Ekran Görüntüsü ve Sesli Çıktı
-
pbcopy,pbpaste- Sistem Panosunu Kullanma<command> | pbcopy, komut çıktısını panoya kopyalarpbpaste, pano içeriğini standart çıktıya gönderir
-
open- Dosya ve Uygulama Açmaopen -a <app> <file>, belirtilen dosyayı belirli bir uygulamayla açar-gbayrağı eklenirse, mevcut uygulamanın odağını koruyarak dosyayı arka planda açaropen ., mevcut dizini yeni bir Finder penceresinde açaropen -R <file>, belirtilen dosyayı yeni bir Finder penceresinde gösterir
-
screencapture- Ekran Görüntüsü Almascreencapture -c, ekran görüntüsü alır ve panoya kopyalarscreencapture <file>, ekran görüntüsünü belirtilen dosyaya kaydeder-T <seconds>bayrağı eklenirse, belirtilen saniye kadar bekledikten sonra çekim yapar
-
say- Metni Sese Dönüştürmesay <message>, verilen mesajı sesli olarak okursay -f input.txt -o output.aiff, belirtilen metin dosyasından sesli kitap oluşturur
Görüntü, Belge, Arama ve Meta Veri
-
sips- Görüntü İşlemesips -z <height> <width> <image>, mevcut en-boy oranını yok sayarak görüntüyü belirtilen boyuta yeniden ölçeklendirirsips -Z <size> <image>, en-boy oranını koruyarak en uzun kenarı belirtilen boyuta getirirsips -c <height> <width> <image>, orijinal görüntünün merkezini baz alarak belirtilen boyutta crop uygularsips -r <degrees> <image>, görüntüyü belirtilen açı kadar döndürür- Varsayılan davranış, giriş görüntüsünün üzerine yıkıcı biçimde yazmak olduğundan farklı bir çıktı yolu gerekiyorsa
-obayrağı kullanılmalıdır - Çıktı dosyası, giriş görüntüsüyle aynı dosya uzantısına sahip olmalıdır
-
textutil- Belge Dosyası Dönüştürmetextutil, dosyaları Microsoft Word, düz metin, rich text ve HTML formatları arasında dönüştürebilirtextutil -convert html journal.doc,journal.docdosyasınıjournal.htmldosyasına dönüştürür-convertiçin kullanılabilecek değerlertxt,html,rtf,rtfd,doc,docx’tir
-
mdfind,mdls- Spotlight Araması ve Meta Verimdfind <query>, verilen sorguyla Spotlight anahtar kelime araması yaparmdfind kMDItemAppStoreHasReceipt=1, Mac App Store’dan yüklenen tüm uygulamaları bulurmdfind -name <name>, belirtilen adla eşleşen tüm dosyaları arar-onlyin <dir>bayrağıyla arama kapsamı belirli bir dizinle sınırlandırılabilirmdls <file-path>, belirtilen dosyaya bağlı tüm Spotlight meta verilerini çıktılar
Ağ, Güncellemeler ve Sistem Bilgisi
-
networkQuality- İnternet Hızını ÖlçmenetworkQuality, Mac üzerinde internet hız testi çalıştırır-vbayrağı eklenirse daha ayrıntılı bilgi görülebilir-Ibayrağı, testi belirli bir ağ arayüzünde çalıştırır
-
networksetup- Ağ Ayarlarını Görüntüleme ve Yapılandırmanetworksetup -listnetworkserviceorder, kullanılabilir ağ servislerinin listesini çıktılarnetworksetup -getinfo <networkservice>, belirtilen ağ servisinin bilgilerini gösterirnetworksetup -getdnsservers <networkservice>, belirtilen ağ servisinin DNS sunucularını çıktılarnetworksetup -setairportnetwork <device> <network> [password], belirtilen Wi‑Fi ağına bağlanır- Çoğu durumda
<device>argümanı"en0"olur
-
softwareupdate- OS Güncellemelerini Yönetmesoftwareupdate --list, kullanılabilir yazılım güncellemelerini çıktılarsudo softwareupdate -ia, kullanılabilir tüm güncellemeleri kurarsoftwareupdate --fetch-full-installer --full-installer-version <version>, belirtilen macOS sürümünün tam yükleyicisini/Applicationsdizinine indirmeye çalışır
-
system_profiler- Sistem Bilgisi Sorgulamasystem_profiler, varsayılan olarak kullanılabilir tüm sistem bilgilerini çıktılar ve çıktı genellikle oldukça büyüktürsystem_profiler <datatype>, yalnızca belirtilen alt sistem bilgisini çıktılarsystem_profiler -listDataTypes, bilgi alınabilecek tüm alt sistemlerin listesini gösterir- Yararlı veri türleri şunlardır
system_profiler SPHardwareDataType: mevcut Mac’in donanım özetini, model adını ve seri numarasını çıktılarsystem_profiler SPSoftwareDataType: mevcut Mac’in yazılım özetini ve tam macOS sürüm numarasını çıktılarsystem_profiler SPPowerDataType: mevcut AC güç miktarı ve pil döngü sayısı dahil olmak üzere güç ve pil bilgilerini çıktılarsystem_profiler SPDeveloperToolsDataType: şu anda etkin Xcode geliştirme araçlarını ve SDK sürümlerini çıktılar
5 yorum
Hayatta işe yarayan gelişmiş MacBook terminal komutları (genel kullanıcılar için)
https://www.youtube.com/watch?v=EhiqpFtmjig
macOS’un gelişmiş CLI komutları
Aynı yazının özetini ben de 7 ay önce paylaşmıştım, ama buradaki özet daha okunası olmuş.. hüzünlü yüz
Özetlediğiniz kadar kısaltılsa da anlamakta zorlanmıyorum; sanırım bu hali daha da iyi olmuş haha
Hayır değil...... haha
Hacker News yorumları
sips ve iconutil birlikte kullanılırsa üçüncü parti araç olmadan tek bir 1024×1024 PNG’den uygulamalar için
.icnsdosyası oluşturulabilirmkdir MyIcon.iconsetile ikon seti oluşturup,sips -zile 16/32/128/256/512 boyutları ve@2xdosyaları üretildikten sonraiconutil -c icns MyIcon.iconsetçalıştırmak yeterliBonus olarak
ffmpeg -i MyIcon.iconset/icon_256x256.png icon.icoile.icoda oluşturulabilirAncak
sips’in PNG küçültme yöntemi nedeniyle 16px sürümünü doğrudan 1024px’ten oluşturmanın mı yoksa 32px’ten kademeli olarak küçültmenin mi daha iyi olduğu merak konusucpyerine önce qlmanage kullanılarak 1024×1024 PNG oluşturulabilirqlmanage -t -s 1024x1024 -o MyIcon.iconset/Icon1024.png icon.svgYine de macOS sistem ikonlarına bakınca artık bunların elle ayarlanıyor gibi görünmediği söylenmiş
Listedekiler arasında özellikle pbcopy ve pbpaste seviliyor
Sıkıştırılmış JSON ile uğraşırken iTerm’e geçip
pbpaste | json_pp | pbcopyçalıştırmak çok kullanışlı; biçimlendirilmiş çıktı doğrudan panoya gidiyorpbpaste | something | pbcopykalıbı sık kullanıldığından bunu bir shell fonksiyonu yapmak mantıklıpbfilter json_pp,pbfilter base64 -d,pbfilter sed 's/this/that/'gibi kullanılabilirArgümansız
pbfilterçalıştırılırsa panodaki biçimlendirmeyi kaldırıp yalnızca düz metin bırakan bir filtre gibi de davranabilirAncak alias’lar, pipeline’lar ve karmaşık ifadelerle çalışmaz; filtre komutu normal bir komut ya da fonksiyon ve onun argümanları olmalıdır
Örneğin Windows tarzı kopyala/yapıştırdan kaynaklanan çift boş satırlar
alias winlines="sed '/^$/{$!{N;s/\n//;};}'"vealias pbw="pbpaste | winlines | pbcopy"ile temizlenebilirLinux’ta da
alias pbcopy='xsel --clipboard --input',alias pbpaste='xsel --clipboard --output'ile macOS’e benzer bir deneyim taklit edilebilirX11 için
xclip[0], Wayland içinwl-clipboard[1] var ve başlık ayrıştırma ya da açık MIME türü ayarlama yoluyla ikili dosya biçimlerini de destekliyorlarBu sayede terminalden görsel kopyalayıp tarayıcı veya sohbet istemcisi gibi GUI programlarına yapıştırmak ya da tersini yapmak mümkün oluyor; ayrıca masaüstü otomasyon shell script’lerinde de faydalı
macOS’te ise
osascriptile AppleScript çağırıpset the clipboard to...kullanmak gibi bir dolambaç gerekiyor[0] https://github.com/astrand/xclip
[1] https://github.com/bugaevc/wl-clipboard
Telefonda metin kopyalayınca bunu Mac komut satırında doğrudan
pbpasteile almak mümkünpbpaste | vipe | pbcopykullanılıyorBuradaki vipe, pipe’ın ortasına bir düzenleyici, genelde vim, ekleyen bir yardımcı araç ve https://joeyh.name/code/moreutils/ adresinde görülebilir
Bir komut satırı aracı değil ama Network Link Conditioner da gerçekten çok iyi
Gecikme, bant genişliği, paket kaybı gibi değerler ekleyerek çok kötü bir ağı simüle edebildiği için testlerde faydalı
Kamerayı mutlaka açmanızın beklendiği toplantılarda bağlantıyı bilerek berbat hale getirip blok blok görüntü ve robotik ses oluşturduktan sonra herkes videoyu kapatmanızı isteyince “sihirli şekilde” düzeltebilirsiniz
https://developer.apple.com/download/all/
https://tldp.org/HOWTO/Traffic-Control-HOWTO/components.html
Profiline göre paket gecikmesi ekleyen veya belirli oranda paket düşüren kurallar ayarlıyor
macOS’te
dnctlvepfctlile benzer işler, hatta daha fazlası da yapılabiliyorSes çalma için afplay de mutlaka anılmalı
Bununla basit bir komut satırı MP3 çaları yapılabilir
Ayrıca konuşma sentezi için
sayyardımcı programı da var; TUNE biçimini desteklediği için bir ifadenin tüm melodisini ve zamanlamasını ayarlayıp duyguluymuş gibi duyulmasını sağlayabiliyorApple’ın Speech Synthesis Programming Guide’ı https://josh8.com/blog/img/speech-synthesis.pdf adresinde, ilgili yazı da https://josh8.com/blog/commandline-audio-mac.html adresinde derlenmiş
Bunu destekleyen son nesil konuşma sentezi, 2007’de eklenen Alex sesiydi ve bunu tekrar görecekmişiz gibi görünmüyor
Sentezi hassas biçimde kontrol etmek ile doğallık arasında özünde bir gerilim var ve ikincisi çok daha değerli
say -v '?'şeklindedirVerimliliği artırmak istediğimde ya da sunum yaparken masaüstündeki tüm simge ve klasörleri gizliyorum
defaults write com.apple.finder CreateDesktop 0sonrasındakillall Finderçalıştırılırsa gizleniyor, değeri1yapınca yeniden görünüyorBunu açıp kapatan bir bash takma adım da var; gist burada: https://gist.github.com/berndverst/6f58c0d6aedddb6c06c23e57d...
Yine de
~/Desktopklasörünü sık kullanıyorum; Dock’a koyduğum iki klasörden biri o, diğeri de~/DownloadsÖte yandan macOS masaüstüne Stacks gelmesi harikaydı; masaüstü dosyalarla karmakarışık olan herkese bunu hep gösteriyorum
Sunum sırasında gerekebilecek başka ayarlarla birlikte gruplamak iyi olur
Güzel bir liste; bir de hidutil var
https://developer.apple.com/library/archive/technotes/tn2450...
Örneğin PC klavyedeki, macOS’ta neredeyse işe yaramayan
InstuşunuPC Executegibi bir tuşa çevirip sonra Keyboard Maestro ile yakalayarak yeniden eşleyebilirsinizhidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000035}]}'ile Avrupa tipi klavyedeki sol üstte bulunanparagraphtuşunu daha kullanışlı bir backtick tuşuna çevirebilirsinizhttps://hidutil-generator.netlify.app/
Örneğin
hdiutil detach /Volumes/some-usb-driveile bir USB sürücüsünü ayırabilir ya dahdiutil makehybrid -joliet -o foo.iso ./srcfolder/ile ISO oluşturabilirsinizBirkaç yıl önce büyük bir veri yığınında bir şey arayan ve tamamlanınca haber veren bir betik yazarken sonuna say komutunu koymuştum
Bunu unutup uyuyakaldım; birkaç saat sonra ev ofisinden, bir “davetsiz misafir”in suç ortağıyla konuşuyormuş gibi gelen bir sesle irkilerek uyandım ve ne olduğunu anlayınca ancak o zaman ciddi biçimde rahatladım
pushadlı bash betiği yapmıştım./longRunningCommand && push "Task Done" "Here is a body"gibi kullanmak güzeldi; bilgisayar başındayken tamamlandığını haber vermek için sadece ses çıkaran birbeepbetiğiyle de birlikte kullanıyordumsaykomutunu çalıştıran bir Metasploit modülü de varBunu gerçekten kullananı görmedim ama bir gün “müşteri dizüstü bilgisayarında
sayçağıran bir msf modülü kullandım” diye başlayan bir Twitter zinciri görmeyi bekliyorumBu yüzden iş 5 saniyeden uzun sürdüyse
afplayile bip sesi çalan bir fish komut tamamlama betiği ekledim“Tam unutacak kadar uzun” süren işlerde yeniden odaklanmaya yardımcı oluyor
macOS’un diskutil komut satırı yardımcı programı da övgüyü hak ediyor
Bugün diskin bazı dilimleriyle ilgili bir sorun yaşadım; macOS’un grafiksel Disk Utility aracı bunu düzeltemedi ve bu, daha önce Asahi Linux denememden kalan bir kalıntıydı
diskutilCLI ile bunu çözmenin bir yolu olmalı diye düşündüm ve çözümü şu başlıkta buldumhttps://apple.stackexchange.com/questions/411544/cant-reclai...
Artık tüm diski tekrar macOS içinde kullanabiliyorum
diskutilharika ama Disk Utility.app’in bu hale gelmesi içler acısıAPFS geçişinden sonra doğru düzgün bakım görmedi ve
diskutilin yapabildiği şeylerde GUI uygulaması bazen tamamen başarısız oluyorArayüz yeniden tasarlanmadan önce, başarısız olsa bile nedenini söyleyen sağlam bir araçtı; şimdi ise ancak flaş sürücü biçimlendiren, bebeklere yönelik LEGO Duplo benzeri bir arayüze dönüştü
Komutu veya parametreleri hatırlamadığınızda um da bakmaya değer
https://github.com/promptops/cli
Örneğin
um prevent my mac from sleeping for 30myazarsanızcaffeinate -u -t 1800gibi bir çıktı veriropen her zaman kullandığım basit ve iyi bir komut
alias tab='open . -a iterm',alias phpstorm='open -a "PhpStorm"',alias smerge='open -a "Sublime Merge"'gibi tanımlayıp, her uygulamanın Open/Recents iletişim kutularından daha sık kullanıyorum-nAynı uygulamayı birden fazla instance olarak çalıştırmayı sağlar ve eskiden kişisel olarak en sık kullandığım yardımcı araçlardan biriydi
Bugünlerde bu kadar ciddi tasarım sorunu olan uygulamalar azaldığı için kullanım sıklığım da düştü
open -a ...için sekme ile otomatik tamamlama, Apple tamamlama tanımını güncellemediği için yıllardır korkunç hissettiriyorGeçici çözümü şu Stack Overflow yanıtına yazdım: https://stackoverflow.com/a/63097652
/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smergeve/Applications/Sublime Text.app/Contents/SharedSupport/bin/sublkullanılabilirhttps://github.com/davatorium/rofi
Görünümü https://i.imgur.com/Hm9TGeV.jpg gibi
VS Code terminalinde
otakma adını kullanırsanız bulunduğunuz konumdan açılır; oradan dosyayı bulup editörde açabilirsinizalias finder='open .'kullanabilirsiniz