スラッシュで終わるディレクトリ名とスラッシュで終わらないディレクトリ名の違いは何ですか? [コピー]

スラッシュで終わるディレクトリ名とスラッシュで終わらないディレクトリ名の違いは何ですか? [コピー]

ディレクトリ名の間に違いはありますか?

mydirectory

そして

mydirectory/

ls特定のディレクトリで実行すると、これが発生することがわかりました。一部のディレクトリ名にはスラッシュがあり、一部にはスラッシュがありません。ディレクトリに含まれているファイルにアクセスするには、最後にスラッシュを追加する必要があるため、問題が発生します。

vi $mydirectory"/"$myfile

それとも、

vi $mydirectory$myfile

答え1

それがない/ファイルかもしれません。

場合によっては致命的である可能性があります。たとえば、次を使用する場合mv:

mv file1 mydirectory
mv file2 mydirectory
mv file3 mydirectory

いいですか?ただし、mydirectory存在しない場合、またはディレクトリではない場合、最終結果はでなくなり、名前は次のようになりfile1ますfile2file3mydirectory

mv file1 mydirectory/
mv file2 mydirectory/
mv file3 mydirectory/

存在しない場合は、mydirectory3つのエラーメッセージのみが表示され、file1残りますfile2file3

これは/いくつかのあいまいさを排除します。

それ以外には特にルールはありません。一部のプログラムは、/最後に提供されたかどうかによって異なる動作をする場合があります。何をすべきかはそれらに依存します。

場合によっては、多すぎると問題が発生する可能性があります/。たとえば、出力にfind残りの部分を保持するので/、このような比較ではなく単純な文字列比較を使用してファイル/パス名を検索しようとすると間違っている可能性がありますrealpath

答え2

これは「表示」ですls。つまり、これを行うか、ls -pディレクトリls -Fの背後にスラッシュを一貫して追加する必要があります。本質的に、ファイルが何であると思うかについての視覚的な手がかりを追加します。 (シンボリックリンク、実行権限を持つファイル、名前付きパイプ、ソケットなどに-F接続されていることに注意してください。)vsを使用して再現することもできます。@*|=ls -d directory/ls -d directory

/私は\0これが無効なファイル/ディレクトリ名の唯一の2文字であると思います。

常にスラッシュを追加することは安全でなければならず、mydirectoryとmyfileを正しく割り当てると期待どおりvim "$mydirectory/$myfile"に機能するはずです。 (警告$mydirectory$myfile正しく割り当てられている)とfoo/bar同じfoo//barでなければなりません。

通常、私はlsの出力を変数に割り当てて処理するのが好きではありません。主に、以前はファイル名の文字と欠落している引用符が最終的に破壊的な結果になったためです。 (つまり、prefix=/home user=" oops" rm -rf $prefix$user最終的に再帰的に削除/homeしてから再帰的に削除しようとします./oops。)

私はlsを使用しませんが、bashやfind -print0 | xargs -0lsls

答え3

「クールなファイル名」という文脈でディレクトリやフォルダを考えると、フォルダはまだファイルですが、フォルダはファイルキャビネットのフォルダのようにコンテナを指すポインタに近いです。スラッシュ「/」またはスラッシュポイント「/」を使用してください。スクリプトの場合は、フォルダー以外のファイルを参照していないことを知って確認するのが役立ちます。

これが意味があることを願っています。

関連情報