GitHub ActionsでChecksを実行できるPull Requestを作成する デフォルトのGITHUB_TOKENでPull Requestを作成した場合、そのPull RequestにフックするはずのGitHub Actions(Checks)が実行されない。
【AWS CLI】WSL2のLinuxでブラウザが使えない状況でAWS SSOで認証して実行
ブラウザが使える状況でのaws sso loginコマンドによる通常の認証 AWS SSOで認証するにはaws sso loginコマンドを使う。 $ aws sso login --profile <profile-name> <
movedブロック movedブロックはTerraformのリソース名を変更するためのブロック。 既にapply済みでAWS上に作成済みのリソー
DockerでDevice or resource busyでコピーできないresolv.confをリダイレクトで無理やり上書きする
Device or resource busy Dockerでprom/blackbox-exporter - Docker Image をベースにしたイメージを作ろうとしたときに/etc/resolv.c
GitHubでDependabotが作成したPull Requestをフィルタリングする
GitHubのPullRequestを作成者でフィルタリングする Pull Requestを作成者でフィルターしたい場合はauthor:作成者のIDを
nohupコマンドとnohup.out nohupコマンドを使うと端末を閉じてもプロセスを続行できる。 $ nohup command & このときnohup.outという
【AWS】Mac で Session Manager でリモートログイン時に ctrl+y で切断されないようにする
ctrl+yで切断される問題 MacでSession Managerによるリモートログイン時にctrl+yを入力するとセッションが切断される。 $
【Docker】docker-compose execでrootユーザーでコンテナにログインする
デフォルトユーザがrootでないコンテナで、sudoコマンドも無い場合にコンテナ内でrootユーザになる方法。 docker composeの-uオプショ
【AWS EC2】IMDSv1、IMDSv2でアカウントIDを取得するワンライナー
curlコマンドでIMDSv1のアカウントIDを取得する EC2インスタンスでは169.254.169.254にHTTPでアクセスするとインス
1Password CLIで添付ファイルがあるアイテムの一覧を取得する
1Password CLIで添付ファイルがあるアイテムの一覧を取得するワンライナー 以下のワンライナーで1Password CLIコマンドを使って添付ファイルがあ
timeコマンドの実行結果がファイルに出力できない 以下のように実行するとtimeコマンドで出力される経過時間がファイルに出力されない。 $ time ls
シェルスクリプトでテキストの先頭に連番をつける(cat -n)
テキストの連番をつけたい テキストファイルやコマンドの出力結果に連番をつけたい。 例えば以下のようなテキストがある。 xxxx yyyy zzzz このテキストに連番をつ
「ブログリーダー」を活用して、suerさんをフォローしませんか?
GitHub ActionsでChecksを実行できるPull Requestを作成する デフォルトのGITHUB_TOKENでPull Requestを作成した場合、そのPull RequestにフックするはずのGitHub Actions(Checks)が実行されない。
fluentbitの利用可能なプラグインの確認方法 fluentbitがインストールされているホストで利用可能なプラグインを確認するにはヘルプを確認すればよい。 $ fluent-bit --help ... Available Options ... Inputs (Inputプラグインの一覧...) Processors (Processorプラグインの一覧...) Filters (Filterプラグインの一覧...) Outputs (Outputプラグインの一覧...) 例えばcloudwatch_logsプラグインを利用可能か確認するにはgrepで確認できる。
設定ファイルの場所 tigのキーバインド設定は ~/.tigrc ファイルに書く。ファイルが存在しない場合は新規作成する。 touch ~/.tigrc キーバインドの基本構文 キーバインドの設定は以下の構文で記述する: bind [keymap] [key] [action] keymap: キーが有効な画面(main、diff、logなど) key: 割り当てるキー action: キーに対応するアクション よく使うキーマップ キーマップ(画面) 説明 generic 全画面で有効 main メイン画面(コミット一覧) diff 差分の表示画面 log ログ表示画面 tree ツリー表示画面 blob ファイル内容の表示画面 blame blame表示画面 refs ブランチ・タグ一覧画面 status ステータス画面 変数 アクション内で使用できる変数は以下の通り。
グループコマンドによる標準出力のリダイレクト 複数のコマンドの出力を同じファイルに出力する場合、グループコマンドの使用が推奨される。 例えば以下のように2つのコマンドが標準出力に出力する場合:
rsync -a rsync -aは-rlptgoDオプションの省略形で、短く指定できる。 -aは以下を保存して同期する。 owner(所有者) group(グループ) パーミッション タイムスタンプ 短く指定できて便利だが、-aを指定しつつ、owner(所有者)とgroup(グループ)は実行ユーザーにしたい場合がある。
trap ‘処理’ EXIT 以下の形式でtrapコマンドを使用して、スクリプトの終了時に必ず実行される処理を設定できる。 trap '処理' EXIT 例えば、スクリプトの終了時にログを出力する場合は以下のように実行する。
サンプルファイル 例として以下のファイルに文字列を挿入・削除する。 aaa bbb ccc ddd eee 行数を指定して文字列を挿入する 指定した行数の前に文字列を挿入するには、行数i 文字列の形式で実行する。 sed '行数i 文字列' ファイル名 例えば上記ファイルの3行目にxxxを挿入する場合は以下のように実行する。
データベース名を変更する方法 PostgreSQLではデータベース名を変更するためにはALTER DATABASEを使用して以下のように実行する。 ALTER DATABASE 現在のDB名 RENAME TO 新しいDB名; 変更するには変更対象のデータベースに接続しているセッションが存在しない状態で実行する必要がある。 すべてのセッションの接続を切断した上で実行する。
oid2nameコマンドでoidを取得する PostgreSQLのoid2nameコマンドを使用してテーブルやデータベースのoidを取得できる。 DBの一覧 DBを指定せずにoid2nameを実行すると、全てのデータベースの一覧が表示される。
/dev/urandom を使ったパスワード生成 /dev/urandomを使用してランダムなバイト列を生成し、ascii文字列のみを抽出してパスワードを生成する。 $ cat /dev/urandom tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?' fold -w 20 head -n 1 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?'の部分に使用したい文字セットを指定する。 生成されるパスワードの長さはfold -wの引数に指定する。上記の場合は20文字のパスワードが生成される。
ls -lでのファイルサイズの取得 ls -lコマンドでファイルサイズを取得できる。 しかしファイル名やその他の情報も表示されるため処理が必要となる。 $ ls -l ファイル名 -rw-r--r-- 1 user group 123456 May 28 23:04 ファイル名 wc -cでのファイルサイズの取得 wc -cコマンドに標準入力でファイルを流すと、ファイルのバイト数のみを取得できる。
date -r ls -lコマンドでファイルの更新日時を取得できる。 しかし更新日時の他に権限やオーナーなどの情報も表示されるため、シェルスクリプトなどで日時だけ欲しい場合などに不便。
jqコマンドでURIエンコーディング 以下のように@uriフィルターを使用してURIエンコードができる。 $ echo -n '"テスト"' jq '@uri' "%E3%83%86%E3%82%B9%E3%83%88" @uriフィルターはURIエンコードを行う。 入力をRawモードで扱う -Rオプションを指定すると、入力がJSON形式ではなくただの文字列(Rawモード)で扱える。 先述のコマンド例ではダブルクオートで囲って無理やりJSONとしているが、Rawモードを使用するとそのまま文字列を扱える。
シェルスクリプトで長い処理を待っている間に別の処理を実行する 長いコマンドを処理している間に別のコマンドを実行したい場合、以下のようにすればよい。 long_command & # 長い処理をバックグラウンドで実行 jobid=$! # プロセスIDを取得 other_command # 待っている間に別の処理を実行 wait $jobid # 長い処理が終わるのを待つ &で長い処理をバックグラウンドで実行し、$!でそのプロセスIDを取得する。 other_commandで待っている間に別の処理を実行する。other_commandは&をつけずに実行しているのでブロックする。 wait $jobidで長い処理が終わるのを待つ。 プロセスIDの変数 $!は直前にバックグラウンドで実行したジョブのプロセスIDを取得するための変数。 後の処理でkillしたり、ジョブの状態を確認したりするために使用できる。
HOMEBREW_NO_AUTO_UPDATE=1 brew installの実行時に、インストールしようとしているパッケージ以外のパッケージも自動的に更新される。 これを無効にするには、環境変数HOMEBREW_NO_AUTO_UPDATE=1を設定する。
Linux OS のディストリビューションとバージョンを確認する方法 Linux OSの多くのディストリビューションでは/etc/os-releaseが存在し、OSのディストリビューション名やバージョン情報が記載されている。 /etc/os-releaseが存在しない場合もあるが、例えばAmazon Linux 2023では/etc/system-releaseや/etc/amazon-linux-releaseが存在する。 これらの/etc/*-releaseファイルをすべて見ればどこかにはOSのディストリビューション名やバージョン情報を取得できる。
vscodevimがCopilot Next Edit Suggestions(NES)のキー入力を邪魔する GitHub CopilotのNext Edit Suggestionsは次の編集を提案する機能。 2025年2月現在はpreview段階で以下をsettings.jsonに追加すると有効になる。
docker-composeでホスト名を指定して立ち上げる docker-composeでたちあげるコンテナのホスト名を指定するにはhostnameプロパティを使う。 services: web: image: rockylinux:9.3 command: tail -f /dev/null hostname: ホスト名 例 例えば以下のようにhostnameプロパティを指定する。
tfstateからのみ削除する Terraformでリソースを破棄せずにtfstateからのみ削除するにはremovedブロックのlifecycle設定を使う。 removed { from = リソース lifecycle { destroy = false } } ポイントは lifecycle { destroy = false } を指定すること。 この指定により実際のリソースは削除されず、tfstateからのみ削除される。
importブロック Terraformのimportブロックは既存のリソースをTerraformの管理下に取り込むための機能。 terraform importコマンドでも同様にリソースを取り込めるが、importブロックを使うとコードで記述できる。 そのためバージョン管理化でインポートした事実を残せたり、コードレビューしたりできる。
yum, dnfで作成されたファイルの一覧 yumコマンドやdnfコマンドで作成されたファイルの一覧を確認するにはrepoqueryコマンドを使用する
EC2でAWS CLIの認証トークンを取得する EC2インスタンス上でAWS CLIなどで使うAWS_SESSION_TOKENに設定するトークン
Profile の一覧を表示する ~/.aws/configや~/.aws/credentialsなどに設定したAWS Profileの一覧を表示するには、a
ecspresso execコマンド ecspressoのexecコマンドを使うとECS exec を利用したコンテナへの接続を実現できる。 準備 Terraformとecs
ecspresso ecspresso はECSのタスク定義やサービスを管理するためのツール。 Terraform + ecspresso ECSの構成 ECSを構成するコンポーネントとして以下がある。 タスク定義 クラス
Terraformのplanの対象を絞る(-targetオプション) -targetオプションの使い方 Terraformのコードが大規模になっ
新規ファイル作成時のヒント文 Visual Studio Codeで新規ファイルを作成するとヒント文が表示される。 ヒント文は入力すれば消える。 ヒント文を非表示にする 上
結果が1行1列のみの場合 psqlコマンドでクエリを実行した結果をシェルスクリプトで利用するには、-qtAオプションを指定すると扱いやすくなる
VSCodeの現在行のハイライト Visual Studio Codeのデフォルト設定ではカーソルのある行が以下のようにハイライトされる。 現在行のハイライトの方法を変
curlの404のときのステータスコード curlコマンドでURLにアクセスしたとき、404 Not Foundの場合は終了ステータスコードが0になる
PostgreSQLの設定ファイルの場所を探すコマンド(show config_file) PostgreSQLの設定ファイルpostgresql.confはOSやイ
Android Studioでのエミュレータの起動 Android Studioでエミュレータを起動するとAndroid Studioのウインドウ内にエミュレータが表示され
準備 Playwrightでネイティブアプリをテストするには、以下の準備が必要。 Android Studioのインストール adbコマンドなどのエミュレータ操
同じファイル名が並ぶと見分けづらい 当サイトはHugoで生成しており、記事のファイル名はindex.mdになっている。 ファイル名index.m
CotEditorの折り返し設定 CotEditorの折り返し設定は、設定画面のウインドウタブにある。 「折り返した行のインデント」を設定すると
vscodevimのUndo/Redoで想定より多く戻る/進む Visual Studio Codeのvim拡張機能であるvscodevimを使用していると、uでUn
AWS CLIで結果をフィルタする(–filtersオプション) AWS CLIで取得した結果をフィルタするには--filtersオプションを
TerraformでALBにAWS WAFv2を適用する。 ALB 適用対象のALB。 詳細は省略。 aws_lbリソースについては公式ドキュメント を参照
S3のバケットポリシー作成でError putting S3 policy: AccessDenied: Access Denied TerraformでS3のバケットポリシーでPrincipalに対してすべてを許可しようと
S3のバケットポリシー作成でError putting S3 policy: MalformedPolicy: Action does not apply to any resource(s) in statement TerraformでS3のバケットポリシーでs3:ListBucketに対し