Lai gan dažādas programmas un pakalpojumi datorā ir domāti, lai piedāvātu jums ērtāku, ir reizes, kad jums var būt nepieciešams veikt atkārtotus uzdevumus, izmantojot dažādus sistēmas rīkus un programmas. Šādos gadījumos skriptu rīku izmantošana var būt ārkārtīgi noderīga. Atšķirībā no programmēšanas, skripti ir tad, kad lietojat virkni pašreizējo rīku un utilītu un automatizējiet to mijiedarbību ar komandām. Piemēram, ar Javascript varat pārlūkprogrammai pastāstīt, kā mainīt HTML satura saturu, vai ar Automator jūs varat pastāstīt Finder, lai tā organizētu failus noteiktā veidā.
Nesen kolēģe šeit CNET vērsās pie manis ar unikālu situāciju, kur viņš gribēja, lai viņa Mac automātiski mainītu Safari lejupielādes mapi, pamatojoties uz ārēja diska klātbūtni. Ideja šeit būtu, ja Safari ielādētu lejupielādētos failus noklusējuma lejupielādes direktorijā, bet, pievienojot konkrētu ārējo disku (piemēram, īkšķi ar nosaukumu "Lejupielādes"), tad, lai sistēma automātiski pārslēgtu Safari lejupielādes direktoriju uz ārējo disku, jo tas var būt apgrūtinoši mainīt to manuāli.
Diemžēl pats Safari nespēj to izdarīt, bet OS X ir resursi, ko var izmantot šim nolūkam, un tos var skriptēt, izmantojot AppleScript, lai pārvaldītu Safari lietojumprogrammu un dažus OS X pakalpojumus, Shell skriptu, lai veiktu dažas darbības, kuras neizmanto lietojumprogrammas saskarni un sistēmas palaidēju, lai skriptus darbinātu tikai tad, ja ir pievienots diskdzinis.
Sākotnēji, domājot par šo problēmu, risinājums var šķist diezgan vienkāršs, un šāds scenārijs var šķist laba atbilde:
- Iestatiet skriptu, lai palaistu komandu "noklusējumi raksta com.apple.Safari DownloadFolder NAME", lai mainītu lejupielādes mapi uz vietu, ko norādījis "NAME"
- Palaidiet šo skriptu, izmantojot sistēmas palaidēju tikai tad, ja ir pievienots konkrēts disks.
- Atkārtojiet to ar līdzīgu komandu, kas norāda uz citu vietu, kad disks vairs nav pievienots.
Lai gan šī pamata pieeja var būt saprātīga, tā nedarbosies vairāku iemeslu dēļ. Pirmkārt, kad Safari darbojas, vienīgais veids, kā mainīt tās preferences, ir caur programmu. Kad programma tiek ielādēta, tā lasīs preferences RAM un pārvaldīs tās iestatījumus tur, tāpēc, ja rediģējat preferenču failu, izmantojot TextEdit vai "noklusējuma" komandu, kā minēts iepriekš, tad tas neietekmēs programmu. Turklāt Safari izraksta savas preferences atpakaļ uz disku, kad tas tiek izbeigts, kas pārrakstīs visus izmainītos iestatījumus.
Turklāt šī pieeja paredz, ka sistēmai ir pieejami resursi, kas uzraudzīs konkrēta diska klātbūtni un aktivizēs skriptu, kad tas atrodas, un tas tā nav. Sistēma var uzraudzīt, vai ir pievienoti diskdziņi, bet, lai norādītu diska nosaukumu, ir jāpārbauda papildu skripti, lai pārbaudītu, vai ir pievienots disks.
Visbeidzot, jāapsver vairākas nianses. Piemēram, tā kā pats Safari ir jāizmanto, lai mainītu tās preferences, kad tas darbojas, tas to piespiedīs būt par galveno lietojumprogrammu, kur tas paliks, ja vien jums vispirms nav skripta, kas atklās vislielāko lietojumprogrammu un atjauno to, kad izmaiņas Safari ir pabeigti. Turklāt nevēlaties, lai skripts darbotos, un, kad ir pievienota kāda nejauša diskdziņa, notiek aktīvā programma.
Šo iemeslu dēļ skriptam jāietver šādi pieci apsvērumi:
- Uzsākt tikai tad, ja ir pievienots jauns disks
- Mainiet iestatījumus tikai tad, ja ir pievienots disks ar nosaukumu "Lejupielādes" (vai jebkurš izdzēsts nosaukums)
- Esiet atkarīgs no tās pieejas, lai mainītu iestatījumus par to, vai Safari pašlaik tiek palaists
- Mainiet iestatījumus tikai tad, ja ir jauna vēlamā lejupielādes atrašanās vieta
- Spēj atjaunot galveno lietojumprogrammu, ja skriptam ir jāpārslēdzas uz Safari
Lai īstenotu šīs iespējas, ir jāizveido divi skripti. Pirmais ir sistēmas palaidējs "launchd", kas tiks izmantots, lai uzraudzītu sistēmas piedziņas punktus, lai redzētu, vai ir pievienots un uzstādīts jauns disks. Ja tā, tad tas sāks skriptu, kas pārbaudīs diska nosaukumu, redzēs, vai darbojas Safari, un pēc tam mainiet Safari iestatījumus tikai tad, ja tie atšķiras no sākotnējā ārējā diska izvēles, bet, ja tas nav pieejams, izmantojiet noklusējuma lejupielādes mapi .
Script 1: LaunchAgent disku uzraudzībai
Pirmais skripts, kas jāizdara, ir sistēmas palaidējam, ko sauc par palaišanas aģentu. Lai to izveidotu, atveriet termināli un ievadiet šādu komandu (kopējiet un ielīmējiet to vienkāršības labad):
pieskarieties ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist
Kad tas ir paveikts, atveriet to TextEdit, izpildot šādu komandu:
atveriet -e ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist
Tagad jums vajadzētu atvērt tukšu TextEdit dokumentu, lai kopētu šādu tekstu tajā un saglabātu dokumentu, bet paturiet to atvērtu tagad. Lai mainītu skripta atrašanās vietu, jums būs jāmaina sadaļa "FILEPATH":
Label local.ChangeSafariDownloads QueueDirectories WatchPaths / Volumes Programma / usr / bin / osascript ProgramArguments osascript FILEPATH
Piesakoties, šis skripts tiks ielādēts sistēmas palaišanas procesā un sniegs tam nosacījumus un instrukcijas, lai palaistu galveno skriptu, lai rediģētu Safari preferences. Šādā gadījumā palaidējam tiks rādīts direktorijs / apjomi, lai redzētu, vai šajā direktorijā notiek kādas izmaiņas. Tā kā ir uzstādīta failu sistēma, jebkurā laikā, kad tiek pievienots vai atvienots disks, tas aktivizēs galveno skriptu.
Script 2: AppleScript iestatījumu mainīšanai
Otrais skripts ir galvenais, kas veiks visas darbības, tostarp pārbauda diska nosaukumus, neatkarīgi no tā, vai Safari ir atvērts, un jebkuriem citiem nosacījumiem preferenču maiņai. Lai to izveidotu, dodieties uz / Applications / Utilities / mapi un atveriet AppleScript redaktora programmu. Tiks atvērts tukšs redaktora logs, un kad tas tajā iekopēs un ielīmēs šādu skriptu:
- iestatiet alternatīvu diska nosaukumu, ko izmantot kā lejupielādes mapi
iestatiet dlFolder konvertētMājas ("/ Apjoms / Lejupielādes")
pastāstīt lietojumprogrammai "Finder"
ja tāds ir [ POSIX fails dlFolder]
- Dariet neko un izmantojiet mapi
cits
- iestatiet dlFolder noklusējuma mājas direktorijā
iestatiet dlFolder uz (POSIX ceļš ( ceļš uz mājas mapi kā tekstu )) un "Lejupielādes"
beigas, ja
beigās pateikt
- iegūt pašreizējo ceļu no safari plist
iestatīt pašreizējo ceļu uz convertHome ( do shell script ) noklusējumus nolasīt com.apple.Safari DownloadsPath ")
- mainīt ceļu tikai tad, ja pašreizējais iestatījums neatbilst ievades ceļam (ir kaut kas maināms)
ja (pašreizējais ceļš kā teksts ) nav vienāds ar (dlFolder kā tekstu )
- ja darbojas Safari, mainiet iestatījumus, izmantojot Safari iestatījumus
tad, ja appIsRunning ("Safari")
- noteikt priekšējo lietojumprogrammu, lai atjaunotu skriptu
iestatiet frontApp, lai virzītos uz priekšējo lietojumprogrammu kā tekstu
- kopējiet lejupielādes mapes ceļu uz starpliktuvi
iestatiet starpliktuvi uz dlFolder kā tekstu
aktivizēt programmu "Safari"
pateikt lietojumprogrammai "Sistēmas notikumi", lai pastāstītu pieteikuma procesam "Safari"
- atveriet preferences vai uz priekšu (1. logs)
taustiņš ", " izmantojot {command down}
kavēšanās 1 - pauzes loga displejā var izraisīt kļūdas, tāpēc mēs gaidām sekundi
- Mainiet cilni Vispārīgi
noklikšķiniet uz 1. loga rīkjoslas 1 taustiņa "Vispārīgi"
- Mainīt lejupielādes atrašanās vietu uz Cits
paziņojiet pop-up pogu "Saglabāt lejupielādētos failus uz:" loga "General" 1. grupas 1. grupā
klikšķis
noklikšķiniet uz izvēlnes punkta "Citi ..." no 1. izvēlnes - trīs punkti ir elipsis, nevis trīs periodi
beigās pateikt
- Atveriet dialoglodziņu "Iet uz mapi"
taustiņš "g", izmantojot {shift down, komandu uz leju}
- Ielīmējiet mapes ceļu atrašanās vietas laukā
logu "Go to Folder"
taustiņš "v", izmantojot {komandu uz leju}
taustiņu nospiešana
beigās pateikt
noklikšķiniet uz pogas "Atlasīt" loga "Vispārīgi" 1. lapā
- aizveriet preferences
taustiņš "w", izmantojot {komandu uz leju}
beigās pateikt
- pēc darba pabeigšanas atjaunot priekšējo lietojumu
pateikt lietojumprogrammai frontApp aktivizēt
citādi
- ja Safari nedarbojas, tad izmantojiet noklusējuma komandu, lai mainītu preferences
veic čaulu skriptu ("noklusējumi raksta com.apple.Safari DownloadsPath" & dlFolder)
beigas, ja
beigas, ja
- Funkcija, lai pārvērstu mājas ceļa atsauces uz pilniem ceļiem
reklāmguvumāHome (currentpath)
ja pašreizējais ceļš satur "~ /"
iestatiet oldDelimiter uz AppleScript teksta vienību norobežotājiem
iestatiet AppleScript teksta elementu norobežotājus uz {"~ /"}
iestatiet textPath uz katru pašreizējā ceļa teksta vienumu
iestatiet AppleScript teksta elementu norobežotājus uz veco vērtētāju
iestatiet pašreizējo ceļu uz POSIX ceļu ( ceļš uz mājas mapi kā tekstu ) un 2. postenī tekstāPath
beigas, ja
atgriezties pašreizējā ceļā
beigas
- funkcija, lai pārbaudītu, vai lietojumprogramma "appName" darbojas (šajā gadījumā izmanto Safari)
lietotnēsRunning (appName)
pateikt lietojumprogrammai "Sistēmas notikumi" ( procesu nosaukumi) ir lietotnes nosaukums
beigt lietotnesRunning
Skripta teksts sākotnēji būs purpursarkans, bet, noklikšķinot uz pogas Kompilēt rīkjoslu vai, ja saglabājat skriptu, tas kļūs krāsots, līdzīgs tam, ko redzat šeit. Saglabājiet skriptu ar nosaukumu, piemēram, "ChangeDownloads", uz jūsu izvēlēto atrašanās vietu (jūs varat ievietot to mapē "Skripti" jūsu dokumentu direktorijā vai lietotāja bibliotēkā) un aizveriet AppleScript redaktoru.
Tagad atveriet jaunu termināļa logu un velciet tajā jauno skripta failu. Kad jūs to izdarīsiet, logā tiks ievadīts pilns faila ceļš uz skriptu, kas izskatīsies kā "/Users/username/Documents/ChangeDownloads.scpt". Izmantojot peli, atlasiet visu faila ceļu, nospiediet Command-C, lai to kopētu uz starpliktuvi, un atgriezieties pie Script 1 TextEdit un nomainiet ierakstu "FILEPATH" ar kopēto tekstu. Pēc tam saglabājiet un aizveriet dokumentu.
Šajā brīdī visi skripti ir izveidoti. Vienkārši piesakieties un piesakieties vēlreiz, lai ielādētu palaišanas aģentu skriptu (Script 1), un tagad, kad instalējat disku ar nosaukumu "Lejupielādes", Safari iestatījumi tiks automātiski mainīti, lai tā izmantotu šo disku kā lejupielādes mapi. Ja pēc tam atvienosiet disku, iestatījums tiks atgriezts. Tas pats notiks arī tad, ja pārdēvēsiet disku, kas tiks nosaukts par "Lejupielādes", vai arī mainīt nosaukumu no "Lejupielādes" uz kaut ko citu.
Paturiet prātā, ka, kamēr šis skripts darbojas, tas ir pārbaudīts tikai OS X 10.6 "Snow Leopard" un OS X 10.7 "Lion", kurā darbojas Safari 5.1; tomēr tai vajadzētu strādāt tikai ar citām sistēmas konfigurācijām, kurās darbojas vismaz Safari 5.0. Galvenās prasības ir, kad skripts manipulē ar Safari preferencēm programmā, tas izmanto pogu rādītājus, lai atvērtu dažādas izvēlnes, un noklikšķiniet uz dažādām pogām ekrānā. Ja Apple nākotnē mainīs Safari preferenču organizāciju, šī skripta daļa nedarbosies, kamēr tā nav rediģēta, lai atkal norādītu uz pareizajām pogām. Tomēr tagad tas ir ierobežojums, kas mums būs jārisina. Viens no risinājumiem šajā situācijā Lionā ir izmantot Apple Resume funkciju skriptos, lai izietu no Safari, veiktu preferenču izmaiņas un pēc tam atsāktu programmu, nevis programmēt interfeisu.
Visbeidzot, ja jūs nolemjat, ka vairs nevēlaties šo skriptu, tad to var atinstalēt, izdzēšot AppleScript failu un pēc tam noņemot LaunchAgent failu vai nu manuāli, vai arī izpildot šādu komandu Terminalā. Kad tas ir paveikts, piesakieties un piesakieties vēlreiz, un jūs atgriezīsieties uz kvadrātveida:
rm ~ / Bibliotēka / LaunchAgents / local.ChangeSafariDownload.plist
Atstājiet Savu Komentāru