Execute “Get Info” em um arquivo a partir da linha de comando no Mac OS X

4

Como você obteria a janela "Get Info" para aparecer na linha de comando, como se estivesse no Finder e apertasse o comando - I ? Eu poderia escrevê-lo em applescript ... mas eu fico longe, se puder.

    
por physicsmichael 11.12.2009 / 21:33

5 respostas

0

Aqui está minha versão atualizada do script (incluindo a atribuição à fonte original, como achei há alguns anos). A principal mudança na funcionalidade é que ele irá lidar com nomes de caminhos que incluem caracteres que não são codificados de forma idêntica entre MacRoman e UTF-8 (qualquer coisa fora do 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 ([email protected])  March 2003

# Chris Johnsen <[email protected]> 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 '23')" # UTF-8 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
    c="$(printf '23')" # 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"')\)$//'
}

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
    
por 16.12.2009 / 14:38
2

Isso também suporta vários arquivos e ativa o Finder. O método utxt só é necessário em 10.4 e anterior.

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 é redirecionado porque o osascript imprime o resultado da última expressão e o STDERR porque o 10.8 mostra um aviso como CFURLGetFSRef foi passado este URL que não tem esquema quando um caminho relativo é convertido em um alias.

    
por 22.11.2012 / 08:34
1

Sei que não estou realmente respondendo à sua pergunta, mas recebo muitas das informações de que preciso usando ls -l e o comando file .

    
por 11.12.2009 / 22:37
1

Tente isso, achei isso no link

#!/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
    
por 11.12.2009 / 22:52
0

Eu tentei vários scripts para fazer isso (ou seja, pop uma janela de informações a partir da linha de comando).

Todos trabalham

exceto

para aliases e arquivos regulares, eles mostram as coisas certas Para links simbólicos (links simbólicos), mostre as informações do arquivo subjacente. NÃO é isso que seleciona "Obter informações" em um symlink em um localizador.

Eu tenho tentado brincar com o código applescript para corrigir isso, mas sem sorte até agora.

Eu escrevi um script simples para lidar com a obtenção de informações para vários arquivos de uma só vez.

#!/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
    
por 21.11.2012 / 23:13