検索機能の出力として提供されたファイルを追跡するには? [閉鎖]

検索機能の出力として提供されたファイルを追跡するには? [閉鎖]

私はUnix環境が初めてです。クラスタの計算結果を監視する関数を使いたいです。私はこの機能を試してみましたが、それをエイリアスセクションの下の.bashrcファイルに入れました。

function tj(){ 
    tail -100f $(find . -type f -name "*.o$1")
}

それから

tj 1234

ファイルの内容を見ると、dm.o1234私が望むものは何もなく、実際には何も得られません(ただ>)。

エラーがどこにあるのかご存知ですか?

ベストアンサー1

問題の正確な原因が何であるかはわかりませんが、コードは次のとおりです。指定されていない領土はここです。

  • function tj()tj()標準関数定義構文ではなく、Bourne / POSIX構文(使用済み)もKorn構文(使用されていないfunction tj()でもありません。一部のシェル(bash、zsh、pdksh)はほとんど偶然にこれをサポートしています。
  • tail -100fPOSIX 指定されていません。 POSIX構文はtail -f -n 100
  • POSIXはtail最大1つの引数を受け入れます。複数の引数が渡された場合、動作は指定されません。いくつかの実装(例:GNU)はtail複数のファイルを並列に監視できますが、他の実装はそうではありません。この目的のために設計された尾などのコマンドをインストールしてみることができます。multitail
  • $(find...)Split + glob演算子が呼び出されるため、デフォルト値を使用すると、$IFSファイルパスにスペース、タブ、改行、またはワイルドカードが含まれている場合、操作は正しく機能しません。findファイルが返されない場合は、stdintailでも終了します。

ここでzshコマンドを使用し、次のように定義できます。

tj() multitail ./**/*.o$1(.)

一致するファイルがない場合(tailstdinを使用する代わりに)、エラーが報告されます。また、代わりにfindソートされたファイルのリストを提供し、隠しファイルまたは隠しディレクトリのファイルをスキップします(D必要に応じてglob修飾子を追加します)。


>編集内容によると、実行時にtjプライマリ>セカンダリプロンプトが()であることを確認すると、エイリアスも定義し$PS2た可能性が高くなりますtj(次のように定義できます)。後ろに関数定義tj、そうでなければ関数定義エラーが発生しますtj)。

たとえば、実行すると、次の内容が表示されます。

alias tj='for sure'

(終了していないforループ)または自己完結型のコードであり、シェルはこれを完了するように促すプロンプトを表示します。

エイリアスの定義解除を使用できます(unalias tj存在する場合は、定義からその定義を削除して、次回の実行時に再表示されないようにしてください)。~/.bashrcbash

もちろん。*.o1234>

おすすめ記事