リモートサーバー上で、任意の時間内に何回foo bar表示さ/var/log/foo.logれるかを確認しようとしていますが、これまで試したものは何も機能しませんでした。 既にテーリングを開始してからの経過時間を追跡するために使用するタイマースクリプトがあり、テール出力に/var/log/foo.log何回foo bar出現したかを知る方法が欲しいのです。 Googleで検索しましたが、結果の最初の10ページに関連するものは見つかりませんでした。 イライラする結果で私が試したものは次のとおりです。 ## works on local machine, but doesn't work as expected on remote tail -f /var/log/foo.log | grep foo\ bar | sed '=' ## works on local, but not remote tail -f /var/log/foo.log | grep foo\ bar | cat -n - ## works on local, …
私.profileので、次のコードを使用して、ログインシェルが実際にBashである場合にのみBash関連のエイリアスと関数がソースされるようにします。 # If the current (login) shell is Bash, then if [ "${BASH_VERSION:-}" ]; then # source ~/.bashrc if it exists. if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 現在、シェル構成ファイル、スクリプト、および関数をバージョン管理下に置いています。また、最近、Bash固有の機能の恩恵を受けないカジュアルなBashismをシェルスクリプトから削除するプロセスを開始function funcname()しましたfuncname()。たとえば、に置き換えます。 シェルファイルリポジトリには、リポジトリ内の各ファイルでDebianのdevscriptsパッケージからユーティリティを実行するpre-commitフックを設定し、Bash固有の構文を誤って導入しないようにしました。ただし、これによりmyのエラーが発生します。checkbashismssh.profile possible bashism in .profile line 51 ($BASH_SOMETHING): if [ "${BASH_VERSION:-}" ]; then 私は、どのシェルが実行されているかをチェックする方法があり、それが警告をトリガーしないかどうか疑問に思っていましたcheckbashisms。 POSIXによってリストされたシェル関連の変数のリストをチェックして、現在のシェルを表示するために使用できることを期待しました。また、インタラクティブなDashシェルで設定された変数を調べましたが、適切な候補を見つけることができませんでした。 現時点では、.profile処理対象から除外していますcheckbashisms。小さいファイルなので、手動で確認するのは難しくありません。ただし、問題を調査した後、実行中のシェル(または少なくともcheckbashisms失敗を引き起こさない方法)を判別するPOSIX準拠のメソッドがあるかどうかを知りたいと思います。 さらなる背景/説明 …
誰かがこれらのツールを移植性の順に並べることができますか?これらのうち、最小の* nixシステムでさえ確実に見つかるのはどれですか?それらのいずれかが100%確実に存在しますか?私の推測では、順序は次のとおりです。 awk sed sh perl Bourneシェルにデフォルト設定されていないシステムがあると想像しますが、一部のシェルはデフォルトとして存在します/bin/sh。ボーン型のシェルでない場合はおそらくそうではありません。両方awkとsedPOSIX仕様でそれらを説明するページがあるので、おそらくそれらは常に存在するでしょう。そうですか?いずれの* nixにも両方がインストールされると確信できますか?組み込みシステムを含めますか?