Потрібна трохи допомоги, запустивши кілька рядків bash в applescript. Може бути, найкращий удар?


2

Передмова це кажучи я буду запускати цей сценарій будь це applescript або bash сценарій з Alfred.app.

Вибачте, що я настільки тупий і невідомий, але мені потрібно запустити пару рядків bash в applescript. Я думаю, що простий сценарій bash здатний, але я не знаю точно. Ось подробиці (зауважте, що команди, ймовірно, повинні бути різними, тому, якщо у вас є пропозиції, будь ласка, сміливо вказуйте їх, як вони, ймовірно, правильні):

Я хочу, щоб скрипт

  1. rm ~/Library/Vidalia/vidalia.conf'
  2. unzip ~/Library/Vidalia/vidalia.conf.zip'
  3. запустіть Vidalia.app

Крок нижче я не вважаю можливим, оскільки Vidalia.app не є сценарієм, і я не хочу, щоб скрипт applescript / bash працював до того, як Vidalia вийде ..., але якщо це можливо, можна виконати без необхідності, щоб скрипт залишався відкритим

4) На виході з Vidalia.app rm ~/Library/Vidalia/vidalia.conf

Це можливо. Я можу використовувати bash або applescript, що найлегше для вас, & amp; дівчата, щоб мені допомогти. Якби я міг отримати перші три кроки, щоб бігти, я був би щасливий! Дякуємо за ваш час і вибачте за мою відсутність знань. Будь-які поради та вказівники вітаються.

Чорт, я навіть не знаю, якщо це "правильні" команди оболонки для використання, вони зробили роботу, але якщо вони "звук", я не знаю.

Дякуємо за ваш час і терпіння.

UPDATE - Питання: Як перемістити розпакований файл в інший каталог?

Добре у мене є одне останнє питання. Як би я зробив таку саму дію, але я хотів би це зробити vidalia.conf.zip в іншому каталозі?

Скажімо, наприклад, названий зовнішній том tor - Я переїхав у намотаний том tor с pushd, але коли я йду, щоб витягти файл з тим, що, я думаю, має працювати -d Я отримую помилку, що я cannot create extraction directory

Це добре, тому що я не хочу замінювати каталог, просто перемістіть те, що розпакується, до вже існуючого каталогу. Так, мені, ймовірно, доведеться видалити файл, який вже існує, залежно від того, що я роблю так, як це виглядає ...

pushd ~/Library/Vidalia/
rm vidalia.conf
popd
pushd /Volumes/tor
unzip vidalia.conf.zip -d ~/Library/Vidalia/
popd

Я не надто спробував це занадто багато, як тільки я зіткнувся з помилкою зі старою -d. Як я набирав це я зрозумів, що я повинен бути навігація каталоги більше з pushd і потім з popd. Спочатку я просто мав рядки 4 і 5, але додав верхній 3 для видалення .conf що зараз є ... якщо ... вона є ...

Які питання приносять мені ще одне питання ... Чи нешкідливо сказати bash, щоб видалити файл, який не існує? Я б не знав, з чого навіть почати if then заяви.

Нарешті, чи може хто-небудь порекомендувати хороше початкове вступ до книги Bash? Я хотів би, щоб насправді дізнатися цю речі, а не просто, щоб Google, а потім розвернутися і помилка ви все. Ще раз спасибі за вашу допомогу. Ви вирішили мою попередню проблему чудово, я навіть багато чому навчився з простого прикладу (я думаю.)

Привітання!

Відповіді:


3

Якщо згадати @laaph, якщо ви просто хочете запускати команди bash, використовуйте скрипт bash.

Проте з вашими командами є декілька проблем.

Ваш сценарій має виглядати так:

#!/bin/sh

pushd ~/Library/Vidalia
rm vidalia.conf
unzip vidalia.conf.zip
popd
open /Applications/Vidalia.app

Якщо ви не змінили правильний каталог, unzip розпакуйте файл у домашній каталог або де б ви не запустили сценарій.

Є способи шукати, коли додаток закривається, але у вашому випадку це здається марним, ви видаляєте .conf щоразу, коли ви запускаєте скрипт. Але якщо ви дійсно бажаєте цього, ви можете просто:

#!/bin/sh

pushd ~/Library/Vidalia
rm vidalia.conf
unzip vidalia.conf.zip
popd
open -W /Applications/Vidalia.app
pushd ~/Library/Vidalia
rm vidalia.conf
popd

(Це змусить скрипт чекати, поки ви не закриєте програму, а потім видалить файл конфігурації. Знову ж таки, це марно і зайве, якщо ви будете запускати додаток лише зі сценарієм.)

Крім того, ви можете спробувати простіше рішення: я припускаю, що ви хочете мати тільки один vidalia.conf, коли ви запускаєте програму. Якщо це так, спробуйте просто зробити .conf лише для читання.


Що стосується того, чому я роблю це ... У мене є файл vidalia.conf, який налаштований для використання obfsproxy ... який є .conf я хочу розпакувати. Тому, коли я запускаю цей скрипт, я хочу, щоб він використовував obfsproxy .conf з vidalia. Коли vidalia закриває, я хочу, щоб obfsproxy .conf, який був розпакований для цього сеансу, був вилучений, так що я можу просто запустити vidalia без сценарію і створити загальний "direct" connect .conf і підключитися без obfsproxy.
Bob Peaks

Другий сценарій з трьома додатковими лініями робить саме те, що я хочу / потрібно робити! ДЯКУЄМО, ДЯКУЄМО, ДЯКУЄМО! Дивовижний, - спасибі, що знайшли час, щоб прочитати пост і відповісти парою рішень. Ви зробили мій день.
Bob Peaks

Швидке питання. Я перфекціоніст, який не добре, коли мова йде про цю речовину, тому що я поняття не маю, що я роблю з кодом, але ви бачите будь-які проблеми зі мною змінити лінію \ t unzip vidalia.conf.zip для unzip vidalia.conf.zip;rm -rf __MACOSX ? Я хочу уникнути створення цієї порожньої папки __MACOSX. Я не помітив жодної проблеми, але хочу запитати, оскільки ви чітко знаєте, що ви робите.
Bob Peaks

Так, додавши, що це нормально. Чому б не просто видалити папку __MACOSX з zip-файлу?
houbysoft

Ще одне питання для вас нагорі, якщо у вас є час. Як щодо розпакування в інший каталог, так що мені не доведеться захаращувати фактичний каталог Бібліотеки зі стиснутими файлами? Більш глибоке редагування вище. Як завжди, спасибі, і високо цінуємо.
Bob Peaks

1

Те, що ви маєте поки що саме те, що ви хочете, і щоб відкрити програму, використовуйте "open", так що ваш сценарій буде виглядати так:

rm ~/Library/Vidalia/vidalia.conf
unzip ~/Library/Vidalia/vidalia.conf.zip
open /Applications/Vidallia.app

Є всілякі трюки для моніторингу, якщо Vidalia працює або ні, так що якщо ви готові залишити скрипт запущеним, ви також можете видалити conf, а потім вийти з сценарію. І, як ви говорите, це може бути зроблено (інакше) в Applescript, Automator або мільйоні інших способів.


Хоча я хочу бути чесним і сказати, що знайшов своє рішення в сценарії вище, я дякую вам за прояв певного інтересу і дайте мені ідеї, з якими я можу працювати. Якби це не було для houbysoft, я б використовував ваш скрипт і вивчав інші засоби, згадані вами від моніторингу, якщо Vidalia працював чи ні. Дякую за допомогу.
Bob Peaks

З якоїсь причини я не бачу додавання коментаря під вашим постом, я ставлю його тут. & lt; br / & gt; Це нешкідливо сказати bash для переміщення файлів. Проте, якщо він не зможе перемістити файли (які ви повинні мати можливість переглядати за допомогою Console.app), ви зможете додати повідомлення про помилку до stderr. Також існують способи знищення помилки (наприклад, mv file dest 2> /dev/null ) якщо це вас багато турбує.
laaph

Я ціную відповідь, але я не бачу, де саме це відбудеться. Думаю, це набагато важче, ніж я вважав раніше, щоб просто розпакувати файл, а потім перемістити його до вже існуючого каталогу. Дякуємо за допомогу. Я переконаюся в цьому.
Bob Peaks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.