ディレクトリにアクセスするために現在のディレクトリを表すためにドットを使用する必要がありますか、それともファイルにのみ使用する必要がありますか?
たとえば、現在のディレクトリにディレクトリとファイルがfoo
含まれている場合は、いつポイント文字を省略できますか?bar
baz.txt
./bar
./baz.txt
ベストアンサー1
ファイルパスが必要な場合は、./foo
書き込みを使用できるfoo
場所はわずか数箇所です。./foo
./foo
書き込みは、予想されるパスが必ずしもパスではなく、検索パスにあるファイル名である場合に便利です。最も一般的な状況は、実行可能なコマンドを呼び出すときです。リストされたディレクトリで実行可能なプログラムを検索するPATH
変えるただし、この照会は、指定されたコマンド名にスラッシュが含まれていない場合にのみ実行されます。したがって、PATH(通常)のコマンドをls
呼び出すと、現在のディレクトリで実行可能なプログラムが呼び出されます。より一般的には、書き込みは名前のシェルエイリアス、関数、または組み込み機能も無視します。ls
/bin/ls
./ls
ls
./foo
foo
プレフィックスのもう1つの用途./
は、特定の特殊文字で始まるファイル名に関する問題を回避することです。特に、ファイル名をコマンドに引数として渡す場合、ほとんどの場合、コマンド-
はで始まる場合、誤って解釈された-
オプション。ただし、これは相対パス(つまり、次に始まらない)の場合にのみ機能します。ファイル名を保護するもう1つのより一般的な方法は、ファイル名をコマンドラインに配置することです。 (通常、次のものがオプションではなく引数であることを示します。)(ただし、これが特定の場合に常に機能するわけではありません。そうであれば、多くのコマンドは次のことを意味します。「標準入力」)。このトピックについては、以下を参照してください。"./$filename"
"$filename"
-
$filename
/
--
mycommand -- "$filename"
--
$filename
-
スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?そしてbash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク