LoginSignup
2
2

More than 5 years have passed since last update.

エイリアスの情報を取得する

Last updated at Posted at 2016-05-05

エイリアスの参照先を出力するコマンドがみつからない。
適当につくった。

もっと詳しく

Macのエイリアスで、参照先をコマンドから探す方法を探したがみつからない。
ファイルの情報を見る方法としてはGetFileInfoコマンドがあったがせいぜいエイリアスであることぐらいしかわからない。
そしてGetFileInfoはdeplicatedのようだ。

$ GetFileInfo /hoge2.txt
file: "/hoge2.txt"
type: "alis"
creator: "MACS"
attributes: Avbstclinmedz
created: 05/04/2016 20:13:23
modified: 05/04/2016 20:13:23

alisaliasでなくalisと出力された。

CocoaのAPIでは
+ URLByResolvingAliasFileAtURL:options:error:
で解決できる。

エイリアス自体は中身がBookmarkのようなので、

+ bookmarkDataWithContentsOfURL:error:
経由でも取得できるもよう。

$ od -ch /hoge2.txt | head
0000000    b   o   o   k  \0  \0  \0  \0   m   a   r   k  \0  \0  \0  \0

先頭の数バイトにはbookmarkと書かれていた。

適当につくってみた。

import Foundation

func resolveAliasFile(_ url: URL) throws -> URL? {

    var isAliasOfAny: AnyObject?

    try (url as NSURL).getResourceValue(&isAliasOfAny, forKey: URLResourceKey.isAliasFileKey)

    switch isAliasOfAny {
    case let isAlias as Bool:
        if isAlias {
            return try URL(resolvingAliasFileAt: url, options: NSURL.BookmarkResolutionOptions())
        }
    default:
        return nil
    }

    return nil
}
$ ./ResolveAlias /hoge2.txt
hoge.txt

エイリアスはなるべく使わずSymLinkを使う方が幸せそうです。
gitリポジトリにコミットして別のユーザが取得してもエイリアスとしては使えませんでした。

参考文献

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2