Unix 系 OS でスクリプトの先頭に書かれる #! のこと。 また、#! から始まる以下のような行のことを shebang line という。
#!/usr/local/bin/ruby
#! に続くパスで、スクリプトを実行するプログラムを指定する。 CGIを使うときによくお世話になる。
(2023-08-21 初稿 - 2023-08-22 追記) bash等のスクリプトをファイルに記述する場合は、先頭行にshebang(シバン)を記述する。shebangでスクリプトを実行する処理系(インタプリタ)を指定することになる。 bashでは、以下のように記述することが多い。 $ which bash /usr/bin/bash 筆者のDebianでは、上記のとおりなので、以下のように記述する。 #!/usr/bin/bash 他のディストリビューション等で実行する可能性があるスクリプトの場合は、envを用いることにより、$PATHを走査してbashの在処を探って実行してくれるので、…
こんにちは、lisです! Linuxのファイルを見ていると、#!/bin/bashみたいの書かれてるの見たことないですか? この先頭行にあるやつ「シバン(shebang)」についてです。
はじめに プライベートサブネットに配置しているEC2に対してインストールしたいアプリやセキュリティパッチなどを当てたい場合、一般的にはインターネットに接続する必要があります。 ただ、Amazon Linuxにおいてはインターネットにアクセスせずに更新したりパッケージのインストールができたりします。詳細は以下を参照してください。 repost.aws 以下では、Amazon Linux 2023においてプライベートサブネットにおいたインスタンスにパッケージのインストールをすることをCDKで実装してみます。 VPC作成 VPCを作成します。natGatewaysを0にしておきます。 const v…
最近よく使うので簡単にメモします。 私の環境 Ubuntu 20.04(WSL) 手順 /etc に rc.local というファイルを作成する sudo vim /etc/rc.local rc.local の中身はシェルスクリプトで、ここに実行したいプログラムを書く。 (shebangも書かないとうまくいかないらしい) #!/bin/bash # 例: docker-composeの起動 cd /my/work/dir sudo docker compose up -d rc.local はrootにのみ全権限を付与 sudo chmod 700 /etc/rc.local systemd…
Rubyでlsコマンドを作ります 表題の通りlsコマンドを作ってみます とはいっても完全再現するととんでもないコード量になるので、今回はオプションを実装しません また今回はフィヨルドブートキャンプのプラクティス内にあるlsコマンドを作るを題材として作っていきますので フィヨルドブートキャンプ生の方でプラクティスを修了前の方は閲覧を控えるようお願いします。 また筆者はフィヨルドブートキャンプ生ですが、該当プラクティス合格前に書いたコードになります。 余談になりますが、フィヨルドブートキャンプのカリキュラムではファイルやフォルダを指定するようにすることは必須ではありません。 要件 今回模倣するls…
SNS上に写真をアップするとき,個人情報保護のため,人物の顔に絵文字で上記のようなマスキング処理を施すことがよくあります。そこで,次の条件を満たすシェルスクリプトを作ることを目指します。 要件 macOS のデフォルト状態で動作する。ユーザに対して,事前に何らかのツールをインストールしておくなどの準備を要求しない。 コマンドラインから使えるシェルスクリプトとする。 指定された絵文字を上から貼り込むことで人物の顔をマスキングする。写真の中に複数人が写っている場合にも対応。 処理結果はJPEGファイルとして出力する。 実装のアイデア macOS には,顔認識エンジンが Vision フレームワーク…
Tap#remote_repoの簡略化 テストリソースを無視し、マッチ数をカウント Tap#custom_remote?の簡略化 Tapメソッドのキャッシュ化 TapConfigの型シグネチャ追加 ブロックパラメータの優先 GitHubライセンスチェック時のtag使用 Tap#alias_tableの簡略化 マスターブランチへのスコープ指定 homebrew/autoupdateの非公式化 --tap=フラグの追加 パッケージ名使用時のデフォルトバージョン Tap::fetchの型シグネチャ追加 Tap::newのプライベート化 未知の値時のタップ設定非保存 Info.plistからのバンドル…
■ はじめに AWS CloudFormationで、 環境 (dev/stage/prod) によって値を切り替えたい。 https://dk521123.hatenablog.com/entry/2022/07/02/214543 で、条件分岐を行ったが、それ以外の方法で、 Mappings が使えそうなので、調べてみた 目次 【1】Mappings 【2】利点 1)可読性・拡張性の良さ 2)AWSコスト削減 3)セキュリティ強化 【3】定義 【4】値の参照 1)組み込み関数 !FindInMap / Fn::FindInMap 【5】サンプル 例1:環境によってインスタンスタイプを変更す…
ネット上に散在している Bash スクリプトのベストプラクティスについて、僕なりにまとめたメモです。 VS Code での開発を前提に記載しています。 VS Code Extensions VS Code を利用するのであれば、以下の Extensions を利用できます。 language server mads-hartmann.bash-ide-vscode linter timonwong.shellcheck formatter foxundermoon.shell-format インデント 「タブ派」と「スペース 2 個派」に分かれるようですが、ヒアドキュメントを書く際にはタブが必…
■ はじめに https://dk521123.hatenablog.com/entry/2021/12/01/170326 で扱った Parameters について、業務でノウハウが溜まってきたので ここらでまとめてみる 目次 【1】Parameters 【2】使用上の注意 【3】Parameters を設定する 1)基本系 2)値を選択する 3)値を制限するには 4)機密情報を入力する場合(簡易版) 5)機密情報を入力する場合(正式版) 6)複数値を入力したい場合 【4】値を参照するには 補足:疑似パラメータ (Pseudo parameters) 【1】Parameters * Clou…
■ はじめに めちゃくちゃいまさらながら、 lnコマンド / update-alternativesコマンドについてメモ。 ついでに、あいまいだった Linux のハードリンク(hard link)と シンボリックリンク(Symbolic link) について学んでおく。 目次 【1】lnコマンド 1)ハードリンク (オプションなし) 2)シンボリックリンク (-sオプション) 【2】update-alternativesコマンド 1)オプション 2)コマンド例 【3】unlinkコマンド 【4】Linux のリンク 1)ハードリンク(hard link) 2)シンボリックリンク(Symbol…
gigazine.net ⇧ やはりOSSの維持は難しいんだなぁ... 理解があり、資本もあるスポンサーが付かないと厳しいよね... freenginx.org https://freenginx.org/ ⇧ 開発、運用・保守をしていくのに必要な資金をサポートしてくれるスポンサーが付いて欲しいですな。 #!/bin/shでプロセス置換(Process Substitution)が使えずdiffの際はファイルで比較するしかない模様 泥沼にハマったので備忘録として。 diffコマンドで、ファイルでは無く、2つの変数での差分を比較したかったのだけど、 stackoverflow.com unix.…
■ はじめに めちゃくちゃいまさらながら Linuxの代表的なディレクトリに関して メモっておく 【1】代表的なディレクトリ ディレクトリ 説明 /bin 基本コマンドが格納 /etc コマンドやアプリケーションの設定ファイルが配置 /usr 共有できて読み込み可能なファイルが格納。基本的なプログラムも配置 /opt OS作成後にインストールされるアプリケーションを配置(e.g. Apache/MySQL etc) /home ユーザごとのディレクトリ /proc 実行中のプロセスやシステム情報を表す仮想ファイルシステム /tmp 一時的なファイルを格納するために使用され、一般的にシステム上の…
はじめに CloudShell で Docker まとめ はじめに こんにちは、クラウド事業部の梅本です。 遅ればせながら、CloudShell で Docker が動くようになったとのこと。 aws.amazon.com 実際に CloudShell を起動して色々試していきたいと思います。 CloudShell で Docker 早速 CloudShell を起動して動作を確認してみます。 ※実行は 2024/02/09 時点 # バージョンは 24.0.5 $ docker version Client: Version: 24.0.5 API version: 1.43 Go vers…
こんにちは。 株式会社アドグローブ ソリューション第一事業部の徳村です。 みなさんは cron で環境変数を読み込みたいと思ったことはありませんか? cron は Linux で定期実行を行ってくれる便利な機能ですが、デフォルトでは最低限の環境変数しか読み込みません。 このため、手動での実行と同じようにコマンドを記述したら、思ったように動かない…となった経験がある方も多いのではないでしょうか。 また、コマンドの引数をベタ書きしなければならないなど、保守性に欠けてしまうということもあると思います。 今回は cron に予め設定した環境変数を読み込ませて、シェルスクリプトを定期実行します。 要点 …
■ はじめに Github Actions や CloudFormation などの インフラ系のサービスを扱う際に、Bashをよく使用しているが Shebang (シェバン)のところとかあいまいなことがあるので これを機にちゃんと調べてみた 目次 【1】Shebang 【2】効能 【3】構文 【4】オプション 1)-eオプション 2)-xオプション 3)-vオプション 4)-uオプション 【1】Shebang * Linux等で実行されるシェルスクリプトにおいて 先頭についている「#!」を指す * 別名:hash bang / shell bang / sharp bang cf. Sheb…
今日は主に shebang の行の改行コードチェック関数の潜在的 out of bounds の不具合修正などがありました。 [9ba2558b76] Nobuyoshi Nakada 2024-01-13 11:33:33 UTC スクリプトの先頭行に #! (shebang) がありその行が CR+LF の改行コードを持っていた時に Windows 環境以外では警告を出すための関数で一応文字列バッファのサイズをチェックするようにしています。 [55335eab80] Nobuyoshi Nakada 2024-01-13 14:41:20 UTC random.c で int の精度が 3…