web-dev-qa-db-ja.com

フォルダーがシンボリックリンクかどうかを知る方法は?

フォルダーへのパスがシンボリックリンクであるか、フォルダーへの元のパスであるかを確認する方法(存在する場合)を探しています。

そんなことありますか?

7
Joseph Budin

フォルダーがシンボリックリンクであるかどうかを確認するには、これらの方法のいずれかを使用できます。

  • GUIメソッド

    フォルダアイコンは異なります。フォルダのアイコンには矢印があります。

    icon difference

  • CLIメソッド

    ls -lの出力は、フォルダーがシンボリックリンクであることを明確に示し、それが指しているフォルダーも一覧表示します。

    $ ls -l
    total 4
    drwxr-xr-x 2 jabard domain users 4096 mai  24 15:56 original
    lrwxrwxrwx 1 jabard domain users    8 mai  24 symbolic -> 15:56 original
    

    ここでsymbolicoriginalフォルダーを指すシンボリックリンクです。

    lの最初のlrwxrwxrwxシンボリックリンクを表し、dフォルダーを表しますdirectory)、および-fileを表します。

12
tatsu

多くの方法がありますが、私の通常の方法はstatを使用することです

guiverc@ultracrap:~$   stat vids
  File: vids -> Videos/
  Size: 7               Blocks: 0          IO Block: 4096   symbolic link
Device: fd00h/64768d    Inode: 524725      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/ guiverc)   Gid: ( 1001/ guiverc)
Access: 2019-05-25 00:16:26.708558789 +1000
Modify: 2019-05-25 00:16:26.708558789 +1000
Change: 2019-05-25 00:16:26.708558789 +1000
 Birth: -

〜/ vidsは〜/ Videos /ディレクトリへのシンボリックリンクです

5
guiverc

代替アプローチ:

1、fileを使用

file /usr/lib/jvm/jre-9
/usr/lib/jvm/jre-9: symbolic link to /etc/alternatives/jre_9

2、readlinkを使用

readlink -f /usr/lib/jvm/jre-9
/usr/lib/jvm/Java-9-openjdk-9.0.4.11-6.fc28.x86_64

ここでは、パスがリンクターゲットに展開されていることがわかります

5
rkosegi

特定のobjectがプレーンディレクトリであるか、ディレクトリへのシンボリックリンクであるかをプログラムで確認する場合は、 testコマンド を使用できます。 =。ディレクトリとディレクトリへのシンボリックリンクの両方に対してis directoryを返すが、シンボリックリンクに対してはis symlinkのみを返すことに注意してください。したがって:

#!/usr/bin/env bash

mkdir i_am_a_directory
ln -s i_am_a_directory i_am_a_symlink_to_a_directory

for object in i_am_a_directory i_am_a_symlink_to_a_directory; do
    if test -d $object; then
        if test -L $object; then
            echo "$object is a symlink to a directory"
        else
            echo "$object is just a plain directory"
        fi
    else
        echo "$object is not a directory (nor a link to one)"
    fi
done

結果:

i_am_a_directory is just a plain directory
i_am_a_symlink_to_a_directory is a symlink to a directory
3
PerlDuck

nameiは、パスがディレクトリにつながるかどうかに関係なく、パス内のすべてのコンポーネントを分解します。

たとえば、私の~/PlaylistsDocuments/Playlistsへのシンボリックリンクであり、Documents自体はDropbox/Documentsへのシンボリックリンクです。

$ namei Playlists
f: Playlists
 l Playlists -> Documents/Playlists
   l Documents -> Dropbox/Documents
     d Dropbox
     d Documents
   d Playlists

この出力では、

  • f:は、現在解決されているパス名を意味します
  • lシンボリックリンクを意味します
  • dディレクトリ(フォルダ)を意味します
  • インデントの各レベルは、シンボリックリンクのレベルを表します
2
wjandrea