同じコマンドのバリアントは、同じ/類似の結果を返します。

同じコマンドのバリアントは、同じ/類似の結果を返します。

私は人々にLinuxと倫理的なハッキング技術を教えるために設計されたゲームを提供するパブリックサーバーを開発しています。 (これまで)各レベルの目標は、次のレベルのSSHパスワードを見つけて、これを実行するのに役立つさまざまなコマンドを提案することです。私は現在、次の目標がリストされているレベルで作業しています。

The password for the next level is stored in a file somewhere under the 
inhere directory and has all of the following properties:
     human-readable
     1033 bytes in size
     not executable

推奨されるコマンドは次のとおりです。ls、cd、cat、file、du、find

Unix と Linux StackExchange では、この演習に関連する 2 つの別々の質問/回答を見つけました。これらを見つけることができますここそしてここ。両方のコマンドセットは基本的に同じ情報を出力します。たとえば、最初のリンクから受け入れられる答えと出力は次のようになります。

bandit5@bandit:~/inhere$ find . -type f -size 1033c ! -executable -exec file {} + | grep ASCII                          
./maybehere07/.file2: ASCII text, with very long lines

私はこのコマンドを少し試してみたので、最初にコマンドからgrepを削除してからもう一度実行しました。その後、実行できなかったスイッチとファイルコマンドを削除して再実行しました。

bandit5@bandit:~/inhere$ find . -type f -size 1033c ! -executable -exec file {} +                                       
./maybehere07/.file2: ASCII text, with very long lines

bandit5@bandit:~/inhere$ find . -type f -size 1033c                                                                     
./maybehere07/.file2

このコマンドの最短バージョンが私が探している正確な情報を返すことは明らかです。 Unix および Linux StackExchange の上の 2 番目のリンクは、上記のコマンドの最短バージョンと同じ情報を返すより長く正確なコマンドです。

同様の状況で出力を取得するためにこれらの長いコマンドが役に立ちますか?これらの長いコマンドは、より短いコマンドが分析できない出力を解析しながら検索する回答の範囲を絞り込みますか?

答え1

あなたの質問に答えると(非推奨にもかかわらず)はい。最初にコマンドを書いた人が利用可能なすべての情報を使用しようとしたからです。質問には、ファイルが、、、と表示さhuman-readable1033 bytes in sizeますnot executable。元のコマンドは次のとおりです。

find . -type f -size 1033c ! -executable -exec file {} + | grep ASCII

さて、それを部分に分けてみましょう。

-type f(ディレクトリではなく)ファイルを探していることを意味します。

-size 1033c1033バイトファイルを探しているという意味です。

! -executable実行不可能なファイルを探していることを意味します。

-exec file {} +find で見つかったすべてのファイルに対して file コマンドを実行しようとしていることを示します。

| grep ASCIIここでは、前のコマンドの出力をgrepにパイプして、ASCIIを含む行のみを検索します。

私はそれぞれ1033バイトfile1のバイナリデータで構成された3つのファイルを作成しました。file2これはあなたが探しているファイルfile3のコピーfile1ですが、実行可能としてマークされています。このディレクトリで提案されたコマンドの出力は次のとおりです。

jon@jon-HP-Pavilion-15-Notebook-PC:~/temp$ find . -type f -size 1033c ! -executable -exec file {} + | grep ASCII
./file2: ASCII text, with very long lines
jon@jon-HP-Pavilion-15-Notebook-PC:~/temp$ find . -type f -size 1033c ! -executable -exec file {} +
./file2: ASCII text, with very long lines
./file1: data
jon@jon-HP-Pavilion-15-Notebook-PC:~/temp$ find . -type f -size 1033c
./file2
./file1
./file3

ご覧のとおり、これらのコマンドは複数のファイルに対して非常に異なる動作をします。テスト環境で同じように見えるのは、1033バイトのファイルが1つしかないためです(公平に言えば実際にはそうかもしれませんが、実際にはファイルの正確なサイズがわかりません)。

関連情報