概要
これをみてたら、grepとかよく知らんのを触ってみたくなった
これまでターミナル雰囲気で触っていたのを、ちょっとやってみたいとなった感じ
動画から
ls -R | grep ramen | ws
そもそもls
に再帰用のコマンドがあるのを知らなかった。
>,>>
合わせて雰囲気で使っていた>
,>>
もちょろっと調べた
>
: 上書き
>>
: 追記
sudo tcpdump -nn >> hoge.log
よくサーバーに到達しているかの確認とかで、このようにしていたが、、知らんかった
grep
あんまりこれでは意味がないが、でもできると手段が増えていいな
sudo tcpdump -nn | grep ack
これはなんか普通にログが出てしまった。ダメだね
docker compose up | grep warn
Geminiに聞いて試してみた
対処法:標準エラー出力を標準出力にリダイレクトする
2>&1 という記述を加えることで、標準エラー出力 (ファイルディスクリプタ 2) を標準出力 (ファイルディスクリプタ 1) に合流させ、grep に渡すことができます。
docker compose up 2>&1 | grep 500
これでいい感じにやりたいことができる。
すげえ
複数文字当てたりしてみた。
ステータスコードがエラーの時と、errorとかがある時
docker compose up 2>&1 | grep -E -i 'error|warn|"status": "4[0-9]{2}|"status": "5[0-9]{2}'
でも、んー本当に欲しいものを取りこぼしちゃうな、、、
難しいところ
Geminiにいい感じに変更してもらった
→正規表現の修正と、-C
を利用して前後2行を出してくれた
docker compose up 2>&1 | grep -E -i -C 2 'error|warn|"status": "(4|5)[0-9]{2}"'
# マッチした行の前後2行 (計5行) を表示
sedで色変えするのいいな、、
結局Logを大量に見るときにErrorとかの色を後付けできた方がうれしく感じる
正直grepでログを絞るよりも色で視覚的にやった方が正直みやすいかも
# 例: "ERROR" という文字列を赤色で強調表示する (ターミナルが対応していれば)
docker compose up 2>&1 | sed 's/ERROR/\x1b[31mERROR\x1b[0m/g' | grep --color=never -E -i 'error|warn'
# sedでERRORを赤くした後、grepでフィルタリング(grep自身のカラーリングは無効化)
# この例は少し複雑ですが、sedの置換能力を示しています。
;,&&,||の違い
特に理解せずに、;と&&を使っていたが、&&
は成功したら後ろの処理が実行される
||
は前の処理が失敗したら次のを実行する
処理をバックグラウンドにする
docker compose up &
-dコマンドでもできるけど、それとはまた違うねえ
jobsで確認できるのいいね
でも、状態とまってるは、、、
実際アクセスできないし、、、意味ねえな
$ jobs
Job Group State Command
1 79467 stopped docker compose up &
これで一応表に持って来れるらしい
$ fg 79467 # fg %1 #これが推奨らしい。失敗失敗
持ってきたら動き始めた
Dockerがttyにアクセスしているらしい。正直よくわからんが、まあ普通に-d
を利用しろということだろう
長く動くようなコマンドで占拠されないようにするにはまあ、手軽で良さそうだけど忘れちゃいそう
まとめ!
コマンドしれるとなんか楽しい!