たとえば、次のようなディレクトリ構造があります。
$ \ls -F
dir/ lnk@
$ \ls -F dir
FILE
$ \ls -l lnk
lrwxrwxrwx 1 user group d Mon hh:mm lnk -> dir
私のls
コマンドにはエイリアスがあります。私は\ls
標準的な動作を得るために使用します。
問題は
-F
withオプションを使用するときにls
シンボリックリンク名の後にスラッシュを追加すると、動作に影響するのはなぜですかls
?
$ \ls -F lnk
lnk@
\ls -F lnk/
FILE
そうでない場合、/
シンボリックリンク自体は@
インジケータ/フラグ/分類子とともにリストされ、/
シンボリックリンクが参照するディレクトリ内のファイルはインジケータとともにリストされます(FILE
一般ファイル)。
オプションのない動作を一貫しているのか、一貫していないのかはわかりません。
$ \ls lnk
FILE
\ls lnk/
FILE
でこれの説明が見つかりませんでしたman ls
。
同様の投稿
引用する
IEEEとオープングループ(2004)「パス名の解決」セクション4.11存在するOpen Group 基本仕様 6号
IEEEとオープングループ(2018a)「パス名の確認」セクション4.13存在するOpen Group基本仕様7号
IEEEとオープングループ(2018b)」エルエス」
答え1
つまり、 とはlnk
異なるlnk/
ファイルを参照するからです。
長い答え
IEEEとThe Open Group(2018a)を確認した後、私の質問はパス名の解決を誤解しているようです。特に:1)したがって、他のファイル名を指定するのとlnk/
同じです。lnk/.
lnk
lnk/
パス名解決中にシンボリックリンクが見つかると、パス名コンポーネントがパス名の末尾にあるかどうか、および実行している機能によって動作が異なります。
\ls -F lnk
マニュアルページでは動作を検索または指定しませんでしたが、\ls lnk
IEEEおよびOpen Group(2018b)では見つかりました。
-d、-F、または-lオプションの1つ以上が指定され、-Hおよび-Lオプションが指定されていない場合、名前付きディレクトリー・シンボル・リンク・タイプ・ファイルの各オペランドに対して、lsは次の名前を使用する必要があります。ファイルと要求された関連情報。 -d、-F、または-lオプションが指定されていない場合、または-Hまたは-Lオプションが指定されている場合は、ディレクトリシンボルリンクタイプファイルの名前を指定する各オペランドに対して、lsはディレクトリに含まれるファイル名を作成する必要があります。関連情報。
答え2
正式な答えはわかりませんが、次のようになります。
- このディレクトリには「lnk」という名前があります。それが何であるかわからない。
ls -F lnk
- 名前の種類を表示します。ls -F lnk/
- 以下は、タイプタグで指定されたパスの下のすべてのファイルを表示するパスです。ls lnk/
- 指定されたパスの下のすべてのファイルを表示するパスは次のとおりです。ls lnk
- オペレーティングシステムがファイルが何であるかを判断し、最も論理的な情報を表示するように要求します。
注:この場合、リンクかどうかは関係ありません。私は「名前」と「パス」だけを考慮します。