Как бы вы открыли окно "Get Info" из командной строки, как если бы вы были в Finder и нажали « Command - I»? Я мог бы написать это на яблочном языке ... но я держусь подальше, если смогу.
5 ответов
Это также поддерживает несколько файлов и делает Finder активным. Метод utxt необходим только в 10.4 и более ранних версиях.
si() {
osascript - "$@" <<-END > /dev/null 2>&1
on run args
tell app "Finder"
activate
repeat with f in args
open information window of (posix file (contents of f) as alias)
end
end
end
END
}
STDOUT перенаправляется, потому что osascript печатает результат последнего выражения, а STDERR, потому что 10.8 показывает предупреждение, как CFURLGetFSRef был передан этот URL, который не имеет схемы, когда относительный путь преобразуется в псевдоним.
Я знаю, что не совсем отвечаю на ваш вопрос, но я получаю много необходимой информации, используя ls -l
и команду file
.
Попробуйте, я нашел это на http://forums.macosxhints.com/showthread.php?t=10149
#!/bin/sh
# This script opens the Finder's "Get Info" window
# for the file or folder specified as a command-line argument.
scriptname=`basename $0`
if [ $# -lt 1 ]; then
echo "Usage: $scriptname file_or_folder"
exit
fi
path=$1
if [ ! -e $path ]; then
echo "$scriptname: $path: No such file or directory"
exit
fi
case $path in
/*) fullpath=$path ;;
~*) fullpath=$path ;;
*) fullpath=`pwd`/$path ;;
esac
if [ -d $fullpath ]; then
file_or_folder="folder"
else
file_or_folder="file"
fi
/usr/bin/osascript > /dev/null <<EOT
tell application "Finder"
set macpath to POSIX file "$fullpath" as text
open information window of $file_or_folder macpath
end tell
EOT
Я попробовал несколько сценариев, чтобы сделать это (например, вывести информационное окно из командной строки).
Они все работают
Кроме
для псевдонимов и обычных файлов они показывают правильный материал для символических ссылок (символических ссылок), чтобы показать информацию о файле базового файла. это НЕ то, что показывает выбор "Получить информацию" по символической ссылке в поиске.
Я пытался поиграться с кодом appleScript, чтобы исправить это, но пока не повезло.
Я написал простой скрипт для обработки информации для нескольких файлов одновременно.
#!/bin/sh
# show_getinfo
# loop to use getinfo script copied from web on several files
if [ $# -lt 1 ]; then
echo "Usage: `basename $0` file_or_folder"
exit
fi
GETINFO_SCRIPT=$HOME/Dropbox/Unix/Scripts/getinfo2_quiet.sh
for F in $*
do
if ! test -e "$F"; then
echo "`basename $0`: No such file or directory: $F"
continue
fi
sh $GETINFO_SCRIPT "$F"
done
Вот моя обновленная версия скрипта (включая указание на первоисточник, как я нашел его пару лет назад). Основное изменение в функциональности заключается в том, что он будет обрабатывать имена путей, которые включают символы, которые не кодируются одинаково между MacRoman и UTF-8 (что-либо вне ASCII).
#!/bin/sh
# Requires a POSIX-ish shell.
#
# Originally From: http://hayne.net/MacDev/Bash/show_getinfo
#
# show_getinfo
# This script opens the Finder's "Get Info" window
# for the file or folder specified as a command-line argument.
# Cameron Hayne (macdev@hayne.net) March 2003
# Chris Johnsen <chris_johnsen@pobox.com> August 2007, December 2009
# Include Unicode path in AppleScript code via "utxt" block(s).
# Handle case where cwd ends in newline.
utf8_to_AppleScript_utxt() {
o="$(printf '\302\253')" # UTF-8 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
c="$(printf '\302\273')" # UTF-8 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
# AppleScript utxt:
# <http://lists.apple.com/archives/applescript-implementors/2007/Mar/msg00024.html>
# <<data utxtXXXX>> where
# << is actually U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
# >> is actually U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
# XXXX are the hex digits of UTF-16 code units
# If a BOM is present, it specifies the byte order.
# The BOM code point will not be a part of the resulting string value.
# If no BOM is present, the byte order interpreted as native.
# The iconv invocation below *MUST*
# include a BOM
# or produce native byte ordering
# or include a BOM and produce native byte ordering.
# In my testing, iconv to UTF-16 includes a BOM and uses native ordering.
iconv -f UTF-8 -t UTF-16 |
( printf '("" as Unicode text'
hexdump -ve "\" & ${o}data utxt\" 63/2 \"%04x\" \"$c\""
printf ')\n' ) |
sed -e 's/ *\('"$c"')\)$/\1/'
}
scriptname="${0##*/}"
if test "$#" -lt 1; then
printf "usage: %s file-or-folder\n" "$scriptname"
exit 1
fi
if ! test -e "$1"; then
printf "%s: No such file or directory: %s\n" "$scriptname" "$1"
exit 2
fi
if test "${1#/}" = "$1"; then set -- "$PWD/$1"; fi
set -- "$(printf %s "$1" | utf8_to_AppleScript_utxt)"
# 10.4 requires script text to be in the primary encoding (usually MacRoman)
# 10.5+ supports UTF-8, UTF-16 and the primary encoding
(iconv -f UTF-8 -t MACROMAN | osascript -) <<EOF
set macpath to POSIX file $1 as alias
tell app "Finder" to open information window of macpath
EOF