
私は UNIX コマンドを学ぼうとしており、このゲームで学んでいますが、今は本当に行き詰まっています。SSH 経由でサーバーに接続しており、ディレクトリにはランダムなファイルやフォルダーがいっぱいで、次のレベルのパスワードはファイルの 1 つにあります。このファイルには次の属性があると言われています。
- 人間が読める
- 1033 バイト
- 実行不可能
コマンドを使うべきだと思うのでfind
試してみましたfind ! -executable
が、大量のファイルが返されました。マニュアルやオンラインで見つけられる唯一の判読可能なヘルプは、人間が読める形式でファイル サイズを印刷することです。そこで私は少し迷っていますか?
私も試してみましたfind ~ -size 1033b
が、何も返されませんでした。しかし、試してみると、find ~ -size -1033b
ディレクトリ内のすべてのファイルが返されました。
答え1
人間が読めるファイル名をフィルタリングするには、[:print:]
(印刷可能)文字クラス名前。このようなクラスの詳細については、 のマニュアルを参照してくださいgrep
。
find . -type f -size 1033c -name "[[:print:]]*" ! -executable
よく考えてみると、「人間が読める」という要件は、ファイル名ではなくファイルの内容を指しているのかもしれません。言い換えれば、文章ファイル。これは少し複雑です。@D_Bye がコメントで示唆したように、コマンドを使用してファイルの内容の種類を判断する必要があります。ただし、パイプの後に実行するのは、ファイル名を表示するタスクが複雑になるため、おfile
勧めできません。私の提案は次のとおりです。file
find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print
- 部分の動作を簡単に説明しますfile
。
- の
-exec
述語は、前のすべての条件 (タイプ、サイズ、実行不可) を満たすsh -c 'file -b $0 | grep -q text' FILENAME
それぞれに対して実行されます。FILENAME
- これらのファイルごとに、シェル(
sh
)は次の短い脚本:をファイル名にfile -b $0 | grep -q text
置き換えます。$0
- の
file
プログラムは各ファイルのコンテンツ タイプを判別し、この情報を出力します。この-b
オプションにより、テストされた各ファイルの名前が印刷されなくなります。 grep
file
プログラムからの出力をフィルタリングし、次の行を含む行を検索します。"文章"(コマンドの典型的な出力がどのようfile
になるか、自分で確認してください。)- しかし、
grep
フィルタリングされたテキストは出力されません。-q
(静かな)オプションが与えられている。それが行うことは、単に終了ステータス0
(「真」を表す - フィルタリングされたテキストが見つかった)または1(「エラー」を意味する - テキストが見つからない)のいずれかになります。"文章"からの出力には表示されませんでしたfile
。 - からの true/false 終了ステータスはに
grep
渡され、" " テスト全体の最終結果として機能します。sh
find
-exec sh -c 'file $0 | grep -q text' {} \;
- 上記のテストが返された場合真実コマンド
-print
が実行されます (つまり、テストされたファイルの名前が印刷されます)。
答え2
find . -type f -readable -size 1033c ! -executable
ファイル サイズには c
の代わりにを使用していることに注意してください。は 512 バイト ブロックを表します。 は実際のバイトを表します。b
b
c
答え3
私が書いたのは次の通りです:
find -size 1033c ! -executable
ファイルを取得しました。どうやら人間が読める部分はあなたを混乱させるためだったようです。
答え4
ただし、ゲームの場合、正しい構文は次のようになると思います。
file ./*
各ファイルの構成をリストした結果が返されます。これは、Bandit ゲームで実現しようとしている目的に非常に有効です。このタスクの本当の難点は、各ファイルが - (ハイフン) で始まることです。