
طراحی میانبر برای مخفی کردن فایل ها در مک
سلام !
من معمولا زیاد با فایل های مخفی ( یا Hidden ) کار میکنم، چون تعدادشون هم زیاده وقتی کارم تموم میشه دوس دارم دوباره مخفیشون کنم چون ظاهر خوبی به صفحه ی کارم نمیدن، یکی از مشکلاتی که من زیاد باهاش مواجه میشم اینه که برای نمایش فایل های مخفی و دوباره مخفی کردن اون ها باید کامند بزنم! چه خوب میشد اگر یک میانبر سر راست براش وجود داشت … توی این پست قصد دارم این میانبر رو طراحی کنم !
نیازمندی ها : applescript – automator
برای طراحی این میانبر راه های مختلف و زیادی وجود داره، من از applescript استفاده کردم
applescript یک زبان اسکریپتی مخصوص ماشین های مک طراحی شده تا انجام کار ها رو آسون تر کنه، تعامل با بیشتر بخش های سیستمی از طریق applescript ممکنه و اکثر کار هایی رو که با رابط کاربری میشه انجام داد اینجا هم میتونیم
اگر دوست دارین در موردش بیشتر بدونین یک سر به این صفحه بزنید Introduction to AppleScript Language
کد میتونه از توابع تشکیل بشه و Functional نوشته بشه، ولی من اینجا همه چیز رو ساده کردم!
خوب بریم سراغ کد!
گام اول:
من برای کد نویسی از محیط Script که جزو نرم افزار های پیشفرض مک هست استفاده کردم، اونو میتونید در محیط Lunchpad به همین نام پیدا کنید
اول باید بدونیم که حالت فعلی سیستم چیه ؟! پس باید یک فرمان shell اجرا کنیم و نتیجشو برسی کنیم
برای اجرای فرمان shell از این دستور استفاده میکنیم
” … ” do shell script
این دستور هر چیزی که داخل double quotation نوشته بشه رو اجرا میکنه و نتیجه رو بهمون برمیگردونه با استفاده از دستور
Set <name> to <value>
میتونیم یک متغیر به نام name رو به مقدار Value (با هر نوعی) ایجاد کنیم
1 | set FileState to (do shell script "defaults read com.apple.finder AppleShowAllFiles") |
با این دستور مقدار پیشفرض صفت AppleShowAllFiles رو برای نرم افزار finder میخونم و بعد نتیجه رو توی متغییر FileState میریزم
این متغیر در صورت set شدن میتونه حالت نرم افزار finder رو از پنهان سازی فایل های مخفی به حالت نشون دادن اون ها و برعکس تغییر بده
اگر تا حالا کسی برای finder مقدار پیشفرض تعریف نکرده باشه مقدارش خالیه، اگر خالی بود پیش فرض یعنی False
1 2 3 4 5 | if ((FileState as string) is equal to "") then set FileState to "FALSE" end if |
فرض میکنم حالت بعدی اینه که باید فایل های مخفی شده رو نشون بدیم پس یک متغیر ایجاد میکنم با مقدار TRUE
1 | set NextState to "TRUE" |
حالا متغییر FileState رو با دو مقدار Yes یا True مقایسه میکنم ( چون امکان داره قبلا این مقدار دستی set شده باشه بهتره با هردو اون ها چک بشه ) اگر برابر بود بعنی فایل های مخفی در حال نمایش هستن و حالت بعدی False خواهد شد اگر برابر نبود که برابر حالت پیشفرضی که در نظر گرفتیم یعنی True خواهد شد !
1 2 3 4 5 6 7 8 9 | ignoring case if (FileState is equal to "Yes" or FileState is equal to "True") then set NextState to "FALSE" end if end ignoring |
با توجه با نتیجه برسی بالا یک پیغام خروجی مناسب ایجاد میکنم
1 2 3 4 5 6 7 8 9 10 11 | set DialogMessage to "Would you like to" if (NextState is equal to "TRUE") then set DialogMessage to DialogMessage & " show hidden files ?" else set DialogMessage to DialogMessage & " hide files ?" end if |
خوب حالا وقتشه پیغام رو نشون بدیم
1 2 3 4 5 | set dialogResult to display dialog DialogMessage buttons {"No", "Yes"} ¬ with title "ShowHideAssistant" default button "No" cancel button ¬ "No" with iconcaution |
همونطور که میبینید دستورات applescript خیلی شبیه به زبان انگلیسیه ! و برای فهمیدنش فقط کافیه از روش بخونید !
این دستور پیغامی رو به متن DialogMessage و با دو دکمه ی “No”, “Yes” که دکمه ی “No” پیشفرض انتخاب شده و صفتش هم cancel هست با عنوان پنجره ی “ShowHideAssistant” و نماد caution (مثلث خطر) ایجاد میکنه و نتیجشو میریزه توی متغیر dialogResult !
در گام آخر نتیجه پیغام نشون داده شده به کاربر رو برسی میکنیم و در صورتی که موافق بود ابتدا مقدار جدید صفت AppleShowAllFiles رو تعیین میکنیم بعد File Manager مک رو ریست میکنیم !
گام دوم!
حالا وقتشه برای کدمون یک میانبر شخصی بسازیم تا از این به بعد اون کلید کارامون رو انجام بده
نرم افزار automator رو اجرا و یک پروژه ی جدید با عنوان Service ایجاد میکینم
مقدار عبارت Service receive رو no input میکنیم
حالا یک ماژول Run Apple Script رو به میز کارمون اضافه میکنیم
توی این مرحله میشد کار های دیگه ای هم کرد مثلا Script نوشته شده رو به عنوان نرم افزار اجرا کرد یا چیز های دیگه ….
کد نوشته شده رو داخل کادر سفید Copy & Paste میکنیم ! اونو به اسم ShowHideAssistant ذخیره میکنیم
در گام آخر به بخش کلید های میانبر از تنظیمات صفحه کلید میریم، service ها رو انتخاب میکنیم و به پایین لیست میریم
اسم سرویسمون رو میبینید ! تموم شد 🙂
فقط کافیه روی none کلیک کنید و کلید های میانبر خودتون رو انتخاب کنید !
کد نهایی :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | set FileState to (do shell script "defaults read com.apple.finder AppleShowAllFiles") if ((FileState as string) is equal to "") then set FileState to "FALSE" end if set NextState to "TRUE" ignoring case if (FileState is equal to "Yes" or FileState is equal to "True") then set NextState to "FALSE" end if end ignoring set DialogMessage to "Would you like to" if (NextState is equal to "TRUE") then set DialogMessage to DialogMessage & " show hidden files ?" else set DialogMessage to DialogMessage & " hide files ?" end if set dialogResult to display dialog DialogMessage buttons {"No", "Yes"} ¬ with title "ShowHideAssistant" default button "No" cancel button ¬ "No" with icon caution if button returned of dialogResult is "Yes" then do shell script ("defaults write com.apple.finder AppleShowAllFiles " & NextState) do shell script ("killall Finder") end if |
موفق باشید