เรียกใช้สคริปต์การเปลี่ยนแปลงไฟล์บน Mac OS X


8

ใครบ้างที่รู้เกี่ยวกับโปรแกรมสำหรับ Mac OS ที่คุณสามารถส่งชื่อไปยังไฟล์ที่เรียกทำงานได้และไฟล์ที่จะดูดังนั้นมันจะรันไฟล์ปฏิบัติการทุกครั้งที่ไฟล์ที่ถูกดูเปลี่ยนแปลงหรือไม่

ฉันมีสิ่งนี้ในใจ:

$ fwatch /Users/foo/doc.tex /Users/foo/run-pdflatex.sh &
  fwatch running. Listening for changes in /Users/foo/doc.tex.
$ echo "This aint no LaTeX" > doc.tex
$ fwatch: Change in /Users/foo/doc.tex detected. Running /Users/foo/run-pdflatex.sh...

คำตอบ:


6

คุณสามารถตั้งค่านี้ใช้launchd คุณต้องใช้คีย์watchpathsใน launchd plist เพื่อค้นหาการเปลี่ยนแปลงในไฟล์นั้น

ข้อมูลครบถ้วนสมบูรณ์มีอยู่ในบทความนี้ AFP548

แม้ว่าจะดูเหมือนว่าไม่ได้อยู่ระหว่างการพัฒนาอีกต่อไปLingonเป็นแอปพลิเคชั่นที่ให้วิธี GUI ในการตั้งค่าไฟล์ plistplist เหล่านี้

แก้ไข:

สรุปนี่คือสิ่งที่คุณจะทำโดยใช้เส้นทางตัวอย่างของคุณด้านบน บันทึกไฟล์ชื่อที่com.superuser.run-pdflatex.plistมีเนื้อหาต่อไปนี้เพื่อ~/Library/LaunchAgents

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
    <string>com.superuser.run-pdflatex</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/Users/foo/run-pdflatex.sh</string>
    <key>ProgramArguments</key>
    <array>
            <string>run-pdflatex.sh</string>
    </array>
    <key>WatchPaths</key>
    <array>
            <string>/Users/foo/doc.tex</string>
    </array>
    </dict>
</plist>

จากนั้นคุณพิมพ์launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plistเทอร์มินัลเพื่อโหลดดีมอนดูไฟล์ของคุณ

ข้างต้นยังไม่ผ่านการทดสอบ แต่เป็นความคิดทั่วไป


2

คุณสามารถทำได้ใน Automator อยู่ภายใต้ตัวเลือกโฟลเดอร์ในเวิร์กโฟลว์อัตโนมัติที่ฉันเชื่อ (ไม่ใช่หน้า Mac) จากนั้นคุณเพียงแนบสคริปต์ไปยังโฟลเดอร์และมันจะเริ่มทำงานทุกครั้งที่มีการเพิ่ม / เปลี่ยนแปลงไฟล์


ฉันทำตามไม่ได้ ฉันยังใหม่กับ Automator แต่เท่าที่ฉันรู้ว่าคุณไม่สามารถเลือกได้ว่าจะรันสคริปต์ของคุณเมื่อไหร่ แต่จะทำอย่างไรเมื่อมันรัน มีการทำงานของโฟลเดอร์ใน Mac OS ที่ฉันสามารถใช้ได้ แต่ฉันคิดว่า AppleScript มีเพียงการกระทำ "ในการเพิ่มรายการโฟลเดอร์ไปยัง" แต่ไม่มีอะไรที่เหมือนกับ "การเปลี่ยนรายการโฟลเดอร์ใน"
โยฮันเนส

คุณถูกต้อง @Johannes ในขณะที่มีการกระทำของโฟลเดอร์สำหรับการเพิ่มรายการโฟลเดอร์การลบรายการโฟลเดอร์ย้ายหน้าต่างโฟลเดอร์ปิดหน้าต่างโฟลเดอร์และเปิดโฟลเดอร์ไม่มีการกระทำของโฟลเดอร์สำหรับตรวจจับการเปลี่ยนแปลงไฟล์ คุณสามารถดูสิ่งนี้ได้โดยเปิดพจนานุกรม StandardAdditions.osax ใน Applescript Editor
ghoppe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.