hello2
現在、作業ディレクトリにはバイナリファイルがあります。
これを実行するには、それを押す必要があり、./hello2
出力が表示されます。
ただし、次のコマンドを使用しても././hello2
機能します。
シェルがこのコマンドをどのように解釈するかを説明してください。
答え1
コマンド実行時
$ ./hello2
hello2
シェルはディレクトリ内のファイルを探します.
。現在の目次。次に、いくつかの規則に従ってスクリプトまたはバイナリを実行します(この場合は興味深いものではありません)。
注文する
$ ././hello2
また、シェルにファイルを実行させます。
これは.
、とが./.
同じディレクトリであるためです。
各ディレクトリには.
ディレクトリエントリがあります。このエントリはディレクトリ自体に対応します。だから話すのは言うのと./
同じです。././
././././
唯一の違いは、システムがいくつかの追加のディレクトリ検索を実行する必要があることです(シェルがスマートで明白な単純化を確認しない限り)。
各ディレクトリには、..
そのディレクトリを指すエントリもあります。親目次。
つまりalamin
、現在のディレクトリから呼び出すと、次のコマンドもファイルを実行します。
$ ../alamin/hello2
同じ
$ ../alamin/./hello2
そして
$ .././alamin/./hello2
ルートディレクトリは/
特別なケースです。対応するカタログ項目は..
カタログ項目と同じです。.
これは、これを「再定義」するために使用できないことを意味します/..
。
また見なさい:フォルダへのリンク数が実際の状態を反映していませんか?
答え2
たとえば、コマンド名を入力すると、システムは次のhello
ファイルを検索します。PATH
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
システムがこれらのディレクトリにコマンドが見つからない場合は、command not found
エラーメッセージが表示されます。
コマンドを先頭に追加して、./
検索を現在のディレクトリに制限できます。
各ディレクトリには.
ディレクトリ自体に対応するエントリがあるため、入力を介して実行するすべての操作は、././hello
ディレクトリ自体でコマンドを見つけることに制限されます(2回)。
努力するcd ./././././
。
答え3
答えは正しいですが、他のことを言いたいのですが。次のコマンドを実行します。
┌─[luvpreet@DHARI-Inspiron-3542] - [~/Desktop/drf-vogo] - [2017-09-01 08:57:42]
└─[0] ls -la
total 60
drwxrwxr-x 14 luvpreet luvpreet 4096 Aug 14 15:30 .
drwxr-xr-x 21 luvpreet luvpreet 4096 Sep 1 00:27 ..
最初の2行には.
、..
これで、.
現在存在しているディレクトリへのポインタです。..
親ディレクトリへのポインタです。
あなたがこれをするときcd ..
、
monitoring-server@monitoring-server:~/kibana-project$ cd ..
monitoring-server@monitoring-server:~$
親ディレクトリに移動します。
あなたがこれをするときcd .
、
monitoring-server@monitoring-server:~/kibana-project$ cd .
monitoring-server@monitoring-server:~/kibana-project$
同じディレクトリに残ります。
これで、親ディレクトリのファイルを../testfile.txt
ポイントします。現在のディレクトリのテストファイルを指しますtestfile.txt
。./testfile.txt
したがって././././././././
、可能であれば同じディレクトリに保管してください。
../../../../
親ディレクトリまで1レベル上に続きます。