Finder — хоткей для создания файла

Я серьезно не понимаю, как можно было сделать в контекстном меню в Finder‘е пункт меню создания папки, но не дать возможности создавать файлы. Забираешься ты значит на 5 уровней вглубь файловой системы, и тут тебе надо создать файл. И начинаешь — копируешь путь, открываешь текстовый редактор, создаешь файл. Почему не сделать это в 2 клика? Не понимаю.
Начал искать решение проблемы. Что тут скажешь, голь на выдумки хитра, особенно понравились программы в AppStore которые за символический бакс готовы для вас добавить в контекстное меню опцию создания файла. Но мы не ищем легких путей. Будем пилить сами.
Я давно посматривал в сторону Automator — встроенной программы от Apple, которая позволяет людям не обладающим особыми навыками в программировании автоматизировать нужные процессы. Правда в итоге я пришел к запуску AppleScript а не визуальным кубикам, меньше действий надо производить, да и объяснять проще, ибо картинок меньше делать.

Запускаем Automator и выбираем Служба.

create

В поиск вбиваем apple, и перетаскиваем в правую часть окна Run AppleScript

applescript

Далее в выпадающем списке Служба получает выбираем пункт файлы и папки или нет входных данных. Каждый из вариантов имеет свои плюсы и минусы, о них позже. Я остановился на нет входных данных
В выпадающем списке, который правее выбираем Finder
И заменяем текст скрипта на

Разберем по строчке.
on run {input, parameters} — точка входа в скрипт, по сути int main, для тех кто знает C

tell application «Finder» — все что внутри этого блока — будет относиться к приложению Finder

display dialog «Имя файла:» default answer «untitled.txt» — показываем диалог, где запрашиваем имя файла. Имя по умолчанию для предлагается untitled.txt

set theName to text returned of result — сохраняем введенное имя в переменную theName

set currentPath to insertion location as text — сохраняем текущую папку в переменную currentPath. Более подробно сказано в документации

set filePath to POSIX path of currentPath — сохраняем в переменную filePath POSIX вид пути

set quotedPath to quoted form of filePath & «/» & theName — сохраняем в quotedPath — полный корректный путь к создаваемому файлу. Вот с этим я повозился, дело в том, что у меня в iMac 2 жестких диска, и второй имеет имя с пробелом «1 Tb». Но я как то не подумал об этом, когда скрипт начал выдавать ошибку при создании файлов в некоторых папках. Я начал грешить на права доступа, заодно понял как запускать от имени root команды в apple script (об этом чуть позже). В общем нужно экранировать пробелы в пути (как и спецсимволы я полагаю), чем и занимается команда quoted form of. А filePath & «/» & theName — склеивает куски переменных и текста в одну сроку.

end tell — заканчиваем работу с Finder

do shell script «touch » & quotedPath — выполняем консольную команду touch, которой передается путь к создаваемому файлу.
Если бы нам было нужно выполнить команду из под админа, нужно было бы добавить with administrator privileges, получилось бы следующее
do shell script «touch » & quotedPath with administrator privileges — но огромный минус, пароль админа будет запрашиваться при каждом создании файла, даже если у нас есть права на запись в текущую папку. Я отказался от этого.

end run — конец скрипта

Получится что то вроде

full

Сохраните получившееся как New File

Теперь по поводу выбора между файлы и папки или нет входных данных.
В первом случае в контекстном меню в Службах появится пункт New File.

contextmenu

Но, огромный минус, — нам обязательно надо иметь выделенными какую нибудь папки или файл, чтобы появилось это контекстное меню. А если мы создали папку, зашли в нее, а она пустая? Если настроено отображение текущего пути, как я описывал в этой статье, можно кликнуть в статус баре. Но в любом случае грабли.
Во втором случае пункт New File не появится в контекстном меню, но если повесить на команду сочетание клавиш — мы сможем вызвать диалог создания файла без предварительного выделения файлов и папок

hotkey

В крайнем случае можно создать 2 Automator скрипта, один для файлы и папки, другой для нет входных данных c идентичным AppleScript, приведенным выше, но разным выбором входных данных.

Что ж, мы стали еще на один шаг ближе к комфортной жизни. Хотя конечно хотелось бы, чтобы подобные опции были предусмотрены производителями, и не приходилось городить огород на ровном месте.

1 thought on “Finder — хоткей для создания файла

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *