Míg a számítógépen található különféle programok és szolgáltatások kényelmet nyújtanak Önnek, előfordulhat, hogy előfordulhat, hogy ismétlődő feladatokat kell végrehajtania a rendszer különböző eszközeivel és programjaival. Ezekben az esetekben a szkripteszközök használata kivételesen hasznos lehet. A programozással ellentétben a szkriptelés akkor történik, amikor egy sor aktuális eszközt és segédprogramot használ, és automatizálja a parancsokkal való interakciókat. Például a Javascript segítségével megmondhatja a böngészőnek, hogy módosítsa a HTML-tartalom megjelenítésének módját, vagy az Automator segítségével meg tudja mondani a Findernek, hogy bizonyos módon szervezzen fájlokat.
Nemrégiben a CNET-nél egy kolléga egyedülálló helyzetbe került, ahol azt akarta, hogy a Mac automatikusan megváltoztassa a Safari letöltési mappáját egy külső meghajtó jelenléte alapján. Az ötlet az lenne, ha a Safari letölti a letöltött fájlokat az alapértelmezett letöltési könyvtárba, de ha egy külső külső meghajtót (például "Letöltések") csatol, akkor a rendszer automatikusan átkapcsolja a Safari letöltési könyvtárát a külső meghajtóra, mivel nehézkes lehet manuálisan változtatni.
Sajnos a Safari önmagában nem tudja ezt megtenni, de az OS X rendelkezik erőforrásokkal, amelyek erre használhatók, és az AppleScript használatával szkriptethetők a Safari alkalmazás és néhány OS X szolgáltatás kezelésére, a Shell parancsfájlokat olyan műveletek végrehajtására, amelyek nem használják az alkalmazás kezelőfelülete és a rendszerindító csak a parancsfájlok futtatásához, ha meghajtó van csatlakoztatva.
Kezdetben, amikor ezt a problémát gondolkodom, a megoldás meglehetősen egyszerűnek tűnik, és a következő forgatókönyv jó választ adhat:
- Állítsa be a parancsfájlt a parancs futtatásához: "alapértelmezések írják com.apple.Safari DownloadFolder NAME", hogy megváltoztassa a letöltési mappát a "NAME" által megadott helyre
- Csak akkor futtassa ezt a parancsfájlt a rendszerindító segítségével, ha egy adott meghajtó van csatlakoztatva.
- Ismételje meg ezt a hasonló parancsot, amely egy másik helyre mutat, amikor a meghajtó már nincs csatlakoztatva.
Bár ez az alapvető megközelítés ésszerűnek tűnik, több okból sem fog működni. Először is, ha a Safari fut, akkor az egyetlen módja annak, hogy megváltoztassa preferenciáit a programon keresztül. Amikor a program betölti, akkor elolvassa a beállításokat a RAM-ba és kezelni fogja a beállításokat, így ha a preferenciafájlt a TextEdit vagy a "Defaults" parancs segítségével szerkeszti, akkor a program nem lesz hatással. Továbbá a Safari visszaállítja a beállításait a lemezre, amikor kilép, ami felülírja a módosított beállításokat.
Ezen túlmenően ez a megközelítés feltételezi, hogy a rendszernek rendelkezésre állnak olyan erőforrások, amelyek egy adott meghajtó jelenlétét figyelemmel kísérik, és a parancsfájlt, amikor a meghajtó jelen van, ami nem így van. A rendszer figyelemmel kíséri, hogy a meghajtók csatlakoztatva vannak-e, de további parancsfájlok szükségesek a meghajtó nevének megadásához, hogy ellenőrizze, hogy egy meghajtó van-e csatlakoztatva.
Végül számos árnyalatot kell figyelembe venni. Például, mivel maga a Safari kell használni a beállításainak megváltoztatásához futás közben, ezzel kényszeríti azt, hogy az elsődleges alkalmazás legyen, ahol marad, kivéve, ha először a szkript észleli a legfontosabb alkalmazást, és visszaállítja azt, amikor a Safari módosításai megtörténnek. teljes. Ezenkívül nem szeretné, hogy a parancsfájl futtassa és az aktív programot körülveszi, amikor bármilyen véletlen meghajtó van csatlakoztatva.
Ezek miatt a parancsfájlnak a következő öt szempontot kell tartalmaznia:
- Csak akkor induljon el, ha egy új meghajtó van csatlakoztatva
- Csak akkor módosítsa a beállításokat, ha a "Letöltések" (vagy a megnevezett név) nevű meghajtó van csatlakoztatva
- Feltételesnek kell lennie abban, hogy megváltoztassa a beállításokat, hogy a Safari jelenleg elindult-e
- Csak akkor módosítsa a beállításokat, ha új kívánt letöltési hely van jelen
- Képes visszaállítani az elsődleges alkalmazást, ha a parancsfájlnak Safari-ra kell váltania
Ezen opciók végrehajtásához két parancsfájlt kell létrehozni. Az első a rendszerindító "launchd" rendszerre vonatkozik, amelyet a rendszer meghajtó-rögzítési pontjainak figyelemmel kísérésére használnak, hogy meggyőződjenek arról, hogy egy új meghajtót csatlakoztattak-e vagy sem. Ha igen, akkor elindítja a meghajtó nevét ellenőrző szkriptet, meglátja, hogy fut-e a Safari, vagy csak akkor változtatja meg a Safari beállításait, ha azok eltérnek a külső meghajtó elsődleges kiválasztásától, de ha nincs jelen, akkor használja az alapértelmezett letöltési mappát .
Script 1: LaunchAgent a meghajtók felügyeletéhez
Az első parancsfájl a rendszerindító számára készült, amelyet Launch Agent-nek hívnak. A létrehozásához nyissa meg a terminált, és írja be a következő parancsot (az egyszerűség érdekében másolja és illessze be):
érintse meg a ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist parancsot
Ha ez megtörtént, nyissa meg a TextEdit programban a következő parancs futtatásával:
nyissa meg a -e ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist parancsot
Most egy üres TextEdit dokumentumot kell nyitnia, így másolja be a következő szöveget, és mentse el a dokumentumot, de tartsa nyitva. A szkript helyének módosításához módosítania kell a "FILEPATH" részt:
Címke helyi.VáltoztatSafariDownloads QueueDirectories WatchPaths / Volumes Program / usr / bin / osascript ProgramArguments osascript FILEPATH
Amikor bejelentkezik, a parancsfájl betöltődik a rendszerindító folyamatba, és megadja a feltételeket és utasításokat a fő szkript futtatásához a Safari beállításainak szerkesztéséhez. Ebben az esetben a rendszerindítónak meg kell jelennie, hogy nézze meg a könyvtárat / kötetet, hogy megtudja, hogy az adott könyvtáron belül bármilyen-e változás. Mivel ez az, ahol a fájlrendszerek vannak felszerelve, a meghajtót bármikor csatlakoztatva vagy leválasztva a rendszerből, ez a fő parancsfájlt futtatja.
Script 2: AppleScript a beállítások módosításához
A második parancsfájl a fő, amely az összes műveletet végrehajtja, beleértve a meghajtók neveinek ellenőrzését, függetlenül attól, hogy a Safari nyitva van-e, vagy bármilyen más feltétel a beállítások módosításához. A létrehozásához lépjen a / Applications / Utilities / mappába, és nyissa meg az AppleScript Editor programot. Megnyílik egy üres szerkesztőablak, és amikor másolja és beilleszti a következő parancsfájlt:
- Állítsa be a letöltési mappaként használandó alternatív meghajtónevet
állítsa be a dlFolder- et átalakítaniHome ("/ Kötetek / Letöltések")
mondja el a "Finder" alkalmazást
ha létezik [ POSIX fájl dlFolder]
- Ne csináljon semmit és használja a mappát
más
- állítsa be a dlFolder alapértelmezett otthoni könyvtárat
állítsa a dlFolder- t (POSIX elérési útja ( elérési út az otthoni mappához szövegként )) és a "Letöltések"
vége, ha
mondja el
- kapsz aktuális utat a szafari plistól
állítsa be az aktuális útvonalat a konverzióhozHome ( nem shell script ) alapértelmezett értékei: com.apple.Safari DownloadsPath))
- csak akkor módosítsa az útvonalat, ha az aktuális beállítás nem egyezik meg a beviteli útvonallal (van valami, amit meg kell változtatni)
ha (currentpath as text ) akkor nem egyenlő (dlFolder mint szöveg )
- Ha a Safari fut, változtassa meg a beállításokat a Safari beállításain keresztül
akkor ha az appIsRunning ("Safari") van
- határozza meg a visszaállítandó legelső alkalmazást a szkript végrehajtásakor
állítsa be a frontApp-ot az elsődleges alkalmazás eléréséhez
- másolja át a letöltési mappát a vágólapra
állítsa a vágólapot dlFolder-re szövegként
aktiválja a "Safari" alkalmazást
mondja el a "Rendszeresemények" alkalmazásnak, hogy mondja el a "Safari" alkalmazási folyamatot
- nyissa meg a preferenciákat, vagy vigye elõre (1. ablak)
billentyűkombináció ", " {parancs lefelé}
késleltetés 1 - az ablakban megjelenő szünetek hibákat okozhatnak, ezért várunk egy másodpercet
- Váltson az Általános lapra
kattintson az ablak 1. eszköztárának "Általános" gombjára
- A letöltési hely módosítása másra
az "Általános" ablak 1. csoportjának 1. csoportjának "Mentse le a letöltött fájlokat a következőre" feliratú gombot.
kettyenés
kattintson az 1. menü „Egyéb ...” menüpontjára - három pont egy ellipszis, nem három periódus
mondja el
- Nyissa meg a "go to folder" párbeszédpanelt
"g" billentyűkombináció a {shift down, parancs lefelé} használatával
- Illessze be a mappa elérési útját a hely mezőbe
ablak "Go to Folder"
"v" billentyűkombináció a {paranccsal lefelé}
billentyűleütés
mondja el
kattintson az "Általános" ablak 1. lapjának "Kiválasztása" gombjára
- zárja be a beállításokat
„w” billentyűleütés a {parancs lefelé} használatával
mondja el
- a munka befejezése után állítsa vissza az elsődleges alkalmazást
mondja el az alkalmazás frontApp alkalmazásának aktiválását
más
- ha a Safari nem fut, akkor használja az alapértelmezett parancsot a beállítások módosításához
a shell script ("alapértelmezett értékek: com.apple.Safari DownloadsPath" & dlFolder)
vége, ha
vége, ha
- Az otthoni útvonal hivatkozások teljes elérési útjára való átalakítására szolgáló funkció
a konverzióbanHome (currentpath)
ha az aktuális útvonal tartalmazza a "~ /" -t
állítsa be az oldDelimiter-et az AppleScript szöveges elemeinek határolóira
állítsa be az AppleScript szöveges elemeinek határolóit a következőre: {"~ /"}
állítsa be a textPath- et az aktuális útvonal minden szöveges tételéhez
állítsa be az AppleScript szöveges elemét a régiDelimiterre
állítsa be az aktuális útvonalat a POSIX elérési útjára ( a kezdő mappa elérési útja szövegként ) & 2. tétel a textPath-ben
vége, ha
visszatérési útvonal
vége átalakítaniHome
- Funkció annak ellenőrzésére, hogy az alkalmazás "appName" fut-e (ebben az esetben a Safari alkalmazásnál használatos)
appIsRunning (appName)
mondja az alkalmazásnak, hogy a "Rendszeresemények" ( a folyamatok neve ) tartalmazza az alkalmazásnevet
vége az alkalmazásoknak
A szkript szövege kezdetben lila lesz, de ha az Eszköztár összeállítása gombra kattint, vagy ha elmenti a szkriptet, akkor a színezés hasonló lesz, mint amit itt lát. Mentse el a szkriptet egy olyan névvel, mint a "ChangeDownloads", egy tetszőleges helyre (a "Scripts" mappába helyezheti a Dokumentumok könyvtárban, vagy a felhasználói könyvtárban), és zárja be az AppleScript szerkesztőt.
Most nyisson meg egy új terminálablakot, és húzza rá az újonnan elkészített szkriptfájlt. Ha ezt megteszi, a teljes fájlút a parancsfájlba be lesz írva az ablakba, ami úgy néz ki, mint "/Users/username/Documents/ChangeDownloads.scpt". Az egérrel válassza ki a teljes fájlútvonalat, nyomja meg a Command-C gombot a vágólapra való másoláshoz, és térjen vissza a TextEdit 1. szkriptjébe, és cserélje ki a "FILEPATH" bejegyzést a másolt szöveggel. Ezután mentse és zárja be a dokumentumot.
Ekkor a parancsfájlok mindegyike beállítva. Jelentkezzen ki és jelentkezzen be újra, hogy betöltse az indítóügynök parancsfájlját (Script 1), és most, amikor a "Letöltések" elnevezésű meghajtót csatlakoztatja, a Safari beállításai automatikusan módosulnak, így a meghajtót a letöltési mappaként használja. Ha ezután lekapcsolja a meghajtót, a beállítás visszaáll. Ugyanez történik akkor is, ha átnevez egy meghajtót a "Letöltések" elnevezésre, vagy megváltoztatja a nevét a "Letöltésekből" valami másra.
Ne feledje, hogy míg ez a szkript működik, csak OS X 10.6 "Snow Leopard" és OS X 10.7 "Lion" operációs rendszeren tesztelték a Safari 5.1 programot; ugyanakkor csak a Safari 5.0-t futtató más rendszerkonfigurációknak kell lennie. A fő követelmények az, amikor a szkript manipulálja a Safari beállításait a programon belül, gombindexeket használ a különböző menük megnyitásához, és a képernyő különböző gombjaira kattint. Ha az Apple a Safari rendszerben megváltoztatja a preferenciák szervezetét, akkor a szkript ezen része nem fog működni, amíg a szerkesztés megtörténik, hogy a megfelelő gombokra mutasson. Most azonban ez egy korlátozás, amellyel foglalkoznunk kell. Ennek egyik megoldása Lionban az, hogy kihasználja az Apple Resume funkcióját egy szkriptben, hogy kilépjen a Safari-ból, módosítsa a beállításokat, majd újraindítsa a programot ahelyett, hogy be kellene programoznia a felületet.
Végül, ha úgy dönt, hogy nem szeretné ezt a szkriptet többé, akkor eltávolíthatja azt az AppleScript fájl törlésével, majd eltávolíthatja a LaunchAgent fájlt kézzel vagy a következő parancs futtatásával a terminálon. Ha ez megtörténik, csak jelentkezzen ki, és jelentkezzen be újra, és vissza fog térni az egyikhez:
rm ~ / Könyvtár / LaunchAgents / local.ChangeSafariDownload.plist
Hagyjuk Meg Véleményét