ls -lでのファイルサイズの取得 ls -lコマンドでファイルサイズを取得できる。 しかしファイル名やその他の情報も表示されるため処理が必要となる。 $ ls -l ファイル名 -rw-r--r-- 1 user group 123456 May 28 23:04 ファイル名 wc -cでのファイルサイズの取得 wc -cコマンドに標準入力でファイルを流すと、ファイルのバイト数のみを取得できる。
シェルスクリプトで使えるファイルサイズのみを取得するコマンド
ls -lでのファイルサイズの取得 ls -lコマンドでファイルサイズを取得できる。 しかしファイル名やその他の情報も表示されるため処理が必要となる。 $ ls -l ファイル名 -rw-r--r-- 1 user group 123456 May 28 23:04 ファイル名 wc -cでのファイルサイズの取得 wc -cコマンドに標準入力でファイルを流すと、ファイルのバイト数のみを取得できる。
dateコマンドでファイルの最終更新日時を取得する(date -r)
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モードを使用するとそのまま文字列を扱える。
【Shell Script】長い処理を待っている間に別の処理を実行する
シェルスクリプトで長い処理を待っている間に別の処理を実行する 長いコマンドを処理している間に別のコマンドを実行したい場合、以下のようにすればよい。 long_command & # 長い処理をバックグラウンドで実行 jobid=$! # プロセスIDを取得 other_command # 待っている間に別の処理を実行 wait $jobid # 長い処理が終わるのを待つ &で長い処理をバックグラウンドで実行し、$!でそのプロセスIDを取得する。 other_commandで待っている間に別の処理を実行する。other_commandは&をつけずに実行しているのでブロックする。 wait $jobidで長い処理が終わるのを待つ。 プロセスIDの変数 $!は直前にバックグラウンドで実行したジョブのプロセスIDを取得するための変数。 後の処理でkillしたり、ジョブの状態を確認したりするために使用できる。
【Homebrew】brew installでの自動更新を無効化する
HOMEBREW_NO_AUTO_UPDATE=1 brew installの実行時に、インストールしようとしているパッケージ以外のパッケージも自動的に更新される。 これを無効にするには、環境変数HOMEBREW_NO_AUTO_UPDATE=1を設定する。
Linux OS のディストリビューションとバージョンをざっくりと確認する
Linux OS のディストリビューションとバージョンを確認する方法 Linux OSの多くのディストリビューションでは/etc/os-releaseが存在し、OSのディストリビューション名やバージョン情報が記載されている。 /etc/os-releaseが存在しない場合もあるが、例えばAmazon Linux 2023では/etc/system-releaseや/etc/amazon-linux-releaseが存在する。 これらの/etc/*-releaseファイルをすべて見ればどこかにはOSのディストリビューション名やバージョン情報を取得できる。
【VSCode】vscodevimがCopilot Next Edit Suggestions(NES)のキー入力を邪魔する問題を解決する
vscodevimがCopilot Next Edit Suggestions(NES)のキー入力を邪魔する GitHub CopilotのNext Edit Suggestionsは次の編集を提案する機能。 2025年2月現在はpreview段階で以下をsettings.jsonに追加すると有効になる。
【Docker】docker-composeでホスト名を指定して立ち上げる
docker-composeでホスト名を指定して立ち上げる docker-composeでたちあげるコンテナのホスト名を指定するにはhostnameプロパティを使う。 services: web: image: rockylinux:9.3 command: tail -f /dev/null hostname: ホスト名 例 例えば以下のようにhostnameプロパティを指定する。
【Terraform】removedブロックでリソースを破棄せずにtfstateからのみ削除する
tfstateからのみ削除する Terraformでリソースを破棄せずにtfstateからのみ削除するにはremovedブロックのlifecycle設定を使う。 removed { from = リソース lifecycle { destroy = false } } ポイントは lifecycle { destroy = false } を指定すること。 この指定により実際のリソースは削除されず、tfstateからのみ削除される。
【Terraform】import ブロックで既存リソースを取り込む
importブロック Terraformのimportブロックは既存のリソースをTerraformの管理下に取り込むための機能。 terraform importコマンドでも同様にリソースを取り込めるが、importブロックを使うとコードで記述できる。 そのためバージョン管理化でインポートした事実を残せたり、コードレビューしたりできる。
【Terraform】terraform_remote_stateでtfstateを分割する
tfstateを分割したい Terraformはリソース数が多くなってくるとplanやapplyの実行時間が長くなってくる。 planやapplyの実行時間が長くなると手元での確認やCI/CDに時間がかかるようになり、開発効率や開発体験が悪くなる。 そのためtfstateを分割してそれぞれのtfstateを小さくし、planやapplyの実行時間を短くしたい。
findコマンドだけで空フォルダを一括削除する(find -empty -deleteオプション)
findコマンドだけで空フォルダを一括削除(-empty -deleteオプション) findコマンドを使って空フォルダを一括削除するには以下のようにする。 find /path/to/dir -type d -empty -delete オプションの意味は以下の通り。 -type d : ディレクトリを対象にする -empty : 空のディレクトリを対象にする -delete : マッチしたディレクトリを削除する 上記コマンドは/path/to/dir以下の空のディレクトリを再帰的に削除する。
【Terraform】JSONを構文エラーをplanの段階で検出したい(jsonencode)
JSON文字列を必要とする引数 Terraformのリソースやデータソースの引数にはJSON文字列の指定必要とする場合がある。 例えばaws_iam_policyリソースのpolicy引数には以下のようなJSON文字列を指定する。
map関数っぽい表現 Terraformでlistやmapのようなコレクションのそれぞれの要素を変換した新たなlistやmapを作るにはfor式を使う。 list → list の場合 list型の値をlist型に変換する場合は以下のように書く。
【Android】エミュレータのアニメーションを無効にして自動テストによるスクリーンショットをきれいに撮る
自動テストで撮ったスクリーンショットが薄い Androidアプリの自動テストで画面キャプチャを取ると画面遷移の直後などで以下のように薄い画像を取得する場合がある。 これは画面遷移の直後でアニメーションの終了前にキャプチャを取得しているため。
【PostgreSQL】ページャーを無効にして大量件数の結果でも一度に出力する
psqlでページャーが有効になっている場合 psqlコマンドでクエリを実行すると、結果が多い場合にページャーが有効になる。 例えば以下のように-cオプションで結果が多いクエリを実行する。 $ psql -d testdb -c "SELECT id FROM users;" id ----- 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 : 以上のようにページャーが有効になっており、末尾に:が表示される。
【PostgreSQL】指定したテーブルのインデックスを確認する
SQLでインデックスを確認する PostgreSQLで指定したテーブルのインデックスを確認するにはpg_indexesシステムカタログをSELECTする。 SELECT * FROM pg_indexes WHERE tablename = 'テーブル名'; 例えばusersテーブルのインデックスを確認するには以下のように実行する。
注意 展開後サイズが4GB以上のzipファイルをunzipファイルで展開できないのはzip bombの可能性を考慮しているため。 以降のコマンドの実行は自分で作ったzipファイルであるなど信頼できる場合に限ること。 大きなzipファイルをunzipで展開した場合のエラー 展開後サイズが4GB以上のzipファイルをunzipファイルで展開しようとすると以下のようなエラーが発生する。
【Android】コマンドでApp Bundle(aab)をapksに変換してエミュレーターにインストールする(bundletool)
bundletool bundletool はApp Bundle(aab)ファイルを.apksファイルへ変換できる。 さらにエミュレーターや接続された端末に.apksファイルをインストールできる。
Android Studioで動作しているgradleタスクをコマンドで停止する(Timeout waiting to lock artifact cache...)
gradleタスクを停止するコマンド Androidプロジェクトでgradleタスクを停止するにはgradlewコマンドに--stopオプションを指定する。 $ ./gradlew --stop Android Studio で実行中にコマンドでgradleを実行したときに起きるエラー Android Studioでgradleタスクを実行中にコマンドでgradleを実行すると以下のようなエラーが発生する。
【Android】コマンドでアプリ一覧表示とアンインストールする
コマンドでインストールされちるアプリケーションの一覧を取得する Androidの端末やエミュレータでインストールされているアプリの一覧を取得するにはadb shellコマンドを使って以下のように実行する。 $ adb shell pm list packages package:com.google.android.networkstack.tethering package:com.android.cts.priv.ctsshim package:com.google.android.youtube ... adb shellコマンドで端末に接続した上で、端末内のOS上でpm list packagesを実行している。
エミュレータの音声をオフにする MacでイヤホンをつけているときにAndroidのエミュレータを立ち上げると音質が劣化する。 ボリュームも変わるので調節が面倒となる。 エミュレータからの音声だけでなくMac自体の音声も変わるので、他のアプリの音声も影響を受ける。 開発中で音声が必要無い場合は音声をオフにしたい。
emulatorコマンド コマンドラインでエミュレータを立ち上げるにはAndroid SDKに付属されているemulatorコマンドを使う。 emulatorコマンドはMacの場合は以下のディレクトリにインストールされている。
【Android】App Distributionからコマンドで最新バイナリをダウンロードする
Firebase App Distribution API Firebase App Distributionから最新バイナリをダウンロードするためにFirebase App Distribution API を利用する。 REST APIのprojects.apps.releases.list を利用すると、App DistributionにアップロードされたバイナリのダウンロードURLを取得できる。
【Android】Firebase App Distribution へ GitHub Actions でアップロードする
Firebase App Distribution へのアップロード GitHub ActionsでFirebase App Distributionにアプリをアップロードするには wzieba/Firebase-Distribution-Github-Action を使用して以下のように設定する。
【Wezterm】カレントディレクトリをホームにして新規タブを開くショートカット
Weztermの新規タブ 新規タブを開くために+ボタンをクリックすると、新しいシェルのカレントディレクトリは最後に開いていたタブのディレクトリと同じになる。 iTerm2のデフォルト設定では、新規タブを開くとホームディレクトリがカレントディレクトリになる。 Weztermでも同様の設定としたい。
【AWS CLI】タグを指定してEC2サーバのName一覧を取得する
タグを指定してEC2サーバのName一覧を取得するコマンド 指定したタグの値に一致するEC2サーバのNameを取得するには以下のコマンドを実行する。 aws ec2 describe-instances \ --filters "Name=tag:タグ名,Values=値" \ --query 'Reservations[*].Instances[*].Tags[?Key==`Name`].Value' \ --output text 例 タグ名がEnvironmentで値がproductionのEC2サーバのNameを取得する場合は以下のようになる。
【AWS CLI】コマンドで CloudWatch メトリクスのグラフ画像を取得する(get-metric-widget-image)
AWS CLI で CloudWatch メトリクスのウィジェット画像を取得する AWS CLIでAWS CloudWatchメトリクスのグラフを画像としてダウンロードするには以下のコマンドを実行する。
【Docker】docker compose でホストの環境変数をコンテナに引き継ぐ
docker composeでホストの環境変数を引き継ぎたい docker-compose.ymlをバージョン管理していてパスワードやトークンなどの機密情報をコンテナに渡したい場合、 docker-compose.ymlに直接書くのを避けたい。
【VSCode】VSCodeVimでCtrl+Aを無効化する
vimのctrl+a vimでctrl+aはカーソル位置の数値をインクリメントする。 あまり使わないが誤って入力してしまう場合があり、無効化したい。 VSCodeVimでctrl+aを無効化する VSCodeVimでctrl+aを無効化するには、settings.jsonにvim.handleKeysを追加し、C-aの値をfalseにする。
マッチした前後も表示する grepコマンドでマッチした行の前後数行も表示するには-数字オプションを指定する。 $ cat test.txt aaa bbb ccc ddd eee fff ggg $ grep -2 ddd test.txt bbb ccc
【unzip】日本語ファイル名(Windows)を含むzipをLinuxで解凍する(-O cp932)
Windowsで作ったzipをLinuxでunzipコマンドで解凍すると文字化けする Windowsで作ったzipファイルをLinux(UTF
yum, dnfで作成されたファイルの一覧を確認する(repoquery --list, --whatprovides)
yum, dnfで作成されたファイルの一覧 yumコマンドやdnfコマンドで作成されたファイルの一覧を確認するにはrepoqueryコマンドを使用する
【AWS】EC2上でIMDSv2でAWS_SESSION_TOKENを取得する
EC2でAWS CLIの認証トークンを取得する EC2インスタンス上でAWS CLIなどで使うAWS_SESSION_TOKENに設定するトークン
【AWS CLI】設定済み Profile の一覧を表示する
Profile の一覧を表示する ~/.aws/configや~/.aws/credentialsなどに設定したAWS Profileの一覧を表示するには、a
【Terraform】ecspresso execコマンドでコンテナ内に接続する
ecspresso execコマンド ecspressoのexecコマンドを使うとECS exec を利用したコンテナへの接続を実現できる。 準備 Terraformとecs
TerraformとecspressoでECS(Fargete)を構築する
ecspresso ecspresso はECSのタスク定義やサービスを管理するためのツール。 Terraform + ecspresso ECSの構成 ECSを構成するコンポーネントとして以下がある。 タスク定義 クラス
【Terraform】planの対象を絞って変更の確認を高速にまわす(-targetオプション)
Terraformのplanの対象を絞る(-targetオプション) -targetオプションの使い方 Terraformのコードが大規模になっ
新規ファイル作成時のヒント文 Visual Studio Codeで新規ファイルを作成するとヒント文が表示される。 ヒント文は入力すれば消える。 ヒント文を非表示にする 上
【PostgreSQL】psqlコマンドの結果をシェルスクリプトで利用する(psql -qtAF)
結果が1行1列のみの場合 psqlコマンドでクエリを実行した結果をシェルスクリプトで利用するには、-qtAオプションを指定すると扱いやすくなる
VSCodeの現在行のハイライト Visual Studio Codeのデフォルト設定ではカーソルのある行が以下のようにハイライトされる。 現在行のハイライトの方法を変
【curl】404 Not Foundで0以外の終了ステータスコードを返すようにする
curlの404のときのステータスコード curlコマンドでURLにアクセスしたとき、404 Not Foundの場合は終了ステータスコードが0になる
【PostgreSQL】postgresql.confの場所を探す(show config_file)
PostgreSQLの設定ファイルの場所を探すコマンド(show config_file) PostgreSQLの設定ファイルpostgresql.confはOSやイ
【Android Studio】エミュレータをスタンドアロンで起動する
Android Studioでのエミュレータの起動 Android Studioでエミュレータを起動するとAndroid Studioのウインドウ内にエミュレータが表示され
【Android】Playwrightでネイティブアプリをテストする
準備 Playwrightでネイティブアプリをテストするには、以下の準備が必要。 Android Studioのインストール adbコマンドなどのエミュレータ操
【VSCode】同じファイル名のタブの表示をカスタマイズして見やすくする
同じファイル名が並ぶと見分けづらい 当サイトはHugoで生成しており、記事のファイル名はindex.mdになっている。 ファイル名index.m
CotEditorで折り返し表示の有効・無効を切り替える方法
CotEditorの折り返し設定 CotEditorの折り返し設定は、設定画面のウインドウタブにある。 「折り返した行のインデント」を設定すると
【VSCode】vscodevimのUndo/Redoが想定より多く操作する問題に対処する
vscodevimのUndo/Redoで想定より多く戻る/進む Visual Studio Codeのvim拡張機能であるvscodevimを使用していると、uでUn
AWS CLIで結果をフィルタする(–filtersオプション) AWS CLIで取得した結果をフィルタするには--filtersオプションを
TerraformでALBにAWS WAFv2を適用する。 ALB 適用対象のALB。 詳細は省略。 aws_lbリソースについては公式ドキュメント を参照
【Terraform】Error putting S3 policy: AccessDenied: Access Deniedの対処法
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に対し
【VSCode】draw.io統合拡張でAWSの部品をサイドバーに配置する
サイドバーにAWSの部品を追加する Visual Studio Codeのdraw.io統合拡張でAWSの部品をサイドバーに追加できる。 まずサイドバーの+ More Shape
【VScode】draw.io統合拡張で図が見づらいときにテーマを変更して見やすくする
Draw.ioで図が見づらいテーマ Visual Studio Codeのdraw.io統合拡張を使用しているとき、部品によっては色が決まっていてテーマによっては見づ
GitHub Actionsのself-hosted runnerをCodeBuildで動かす
CodeBuildがGitHub Actionsのself-hosted runnerをサポート CodeBuildがGitHub Actionsの
構成 2つのAWSアカウントのS3バケット間でファイルをコピーする設定を考える。 構成としては以下のようになる。 権限設定としては以下のようになる
構成 別のAWSアカウント内のS3バケットにアクセスする設定を考える。 構成としては一方のAWSアカウントにアクセスするAWS Userがあり、他
diffの行番号 tigのdiffでは行番号が表示される。 この画面からコピーして他人に共有したいとき、コピー内容に行番号が含まれてしまい邪魔に
【Shell】コマンド引数にスペースを含む値を持つ変数を渡したときの動作(SH_WORD_SPLIT)
変数内のスペースを含む値を渡す スペースを含む文字列を変数に格納してコマンドの引数として渡すときの動作を考える。 例えば以下のようにfiles変
【Packer】Rocky Linux 8 の yum update 済み AMI を作成する
Rocky Linux 8 の AMI Rocky Linux 8のEC2インスタンスが欲しいが、それなりに古いAMIであるため初回のyum updateの実行に時間がかかる。 そこでyum up
【tig】Staging is not supported for wrapped linesの対処方法
Staging is not supported for wrapped lines tigのStaging Viewで1を入力して1行だけステージングしたいときに以下のエラーメッセージを表示する場合がある。 Staging is not
【AWS CLI】AWS IAM Identity Center(AWS SSO)のユーザ名を変更する
AWS CLIでAWS IAM Identity Centerのユーザ名を変更する AWS IAM Identity Center(AWS SSO)のユーザ名は管理コンソールから変更するUIが提供されていない。 代わりにA
【s3get】ワンバイナリでS3からファイルをダウンロードする
s3get s3getはワンバイナリでS3からファイルをダウンロードするためのツール。 AWS CLIを使わずにS3からファイルをダウンロードしたい場合に利用
通常使うCocoapodsのSpecs Cocoapodsの依存定義はCocoaPods/Specs リポジトリにある。 Cocoapodsを使用
Github Actions でコミットを作る エラー GitHub Actionsでコミットを作るにはuser.nameとuser.emailの設定が必要となる。 設定していない場合
標準出力を直接 gzip 圧縮する -c オプション コマンドの標準出力を直接gzipコマンドで圧縮するには-cオプションを指定して以下のようにする。 コマンド
BSD sed Macの標準のsedはBSDのsedでGNUのsedとはオプションが異なる。 例えば-iオプションでファイルを編集する場合、BSDのsed
【Java】System.console()でコンソールから入力を受け取る
プロンプトを表示して入力を受け取る Javaでコンソールから入力を受け取るにはSystem.console()を使う。 (JDK 1.6以降) import java.io.Console; public class Main
【openssl】指定したURLの証明書をコマンドで確認する
opensslコマンドで指定したURLの証明書を確認する httpsのURLの証明書をコマンドで確認するにはopensslコマンドを使う。 $ openssl
文字のASCIIコードを表示する printfコマンドで文字を%dでフォーマットするとその文字のASCIIコードが表示される。 $ printf "%d\n" "'A" 65 シェル
【シェルスクリプト】変数や引数のデフォルト値 ${var:-default} ${1:-default}
変数のデフォルト値 シェルスクリプトで変数が未定義の場合や空の場合にデフォルト値を設定する方法。 ${var:-default} ${var:-default}のように${}
【GitHub Actions】シェルスクリプトでSTEPをまたいでPATHを通す(GITHUB_PATH)
GITHUB_PATH変数 GitHub Actions内のシェルスクリプトでGITHUB_PATH変数にリダイレクトでパス文字列を追加すると、そのパスが
uname -m Linuxでアーキテクチャを確認するにはunameコマンドを使う。 -mオプションを指定するとアーキテクチャが表示される。 $ uname -m aarch64 macO
【1Password】アカウントを追加する方法(Ver.8)
アカウントの追加 すでに1Passwordを利用していて、別のアカウントを追加したい場合の手順。 まずは1Passwordアプリに既に登録されて
SQLでテーブル一覧を取得する PostgreSQLでテーブル一覧を取得するにはinformation_schema.tablesテーブルを参
【PostgreSQL】psqlコマンドでcsv, tsv形式でクエリ結果を出力する
CSV形式でクエリ結果を出力する psqlコマンドでクエリ結果をCSV形式で出力するには以下のようにする。 psql -h ホスト名 -U ユーザ名 -d データベース
【PostgreSQL】テーブルのレコード件数を高速に概算する
高速なレコード件数の取得 PostgreSQLで大量のレコードを含むテーブルでcount関数を使って件数取得すると時間がかかる。 SELECT count(*) FROM テーブル
【GitHub CLI】組織・ユーザ以下のリポジトリのWebhookを一覧表示する
GitHub CLIで組織以下のリポジトリのWebhookを一覧表示する GitHub CLIで組織以下のリポジトリのWebhookを一覧表示するには以下のようにする
【PostgreSQL】json文字列の要素を追加・更新する(jsonb_set, jsonb_insert)
jsonb_set関数 jsonb_set関数はJSON文字列の要素を更新する関数。 以下の書式で定義される。 jsonb_set(target, path, new_value, [create_missing]) target: 更新対象のJSON path: 更新
【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 このテキストに連番をつ
【PostgreSQL】標準入力で受け取った構文エラーのSQLをpsqlで実行したときのステータスコードを0以外にする
psqlでエラーが出てもステータスコードが0になるパターン psqlコマンドでSQLファイルから標準入力で受け取って実行するには以下のようにす
aws ssmコマンドでポートフォワード AWS CLIのサブコマンドaws ssm start-sessionではログインだけでなくポートフォワードもできる。 セ
【Docker】ホストOSからコンテナ内でコマンドを実行する
ホストOSからコンテナ内でコマンドを実行する docker container execコマンド ホストOSからコンテナ内でコマンドを実行するにはdocker container execコマン
TFLintの設定については以下を参照。 【TFLint】Terraformのコードをチェックする terraform_deprecated_index リソースの配列.*.リソースの属性 のように
【Apache】mod_proxyの代わりにmod_rewriteでリバースプロキシを設定する
mod_proxyで長いURLは設定できない Apacheのmod_proxyを使って長いURLを設定しようとした。 ProxyPass /something/ https://...
【Docker】コンテナの外から動作しているプロセスを調べる(docker container top)
docker container topコマンド Dockerコンテナは最小限のコマンドしかインストールされていないことが多い。 そのためコンテナの中に入ったとしてもpsコマ
ウインドウの画面キャプチャでつく余白 Command+Shift+4の後Spaceキーを入力し、マウスでウインドウをクリックすると、そのウイン
【Mac】1Password CLIのインストールと初期設定
1Password CLIのインストール Macの場合はHomebrewでインストールできる。 $ brew install 1password-cli その他のOSの場合は以下を参照。 Get started with 1Password CLI 1Password Developer 正常にイン
【Hugo】CloudFront+S3構成で404(Not Found)ページを作成する
前提 CloudFront+S3構成でサイトを公開していること。 AWS CloudFrontの設定 コンソールでの作成 CloudFrontディストリビ
【Terraform】CloudFront + S3 + Origin Access Control(OAC)でS3のオブジェクトを公開する
Origin Access Control(OAC) S3のオブジェクトをCloudFrontで配信する方法の1つ。 S3を非公開設定にしてCloudFrontからのみアクセスできるようにす
「ブログリーダー」を活用して、suerさんをフォローしませんか?
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ブロックを使うとコードで記述できる。 そのためバージョン管理化でインポートした事実を残せたり、コードレビューしたりできる。
tfstateを分割したい Terraformはリソース数が多くなってくるとplanやapplyの実行時間が長くなってくる。 planやapplyの実行時間が長くなると手元での確認やCI/CDに時間がかかるようになり、開発効率や開発体験が悪くなる。 そのためtfstateを分割してそれぞれのtfstateを小さくし、planやapplyの実行時間を短くしたい。
findコマンドだけで空フォルダを一括削除(-empty -deleteオプション) findコマンドを使って空フォルダを一括削除するには以下のようにする。 find /path/to/dir -type d -empty -delete オプションの意味は以下の通り。 -type d : ディレクトリを対象にする -empty : 空のディレクトリを対象にする -delete : マッチしたディレクトリを削除する 上記コマンドは/path/to/dir以下の空のディレクトリを再帰的に削除する。
JSON文字列を必要とする引数 Terraformのリソースやデータソースの引数にはJSON文字列の指定必要とする場合がある。 例えばaws_iam_policyリソースのpolicy引数には以下のようなJSON文字列を指定する。
map関数っぽい表現 Terraformでlistやmapのようなコレクションのそれぞれの要素を変換した新たなlistやmapを作るにはfor式を使う。 list → list の場合 list型の値をlist型に変換する場合は以下のように書く。
自動テストで撮ったスクリーンショットが薄い Androidアプリの自動テストで画面キャプチャを取ると画面遷移の直後などで以下のように薄い画像を取得する場合がある。 これは画面遷移の直後でアニメーションの終了前にキャプチャを取得しているため。
psqlでページャーが有効になっている場合 psqlコマンドでクエリを実行すると、結果が多い場合にページャーが有効になる。 例えば以下のように-cオプションで結果が多いクエリを実行する。 $ psql -d testdb -c "SELECT id FROM users;" id ----- 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 : 以上のようにページャーが有効になっており、末尾に:が表示される。
SQLでインデックスを確認する PostgreSQLで指定したテーブルのインデックスを確認するにはpg_indexesシステムカタログをSELECTする。 SELECT * FROM pg_indexes WHERE tablename = 'テーブル名'; 例えばusersテーブルのインデックスを確認するには以下のように実行する。
注意 展開後サイズが4GB以上のzipファイルをunzipファイルで展開できないのはzip bombの可能性を考慮しているため。 以降のコマンドの実行は自分で作ったzipファイルであるなど信頼できる場合に限ること。 大きなzipファイルをunzipで展開した場合のエラー 展開後サイズが4GB以上のzipファイルをunzipファイルで展開しようとすると以下のようなエラーが発生する。
bundletool bundletool はApp Bundle(aab)ファイルを.apksファイルへ変換できる。 さらにエミュレーターや接続された端末に.apksファイルをインストールできる。
gradleタスクを停止するコマンド Androidプロジェクトでgradleタスクを停止するにはgradlewコマンドに--stopオプションを指定する。 $ ./gradlew --stop Android Studio で実行中にコマンドでgradleを実行したときに起きるエラー Android Studioでgradleタスクを実行中にコマンドでgradleを実行すると以下のようなエラーが発生する。
新規ファイル作成時のヒント文 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に対し
サイドバーにAWSの部品を追加する Visual Studio Codeのdraw.io統合拡張でAWSの部品をサイドバーに追加できる。 まずサイドバーの+ More Shape
Draw.ioで図が見づらいテーマ Visual Studio Codeのdraw.io統合拡張を使用しているとき、部品によっては色が決まっていてテーマによっては見づ
CodeBuildがGitHub Actionsのself-hosted runnerをサポート CodeBuildがGitHub Actionsの
構成 2つのAWSアカウントのS3バケット間でファイルをコピーする設定を考える。 構成としては以下のようになる。 権限設定としては以下のようになる
構成 別のAWSアカウント内のS3バケットにアクセスする設定を考える。 構成としては一方のAWSアカウントにアクセスするAWS Userがあり、他
diffの行番号 tigのdiffでは行番号が表示される。 この画面からコピーして他人に共有したいとき、コピー内容に行番号が含まれてしまい邪魔に