ฉันต้องการสำรวจ tweaks ใหม่ซึ่งสามารถทำได้โดยคำสั่ง "defaults write" ใน OS X (ML)
ฉันจะทำอย่างไรเพื่อค้นหาพวกเขาด้วยตัวเองมากกว่าที่จะล่าสัตว์ออนไลน์เพื่อปรับแต่งที่รู้จัก
ฉันต้องการสำรวจ tweaks ใหม่ซึ่งสามารถทำได้โดยคำสั่ง "defaults write" ใน OS X (ML)
ฉันจะทำอย่างไรเพื่อค้นหาพวกเขาด้วยตัวเองมากกว่าที่จะล่าสัตว์ออนไลน์เพื่อปรับแต่งที่รู้จัก
คำตอบ:
Disclaimer:ผมผู้เขียน~/.osx
, คอลเลกชันของdefaults write
การตั้งค่า นี่เป็นเทคนิคที่ฉันใช้ในการค้นหาการตั้งค่า แจ้งให้เราทราบหากมีวิธีที่ดีกว่า / ง่ายกว่าที่ฉันไม่ได้พูดถึงที่นี่!
สำหรับการตั้งค่าที่ไม่ซ่อนส่วนใหญ่นี่คือวิธีที่คุณสามารถค้นหาคีย์การตั้งค่าที่ถูกต้องใน Terminal.app:
defaults read > a
# Change the setting
defaults read > b
diff a b
สำหรับการตั้งค่าที่ซ่อนอยู่มันจะยากขึ้น คุณสามารถใช้strings
ยูทิลิตีบรรทัดคำสั่งบนไบนารีที่สามารถเรียกใช้งานได้และดูว่าข้อความผลลัพธ์ใด ๆ ดูเหมือนเป็นคีย์การกำหนดค่าตามความชอบหรือไม่ เช่น:
strings /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
นี่เป็นอีกตัวอย่างที่จะค้นหา.framework
ไฟล์ทั้งหมดใน/System/Library/Frameworks/
และกรองผลลัพธ์:
strings /System/Library/Frameworks/*.framework/Versions/Current/* /System/Library/Frameworks/*/Frameworks/*/Versions/Current/* 2> /dev/null | grep -E '^[a-zA-Z0-9_.-]{10,80}$' | sort | uniq
นอกจากนี้ยังมีเครื่องมือที่เรียกว่าGDBซึ่งสามารถใช้เพื่อค้นหาการตั้งค่าที่ซ่อนอยู่
defaults read;
ทำงานได้ดีที่นี่
คำสั่งสตริงอื่น:
for f in $(mdfind kMDItemContentType==public.unix-executable -onlyin /System/Library/); do strings $f 2> /dev/null | grep -E '^[[:alnum:]_.-]{10,80}$' | grep ^Apple | sort -u | sed "s/^/${f##*/} /g"; done
sudo opensnoop -n cfprefsd
แสดงรายการคุณสมบัติที่จะแก้ไข คุณสามารถใช้fseventerเพื่อแสดงการเปลี่ยนแปลงระบบไฟล์อื่น ๆ แบบเรียลไทม์
ค่าเริ่มต้นมีคำสั่งย่อย find:
$ defaults find nsquitalw
Found 1 keys in domain 'Apple Global Domain': {
NSQuitAlwaysKeepsWindows = 1;
}
ไฟล์ส่วนหัวมักจะมีคำจำกัดความสำหรับคีย์การตั้งค่า:
grep PreferenceKey -r ~/Code/Source/WebKit/ | grep '\.h:'
สิ่งที่ฉันคิดจากคำถามของคุณคือคุณต้องการสำรวจ tweaks / การตั้งค่าของแอปพลิเคชัน คุณสามารถอ่านค่ากำหนดของแอพได้ด้วยคำสั่งที่ไม่สำคัญ
defaults read NSGlobalDomain
หรือ
defaults read com.google.Chrome
เพื่ออ่านการตั้งค่าที่สามารถเขียนได้ของ Chrome จากคำสั่งเริ่มต้นการเขียนที่คุณขอ