Bash でオセロゲームを作ったよ
3日間の夏休みがあったので、Bash でオセロゲームを作ってみました。 コンピュータと戦う方式にしてみたんですが、自分がやると、間違えない限り自分が勝ちます。 ロジック組んだの自分だからですね、たぶん。 強くするにはどうしたらいいかを考えたいです。
View Article1分で、分かるよ。貴方が!jqコマンドを!
仕事で良くできているシェルシステムをいじる機会がありますが、シェルでJSON形式を操作する必要がありました。シェルは条件分を作成するさえややこしくて、シェル主力ではない場合はかなり生産性が低くなります。それでjqコマンドみたいなutilコマンドは大変助かります。今回はjqコマンドを触った感触と例を紹介していきたいと思います。 環境 ※...
View Article誰も知らない xargs の仕様と入力形式とPOSIXの罠 「ある環境では _ がきたらそこで処理終了ですよ」
はじめに xargs の仕様はよくわからないし罠もあります。みんな気軽に使ってばかりで、詳細を誰もまとめてくれてないのでまとめました。もちろん誰も知らないってことはないのでしょうが、よく使われるコマンドの割にこれらの話を書いている人が少なすぎるような。 予備知識 printf "[%s]\n を使うと引数ごとに [ ] で括られて表示されます。いくつの引数を渡されたの明確にするのに便利です。 $...
View ArticleSplunkとkerasを用いた不正アクセス予測検知の仕組み(前処理編)
やりたいこと アクセスログをもとに機械学習(ディープラーニング)で不正アクセスを予測する仕組み作る。 1.Splunkを使い、access.logをCSVに変換 ⇦今回の内容 2.CSVファイルをもとにJupyterLab上で教師データを作る 3.機械学習を行い、予測精度を確かめる Splunkを使う理由...
View ArticlePOSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!
はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは +...
View Article散らかったデスクトップを掃除するコマンドを作った
はじめに ズボラがたたってDesktopがぐちゃぐちゃ。。。 という状況でした。 でもちゃんと整理するのも大変なので、 せめて拡張子を元に機械的に整理しようという事で作りました。 内容 作成手順 ディレクトリ作成 まず必要なディレクトリを作成 ターミナル mkdir パワーポイント アプリケーション関係 ソースコード類 画像 テキスト コマンド作成 こちらの方法で以下内容のスクリプトを作成。...
View ArticleMarkdown のコードブロックを動的に読み込ませる
概要 次の処理をするスクリプトである. 下左図のように "Markdown もどき" を書いておき、本スクリプトを適用すると 下右図のように a.rb の内容が展開される、というものである. 動的にマークダウンを更新したいときに役立つのかも知れない.1 変換前 変換後 コード update_mdpre.sh #!/bin/bash ERROR= test -z "$1" && {...
View ArticleLinux: 自作サービスをsystemdに登録して自動起動させてみた
新しいソフトウェアをインストールした際に使用したのでメモ。 実施環境: Linux [root@testhost ~]# uname -a Linux testhost 4.18.0-331.el8.x86_64 #1 SMP Thu Aug 19 16:49:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux [root@testhost ~]# echo...
View Articlestarship で任意のディレクトリ配下にいる時だけ、必要な情報を出すようにしてみた。
こんにちは。 starship の設定をしてたら一晩経っていたので、個人的に嬉しいと思う設定を紹介したいと思います。 今回はある特定のディレクトリ配下にいる時に、欲しい情報をプロンプトに添えて出しておく設定になります。 例えばGCPとAWSを扱う複数のプロジェクトがあった時、デプロイ先がGCPのプロジェクトであればAWSの情報はノイズになりますよね。...
View Articlels -l *.txt でファイルが見つからない時の bash (POSIX shell) と zsh の微妙で大きな違いと罠
はじめに エラーメッセージが違うよね?程度でさらっと流してしまいがちですが、ls -l *.txt でファイルが見つからなかった時の bash(zsh 以外)と zsh の(デフォルト設定での)処理には大きな違いがあります。この記事では基本的に ls コマンドを例に解説していますがコマンドに依存する話ではないので他のコマンドでも同じです。 エラーメッセージの違い 空のディレクトリで bash と...
View Article【シェルスクリプト】オプションパーサーの紹介
シェルスクリプトはちょっとした処理を書くのには便利ですが、オプションや引数の制御をしっかり書こうとするとなかなか大変です。 今回は自分がよく利用するオプションパーサーの実装を紹介したいと思います。 ■ 実装 sample.sh #!/bin/bash function usage { cat >&2 <<EOS...
View Articleファイルコンテンツの改行を特定の文字に置換し標準出力する
背景 ファイルの改行をスペースやカンマに置換し、連結した文字列を標準出力したい作業があったので備忘録として、その方法を記述する。 方法 bashでサクッと実現したいのでインストール等必要ないsedを使う ファイル 今回、連結した文字列にしたいファイルの内容は下記の通り。 test.txt a b c d e f g sedを使った改行の置換...
View ArticleOpenAPI等のジェネレータツールによる更新作業の自動化、失敗時の自動ロールバックの実現
OpenAPI等のジェネレータツールによる更新作業の自動化、失敗時の自動ロールバックの実現 こんにちは、 最近はOpenAPIやgRPCであったり、それにまつわるジェネレータツールがとても熱いですね。 新規にジェネレータを走らせるのは何の憂いもなく素晴らしいのですが、 開発が進むにつれて、ディレクトリ構造が追加、変更されたり、中間処理を挟んだりと、素のジェネレータでは対応できない場合があります。...
View ArticleECS Exec(aws ecs execute-command)のログインを便利にするBashスクリプト
ソース Bashスクリプト(gist) #!/bin/bash set -eu # Prerequisite # - aws cli # - session-manager-plugin # - jq selectProfile(){ select selected in `aws configure list-profiles` do break done echo $selected }...
View Article共有Linuxマシンでbashやvimやtig設定がキツい場合の応急処置
概要 短期間 (〜1週間以内) のみ、とある Linux マシンにて 共通アカウント で作業をすることがある. このとき bash や vim や tig が次のような馴染めない挙動のことが多い. ・vim の相対行番号表示 set relativenumber が有効になっている. ・vim の配色1 やインデント幅 が自分とは違う ・vimdiff の配色がデフォルトで見辛い ・bash...
View Article[sed]【一行野郎】「コメント『#』のみ」「空行」「スペースのみ」を取り除く
概要 次の 3つを取り除いて表示するという頻出処理. 頭の記憶領域が勿体無いので書き出しておく. ・コメントのみの行 (「#」以降はコメントとする) ・空白のみの行 (半角スペース、タブスペース) ・空行 $ sed -r -e '/^([[:space:]]*)#/d' -e '/^([[:space:]]*)$/d' <ファイル>...
View Article[随時更新] Macに入れておくと便利な汎用コマンド
tree $ brew install tree ディレクトリ構造を見やすい形で確認できる $ tree . ├── README.md ├── dir1 │ ├── sample1.txt │ └── sample2.txt └── dir2 └── sample3.txt grip $ brew install grip...
View ArticleBash Scriptの作法
はじめに チーム開発でシェルスクリプト(特にBash Script)を書く際に守るべきルールをまとめます。 シェルスクリプトのコードレビューをする際等にお役立てください。 スクリプト名 -区切りの小文字英数字(いわゆるkebab-case)をつける。拡張子は.sh. OK: deploy-server.sh NG: deploy_server.sh...
View ArticleLinux: 使用できる言語について調べたい
たまたま調べる機会があったので、ついでにメモ。 実施環境: Linux [root@testhost ~]# uname -a Linux testhost 4.18.0-331.el8.x86_64 #1 SMP Thu Aug 19 16:49:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux [root@testhost ~]# echo $SHELL...
View Article