5

Как бы вы открыли окно "Get Info" из командной строки, как если бы вы были в Finder и нажали « Command - ? Я мог бы написать это на яблочном языке ... но я держусь подальше, если смогу.

5 ответов5

3

Это также поддерживает несколько файлов и делает 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, который не имеет схемы, когда относительный путь преобразуется в псевдоним.

1

Я знаю, что не совсем отвечаю на ваш вопрос, но я получаю много необходимой информации, используя ls -l и команду file .

1

Попробуйте, я нашел это на 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
0

Я попробовал несколько сценариев, чтобы сделать это (например, вывести информационное окно из командной строки).

Они все работают

Кроме

для псевдонимов и обычных файлов они показывают правильный материал для символических ссылок (символических ссылок), чтобы показать информацию о файле базового файла. это НЕ то, что показывает выбор "Получить информацию" по символической ссылке в поиске.

Я пытался поиграться с кодом 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
0

Вот моя обновленная версия скрипта (включая указание на первоисточник, как я нашел его пару лет назад). Основное изменение в функциональности заключается в том, что он будет обрабатывать имена путей, которые включают символы, которые не кодируются одинаково между 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .