grepが時々2つのスラッシュを持つディレクトリを返すのはなぜですか?

grepが時々2つのスラッシュを持つディレクトリを返すのはなぜですか?

走ったばかりgrep -ri foo someDir/

帰ってきた

someDir//foo/bar/baz: onDelete() {

二重スラッシュは、左側のすべての項目がgrepに提供するdirパラメータにあることを意味しますか?

答え1

コマンドを実行するとき:

grep -r <pattern> <directory>

すべてのファイル名を<directory>/<filename>。最後にスラッシュを追加すると、スラッシュも<directory>含まれるため、二重スラッシュになります。

コードは元のディレクトリ名がいつ終わるかを認識し、/ファイル名を印刷するときにそれを省略するのに十分賢いかもしれませんが、彼らは気にしませんでした。私はそれの唯一の特別なケースはルートディレクトリだと思います。

grep -r pattern /

/foo/bar/baz代わりにが印刷されます//foo/bar/baz。これは、POSIX が一連のスラッシュを単一のスラッシュと同じように扱うことを指定するためです。とは別に2つの先行スラッシュは実装によって意味があります(一部のネットワークファイルシステムメカニズムは同様の構文を使用するためです//server/pathname)。バラよりLinuxは複数の連続パス区切り文字(/home///username///files)をどのように処理しますか?

関連情報