Mac OS X: нужен простой скрипт

1175
Jason S

Я ищу простой скрипт, который будет делать следующее. Может ли кто-нибудь сделать снимок (+ если загадочно, объясните, пожалуйста, что он делает), или дайте мне несколько советов, чтобы я мог запустить это сам?

Я хочу запустить приложение с графическим интерфейсом в каталоге Applications из командной строки, указав его параметры при необходимости:

$> launch Foobar arg1 arg2 arg3 

Что должен сделать скрипт запуска оболочки:

1) Прочитайте файл конфигурации, который выглядит примерно так:

/Applications/$0.app /Applications/$0 /Applications/**/$0.app /Applications/**/$0 

2) Попробуйте сопоставить первый аргумент («Foobar») в этом случае с каждой строкой файла конфигурации по порядку, где «*» представляет любую последовательность символов в сегменте пути и «**» представляет любой сегмент пути, и $0представляя название программы. Так что в этом случае он ищет Foobar.app и Foobar в каталоге Applications и любых его подкаталогах.

3) Выполните полученную команду с указанными оставшимися аргументами («arg1», «arg2», «arg3»)

Звучит просто, но я слишком много новичков со сценариями оболочки на данный момент. Я могу в конечном итоге использовать JSDB, так как я знаю, как его использовать. Я просто не уверен, как указать, что скрипт, называемый «запуск», должен запускать программу JSDB, или совместим ли он с этим.

Конкретный вариант использования: если я нахожусь в каталоге в командной строке, я часто хочу сделать одно из следующего:

  • Запустите TextEdit, чтобы создать новый файл с именем X
  • Запустите TextEdit, чтобы открыть файл с именем X
  • Запустите, чтобы создать или открыть файл с именем X
  • Откройте окно Finder в этом каталоге

В частности, вчера я хотел отредактировать свой файл Mercurial .hg / hgrc, и мне потребовалось вечное время, чтобы понять, как, поскольку .hg - это каталог, который скрыт от диалоговых окон открытия файлов графического интерфейса пользователя. Я до сих пор не помню, как я получил его на работу.

3

2 ответа на вопрос

6
Ted Naleid

«open» - это команда, которую вы хотите. Используйте это, чтобы увидеть открытые варианты

open -h 

Вы увидите, что чтобы открыть что-то в textedit, просто используйте -e

open -e foo.txt 

если он не существует, просто «коснитесь» файла и откройте его:

touch foo.txt  open -e foo.txt 

Существуют и другие приложения (например, textmate), которые, на мой взгляд, являются лучшими графическими редакторами, которые устанавливают свои собственные команды командной строки (например, mate), которые могут автоматически создавать файлы.

Чтобы открыть текущий файл с помощью редактора по умолчанию, просто не передавайте никаких переключений. Так что, если файлы .txt связаны в вашей системе с TextEdit, просто с помощью «open foo.txt» должно работать. Поскольку каталоги автоматически связаны с Finder, просто используйте

open . 

открыть текущий каталог в Finder.

Если файл связан с другой программой, не откроет ли он, например, какой-либо другой файл, кроме TextEdit? Jared Updike 15 лет назад 0
правильно, вы можете увидеть, что является ассоциацией по умолчанию, щелкнув правой кнопкой мыши файл в Finder и выбрав «получить информацию» в разделе «Открыть с помощью». Это также место, где вы можете изменить сопоставление по умолчанию для всех файлов с одинаковым расширением, изменив приложение в раскрывающемся списке и нажав «изменить все ...» Ted Naleid 15 лет назад 0
Вы можете сделать `open -a TextMate file.txt`, чтобы принудительно открыть файл в приложении не по умолчанию dbr 15 лет назад 1
3
jtb

Один из быстрых способов запуска приложения с графическим интерфейсом из терминала - просто использовать его open -a AppName. Но вы не можете передавать аргументы командной строки таким образом.

Однако, кажется, что меньшинство программ даже принимает аргументы командной строки, было бы сумасшествием требовать от пользователя написания такого сценария, чтобы использовать их. Приложения GUI, которые принимают аргументы командной строки, обычно имеют сценарии оболочки в PATH, например, для их обработки mvim.

Не могли бы вы привести более конкретный пример того, чего, как вы надеетесь, достигнет этот сценарий?

Вы украли первые три буквы моего имени пользователя! `: P` jtbandes 15 лет назад 0
Я заметил это сам, но я не был достаточно авторитетным, чтобы оставить вам комментарий :-) jtb 15 лет назад 0
так что я бы сделал "open -a Finder" для запуска Finder в текущем каталоге? Jason S 15 лет назад 0
Если вы хотите открыть Finder в текущем каталоге, вам нужно указать каталог. Используйте для текущего каталога. `open -a Finder .` будет работать, или так как Finder является приложением по умолчанию для каталогов, вы можете просто набрать` open .` jtb 15 лет назад 0