私が理解している制限では:
./filename
filename
スクリプトとして実行されます。./
現在のディレクトリを表します。
./がaの前に来ると、その効果は何ですか(ある場合)グローバル予選(フィルター):
qpdf --empty --pages ./*.pdf(nOn) -- output.pdf
この質問は、なしで実行しても./
同じ結果が出てくるようで尋ねることです。
答え1
プレフィックス./
(またはパス)は、ダッシュで始まるファイル名がオプションと見なされないようにします。
$ touch ./-l foo bar
$ ls
bar foo -l
$ ls *
-rw-r--r-- 1 ilkkachu ilkkachu 0 Nov 3 15:10 bar
-rw-r--r-- 1 ilkkachu ilkkachu 0 Nov 3 15:10 foo
必要な問題はそれである。シェルワイルドカードを拡張し、例えばls
パラメータを見ると、-l
それがファイル名のワイルドカードから来たのか、それともユーザーが自分で作成したのかを知る方法はありません。
上記で呼び出されたファイルは長いリストに切り替わり-l
ます。ls
これらのファイル名を使用するとinvalid option
エラーが発生する可能性があります。またはコマンドがあり、rm
ファイル名が-rf
。
これは、ファイル名に対するUnixシステムの緩い態度を間違いなく「間違って」作る要因の1つに過ぎません。詳細については、David Wheelerによって書かれて記事をチェックしてください。
答え2
ドットスラッシュ構造は「filename
スクリプトとして実行」されません。これは、「現在のディレクトリで検索」というシェル(または入力を解釈する他のプログラム)のコマンドです。コマンドが現在の作業ディレクトリにあり、現在の作業ディレクトリが検索パスにない場合は、通常、コマンド(バイナリまたはスクリプト)の前に追加されます。qpdf
例のように、コマンドでこれを使用することは、コマンドを呼び出したディレクトリに出力ファイルを配置したい場合に別のディレクトリからソースファイルをインポートする方法です。