フォルダーへのパスがシンボリックリンクであるか、フォルダーへの元のパスであるかを確認する方法(存在する場合)を探しています。
そんなことありますか?
フォルダーがシンボリックリンクであるかどうかを確認するには、これらの方法のいずれかを使用できます。
GUIメソッド:
フォルダアイコンは異なります。フォルダのアイコンには矢印があります。
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
ここでsymbolic
はoriginal
フォルダーを指すシンボリックリンクです。
l
の最初のlrwxrwxrwx
はシンボリックリンクを表し、d
はフォルダーを表します(directory)、および-
はfileを表します。
多くの方法がありますが、私の通常の方法は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 /ディレクトリへのシンボリックリンクです
代替アプローチ:
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
ここでは、パスがリンクターゲットに展開されていることがわかります
特定の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
namei
は、パスがディレクトリにつながるかどうかに関係なく、パス内のすべてのコンポーネントを分解します。
たとえば、私の~/Playlists
はDocuments/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
はディレクトリ(フォルダ)を意味します