エイリアスの参照先を出力するコマンドがみつからない。
適当につくった。
もっと詳しく
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
alis
はalias
でなくalis
と出力された。
CocoaのAPIでは[
- URLByResolvingAliasFileAtURL:options:error:
](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/#//apple_ref/occ/clm/NSURL/URLByResolvingAliasFileAtURL:options:error:)で解決できる。
エイリアス自体は中身がBookmarkのようなので、
[
- bookmarkDataWithContentsOfURL:error:](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/#//apple_ref/occ/clm/NSURL/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リポジトリにコミットして別のユーザが取得してもエイリアスとしては使えませんでした。
参考文献