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, приведенным выше, но разным выбором входных данных.

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

2 thoughts on “Finder – хоткей для создания файла

  1. spidermoon

    Спасибо! Все работает в High Sierra.
    Внимательно проверяем код скрипа после копирования с сайта (добавляет лишние теги).
    Меняем на в коде.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.