解決策 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 のコンソール スクリーン セーバーをシステム全体で永久に無効にするにはどうすればよいですか?
cronjobs のロギングを改善しますか? cron 出力を syslog に送信しますか?