GNU/Linux >> Linux の 問題 >  >> Linux

テールとワイルドカード文字

解決策 1:

次のことを望んでいると思います:

tail -n 10 *-access.log

理由について :
グロビングとは何の関係もないと思います:

tail -10 foo-access.log arf-access.log 
tail: option used in invalid context -- 1

あなたのグロブが1つのファイルに展開されるのは偶然だと思います。おそらく、古風なオプションの解析と関係があると思いますが、読むのが面倒ですが、本当に知りたい場合は tail.c を見てください。 coreutils ソースで、次の関数を分析します:

parse_obsolete_option (int argc, char * const *argv, uintmax_t *n_units)

解決策 2:

少し古いですが、質問はまだ関連しています。同様の問題に遭遇しました

ssh myserver.com 'tail -2 file-header*'

エラーが発生しました

<ブロック引用>

tail:無効なコンテキストで使用されたオプション -- 2

ただし、テーリング

のように 1 つのファイルのみ
ssh myserver.com 'tail -2 file-header-file-one'

正常に動作します。ソース tail.c を見る 尻尾を示しています obsolete の解析から開始します 残り (すなわち、まだ処理されていないオプション)、通常のオプションを解析します。ただし、parse_obsolete_option() 引数として 1 つのファイルのみを使用して、「廃止された」使用法を想定しています。
したがって、さらにファイルを提供すると、関数はすぐに戻り、通常のパーサーが -2 でチョークします。 (期待 -n 2 ).

  /* With the obsolete form, there is one option string and at most
     one file argument.  Watch out for "-" and "--", though.  */
  if (! (argc == 2
         || (argc == 3 && ! (argv[2][0] == '-' && argv[2][1]))
         || (3 <= argc && argc <= 4 && STREQ (argv[2], "--"))))
    return false;

結論として、常に -n を使用することをお勧めします 「廃止された」コードは 1 つのファイルしか受け入れないことを知っているので、通常の形式です。


Linux
  1. Linuxのヘッドコマンドとテールコマンドを例で説明

  2. [ガイド]aptとapt-getコマンド、そしてどちらを使用しますか?

  3. TAMとは何ですか?なぜあなたはTAMになりたいのですか?

  1. ファイルの内容をエンコードして1行としてエコーしますか?

  2. 制御文字、信号、端末の関係は?

  3. cp および mv での Linux ワイルドカードの使用

  1. Grep And Tail -f?

  2. Ubuntu 16.04とAmdgpuの問題?

  3. Upterm –1つのアプリでのIDEとターミナルエミュレータ