2017-01-21 17 views
0

Создание службы в Automator (Запустить сценарий оболочки> Bash) для копирования в буфер обмена файлов (в байтах) выбранного файла в Finder. Я не очень хорошо разбираюсь в bash и не вижу, где это неправильно. Цель состоит в том, чтобы он отображался в меню «services» при щелчке правой кнопкой мыши по файлу, а затем я могу просто вставить размер файла везде, где бы я ни был. Опции Я выбранная в Automator является:Получить файл в рабочем процессе Automator

службы принимает выбранную "файлы и папки" в "Finder.app"

Shell/бен/Баш

вход Пасса в качестве аргументов

for f in "[email protected]" 
do 
    getty=$(ls -l "$f") 
done 

IFS=' ' read -a newList <<< "${getty}" 

echo -n ${newList[4]} | pbcopy 

Ошибка запуска Shell Script - 1 ошибка:

-: -c: строка1: ошибка синтаксиса вблизи неожиданного токена `do

+0

Вы можете суммировать ваши требования в лучший способ для нас, чтобы обеспечить/предложить лучшее решение, чем это? – Inian

+0

обязательно, отредактированный вопрос – bzzWomp

+0

Что передано в аргументе? Какую собственность вы пытаетесь сохранить в 'getty'? и что есть в '$ {newList [4]}' – Inian

ответ

2

Вместо того, чтобы использовать ls, используйте stat, чтобы получить размер файла.

stat -f '%z' "$f" | pbcopy 

Чтобы скопировать, скажем, имя и размер группы файлов в буфер обмена:

stat -f '%N %z' "[email protected]" | pbcopy 
+0

' ++ ', точно, как это должно быть – Inian

+0

Ницца, это отлично работает. Я удалил% N в мой, так что копия в буфер обмена - это просто размер файла, а не путь к файлу – bzzWomp

+0

Конечно; Я просто бросил это, чтобы показать, как добавить несколько полей, и отличить один размер от другого, если вам нужно. См. Страницу man 'stat' для всех данных, которые вы можете отобразить для каждого входного файла. – chepner