並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 200 件 / 827件

新着順 人気順

シェルスクリプトの検索結果161 - 200 件 / 827件

  • 【シェルスクリプト】コメントの書き方

    コメント書き方 シェルスクリプト内にコメントを書く場合は、「#」を入力してからその後にコメントを書くという形式になり 「#」を入力した位置から行の最後までがコメントとして扱われます。 ただし、「"」(ダブルクォーテーション)や「'」(シングルクォート)で囲っている場合は、文字列として扱われてしまいコメント扱いにはなりません。 記述例 何種類かのパターンを記述して「comment.sh」というシェルスクリプトを作成しました。 行頭に「#」を記述して一行全部をコメントとする 行の途中に「#」を記述してコメントとする 「#」をダブルクォートで囲んでみる 「#」をシングルクォートで囲んでみる #!/bin/bash # # 1.行を全部コメントとする # echo "Hello World." # 2.行の途中からコメントとする echo "Hello World. # 3.ダブルクォートで囲んで

      【シェルスクリプト】コメントの書き方
    • シェルスクリプトのechoの移植性の問題に本気で対応する - Qiita

      ビルトインの echo を置き換えることで各シェルの非互換性を問題を解決する、移植性のある(ポータブルな)echo シェル関数を作りました。(リポジトリPortable echo) 解説は後半の方でしています。 はじめに echo はシェルスクリプトにおいて一番基本となるコマンドなのになぜ移植性がないのでしょう? この話については以下が詳しいです。 echo コマンドの違いと移植性の問題 - 拡張 POSIX シェルスクリプト Advent Calendar 2013 どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 さて「僕らが本当に欲しかったもの」それはエスケープシーケンスを解釈せずに文字列をそのまま出力する関数ではないでしょうか? 文字をそのまま出力したい時にどうするか? 簡単な答えは echo の代わりに printf を使用します。以下は printf を使用し

        シェルスクリプトのechoの移植性の問題に本気で対応する - Qiita
      • シェルスクリプトに関する雑多な学習メモ - Corredor

        一つひとつを記事にするほどでもない雑多な学習メモたち。 Shebang は #!/bin/bash にしよう 命名規則 シェルスクリプトの関数 関数の戻り値が欲しい時 ローカル変数を宣言するには local を付与して宣言する 関数の引数 他ファイルに書いた変数や関数を利用する .bashrc の肥大化問題 その他 Shebang は #!/bin/bash にしよう #!/bin/sh だと微妙に動きが異なることがある。Bash 特有の機能を使っていることも多いので #!/bin/bash と書く方が良い。 命名規則 関数、通常の変数、ファイル名はロウワー・スネークケース (lower_snake_case) ローカル変数 (local) は先頭にアンダースコアを付けて区別する例もあった (_local_variable) 定数 (readonly)、環境変数はアッパー・スネークケース

          シェルスクリプトに関する雑多な学習メモ - Corredor
        • ちょっと複雑なシェルスクリプトをGoで書く - aereal-tech

          see also /lacolaco-engineering/ちょっと複雑なシェルスクリプトをJavaScriptで書く ちょっと複雑なシェルスクリプトを書くことになったら最近はGoで書いている ちなみに前はRubyだった 良いところ 必要十分な機能やパッケージが標準で含まれており、だいたい依存フリーで書ける strconvとかstringsとか os/exec ← 重要 Goroutineやsy

            ちょっと複雑なシェルスクリプトをGoで書く - aereal-tech
          • シェルスクリプトのクォーテーションについて理解をまとめる|とものブログ

            こんにちは、ともです。 シェルスクリプトを勉強中でして、この記事ではクォーテーションについて理解をまとめたいと思います。 ダブル・シングルクォーテーション、バックスラッシュ、バッククォートについてまとめました。 参考にしたものは、 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界 クォーテーション(引用符)とは ディレクトリ内に次の3つのファイルが存在するとします。 abc xyz abc xyz “abc xyz”という空白文字が存在するファイル名が存在します。 このディレクトリで”abc xyz”ファイルの詳細を見るためにls -l abc xyzとコマンドを入力したとします。 -rw-r--r-- 1 user staff 0 3 1 18:40 abc -rw-r--r-- 1 user staff 0 3 1 18:40 xyz ls -l abc xyzでは

              シェルスクリプトのクォーテーションについて理解をまとめる|とものブログ
            • シェルスクリプトを書く時には set -e をつけた方がいいのかな...どうなんだろう - ようへいの日々精進XP

              tl;dr for example 解決策 その 1 〜 がんばってエラーハンドリングを実装する 〜 その 2 〜 set -e を付与する 〜 注意点 再掲 実例 (1) 実例 (2) 〜 grep コマンド 〜 以上 tl;dr とあるプロジェクトのデプロイを CircleCI で実行していて, いくつかのコマンドをラップしたBash スクリプト (以後, シェルスクリプトと記載) を実行していたんだけど, コマンドのエラーを意図せずハンドル出来ていない現象に気づいて修正したメモです. 結局のところ, シェルスクリプトを書く時には set -e をつけた方がいいのかなという結論に至った次第です. for example 以下のようなシェルスクリプトを動かそうとした場合... #!/bin/bash echo "イメージをビルドします" docker build -t foo/bar:b

                シェルスクリプトを書く時には set -e をつけた方がいいのかな...どうなんだろう - ようへいの日々精進XP
              • Makefileとシェルスクリプトの変数参照とコマンド実行 - のーずいだんぷ

                はじめに シェルスクリプトの変数参照 シェルスクリプトでコマンド実行結果を変数に保存する Makefileでの表現 コマンドを変数へ格納して変数をコマンドをして実行するには? 入れ子になっていても実行できるのか? おわりに はじめに シェルスクリプトの変数参照とコマンド実行についていつも混乱するので、もっとシンプルにまとめることを目的とする。 シェルスクリプトの変数参照 以下のどれでも参照できる。 //代入 $ var='a b c' $ echo $var a b c $ echo "$var" a b c $ echo "${var}" echoを使用せずに参照すると、参照した値をコマンドとして実行したことになる。 $ $var -bash: a: command not found $ "$var" -bash: a b c: command not found $ '$var' -

                  Makefileとシェルスクリプトの変数参照とコマンド実行 - のーずいだんぷ
                • gum を使ってシェルスクリプトの表示をカッコよくする

                  gum input - 1 行の入力を受け取る 1 行のテキスト入力を受け取ります。 入力されたテキストは標準出力に出力されます。 gum write - 複数行の入力を受け取る 複数行のテキスト入力を受け取ります。 Ctrl+D で入力を終了し、入力されたテキストは標準出力に出力されます。 gum filter - リストからフィルタリングして選択する リストから Fuzzy マッチングを使用したフィルタリングを行い対話的にアイテムを選択できます。 選択されたアイテムは標準出力に出力されます。 また、 --limit や --no-limit フラグを使用することで複数選択することも可能です。 gum choose - リストから選択する リストからアイテムを対話的に選択できます。 選択されたアイテムは標準出力に出力されます。 また、 --limit や --no-limit フラグを使

                    gum を使ってシェルスクリプトの表示をカッコよくする
                  • シェルスクリプトで処理待ちをする方法 | クロジカ

                    こんにちは。hacknoteのr.katoです。 今回はシェルスクリプトを使った際に、前の処理終了を待ってから、次の処理を実行する方法の紹介です。 #!/bin/bash command1 & command2 & wait command3 上記の様にすると、command1とcommand2が終了してからcommand3が実行される様にできます。 command1と2がバックグラウンドで実行され、waitコマンドで処理終了まで待機し、command3が実行されるといった流れです。

                      シェルスクリプトで処理待ちをする方法 | クロジカ
                    • Macでシェルスクリプトを書く人へ 「シェルはbashからzshに変わっていません!今でもbashで動くんだよ!」 - Qiita

                      Macでシェルスクリプトを書く人へ 「シェルはbashからzshに変わっていません!今でもbashで動くんだよ!」ShellScriptBashZshshell TL;DR Mac のシェルは macOS 10.15 Catalina で bash から zsh に変わったと一般に言われていますが、インストールされているシェルはバージョン番号の違いを除いて以前とほとんど変わっていません。 /bin/sh は POSIX モードで bash (/bin/bash) を起動します /bin/bash は bash 3.2.57 (正確には Apple 版 bash-123.40.1)です /bin/zsh は zsh 5.8 です その他に以下のシェルも標準でインストールされています。 /bin/csh, /bin/tcsh は tcsh 6.21.00 です /bin/ksh は ksh 9

                        Macでシェルスクリプトを書く人へ 「シェルはbashからzshに変わっていません!今でもbashで動くんだよ!」 - Qiita
                      • シェルスクリプト(bash等)の引数解析が究極的に簡単になりました - Qiita

                        最近、以前作った getoptions の改良をしていました。(以前の記事はこちら) 参考 こちらもどうぞ 「getoptions を使って面倒なシェルスクリプトのオプション解析コードを自動生成しよう!」 以前のバージョンはシェルスクリプトライブラリとして使い方を想定していたのですが getopt や getopts の代わりとして外部コマンドとしても使えるようにしました。使い方は簡単で ここ から getoptions をダウンロードしパスが通ってる場所(~/bin や /usr/local/bin/ など)にインストールするだけです。それだけでもう次のシェルスクリプトが動作します。他に設定ファイルや事前のビルド作業なども不要なので学習曲線は低くメンテナンス性も抜群です。 #!/bin/sh VERSION="0.1" parser_definition() { setup REST h

                          シェルスクリプト(bash等)の引数解析が究極的に簡単になりました - Qiita
                        • JavaScriptでシェルスクリプトを書ける「ZX 8.0.0」

                          ZX開発チームは現地時間2024年4月6日、ZX 8.0.0をリリースした。ZXはJavaScriptベースのシェルスクリプト。bashよりも効率的なシェルコマンドやシェルスクリプトを実行できる。本バージョンは安全性と安定性を向上させているが、標準出力設定を扱う「$.verbose」「$.quite」の動作変更やSSH APIの廃止、PowerShell使用時の指定変更など、大きな変更が加わった。なお、現地時間4月8日にオプション追加など改良を加えたバージョン8.0.1もリリースしている。 ZXの公式サイト ZXは当初Googleの開発メンバーが多く関与していたが、現在はAnton Medvedev氏が中心となって、開発が進められている。Node.js環境を構築するよりも容易にJavaScriptを実行できるため、bashのシェルスクリプトに不慣れな方は、日常的に開発で用いるJavaScr

                            JavaScriptでシェルスクリプトを書ける「ZX 8.0.0」
                          • AWS Security Hubで複数リージョン複数コントロールをまとめて無効化するシェルスクリプトを作ってみた | DevelopersIO

                            複数あるグローバルリソースのコントロールを複数リージョンまとめて無効化したい こんにちは、のんピ(@non____97)です。 皆さんはSecurity Hubで複数あるグローバルリソースのコントロールを複数リージョンまとめて無効化したいと思ったことはありますか? 私はあります。 先日、Security Hubでグローバルリソースの課金を抑えるためには「一つのリージョンでのみグローバルリソースを対象としたコントロールを有効化し、その他のリージョンでは無効化するべき」ということを紹介しました。 こちらの対応をしない場合のコストインパクトについては以下記事が分かりやすいです。 では、コントロールの無効化はどのように行えば良いでしょうか。 2024/6/16時点でグローバルリソースを含む Security Hub コントロールは49個あります。詳細は以下AWS公式ドキュメントをご覧ください。 私

                              AWS Security Hubで複数リージョン複数コントロールをまとめて無効化するシェルスクリプトを作ってみた | DevelopersIO
                            • シェルスクリプトのシバン(Shebang)にシェル以外のコマンドを記述したらどうなるのか? | ゲンゾウ用ポストイット

                              ゲンゾウ用ポストイット シェル / Bash / Linux / Kubernetes / Docker / Git / クラウドのtipsを発信。 はじめにUNIX 上で動作するスクリプトは、1 行目に #! から始まる 1 行を記述します。 これによりスクリプトの実行系を認識させることができます。 シェルスクリプトの場合は #!/bin/sh 、 #!/usr/bin/bash 、 #!/usr/bin/env bash と記述します。 Ruby スクリプトの場合は #!/usr/bin/ruby 、 #!/usr/bin/env ruby と記述することが多いでしょう。 この 1 行目の記述のことを「 シバン 」とか「 Shebang 」と呼びますが、今ひとつこのあたりの仕組が理解できてなかったため、シバンでいろいろ遊んでみることにしました。 検証環境$ uname -moi x86

                                シェルスクリプトのシバン(Shebang)にシェル以外のコマンドを記述したらどうなるのか? | ゲンゾウ用ポストイット
                              • この問題を解けたらスゴい!?シェルスクリプトとファイルディスクリプタの話 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

                                bashインフラLinuxプロセス置換ファイルディスクリプタシェルスクリプト こんにちは、羽山です。 今回はシェルスクリプトのちょっとしたクイズからファイルディスクリプタとリダイレクトの動作を解説します。 早速ですがこのシェルスクリプトの問題を解けますか? 問: bashで以下のシェルスクリプトを実行した場合に表示される文字列はどれか? ※ echo の -n は改行を出力しないオプション ( echo -n "A" > /dev/null echo -n "B" 2>&1 echo -n "C" >&2 echo -n "D" 2> /dev/null echo -n "E" 3>&1 >&2 2>&3 ) > /dev/null 選択肢: a. ABCDE g. CBD b. ABC h. BD c. ACDE i. BCDE d. BAD j. ACE e. BCE k. AC f.

                                  この問題を解けたらスゴい!?シェルスクリプトとファイルディスクリプタの話 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
                                • 私はGo言語でシェルスクリプトが書きたい不都合な生きもの - じゃあ、おうちで学べる

                                  Goに入ってはGoに従え 私の好きな言葉です(スライド)。XX(架空の)という言語を書いてるならばXX言語らしく書きましょうと常々、思っております。 しかし、インフラエンジニアの魂に最も刻まれた言語は何か? それはシェルスクリプトではないですか。異論は認めます。 はじめに なんでみんなこんなに怒っているのかというような疑問はある。世の中がぎすぎすしていて、明るい話題がない。この世にはもっと明るい話が必要だと思うのだが、思いつきませんでした。 まず、シェルスクリプトだとこう書くという明確な思考があるのにそれをGo言語で表現する方法が分からない場面で悔しい思いをしてきた方もいらっしゃるのではないかと思います。そういう方に明るい話題を提供したいです。 script はシェルスクリプトが得意とする、ファイルの読み込み、サブプロセスの実行、行数のカウント、文字列のマッチングなどを行うための Go の

                                    私はGo言語でシェルスクリプトが書きたい不都合な生きもの - じゃあ、おうちで学べる
                                  • シェルスクリプトが速くなる! forkしない新しいコマンド置換がやってくる!(次期bash/zshの新機能) - Qiita

                                    シェルスクリプトが速くなる! forkしない新しいコマンド置換がやってくる!(次期bash/zshの新機能)ShellScriptBashZshkshmksh はじめに シェルスクリプトを遅くする大きな原因は fork と exec です。この二つは OS のインターフェースである fork() 関数と exec() 関数のことで、シェルスクリプトからは、外部コマンドやバックグラウンドプロセスの実行、明示的なサブシェル (...)やコマンド置換 ret=$(...)、パイプの使用などで呼び出されます。 シェル関数はシェルの中で実行される関数であるため、単純にシェル関数を呼び出す場合には fork も exec も行われません。しかしシェル関数の出力を変数に代入しようとコマンド置換(var=$(func))を使うと、exec は行われませんが fork は行われてしまいます。その事に気づかず

                                      シェルスクリプトが速くなる! forkしない新しいコマンド置換がやってくる!(次期bash/zshの新機能) - Qiita
                                    • シェルスクリプトをWindowsでWSLなしで動かす?⇒BusyBoxがあるよ! - Qiita

                                      BusyBox for Windows BusyBox for Windows (BusyBox-w32) は Busybox の Windows 移植版です。トップページを見ると、どうやら 2021 年の 10 月頃に BusyBox-w32 から BusyBox for Windows に名前が変わっているような気がします。確かにもう 32 ビットの時代ではないですからね……。でも GitHub は busybox-w32 のようですが。ちなみに 64ビット版バイナリもあります。 これの何がすごいのか? インストールは実行ファイル一つをコピーするだけ。環境を汚しません。 ash 系のシェルを改良していくつかの bash の機能が追加されたシェルが含まれています。 シェルスクリプトでよく使うコマンド(sed や awk 等)の多くが含まれています。 最新のプレリリース版(busybox-

                                        シェルスクリプトをWindowsでWSLなしで動かす?⇒BusyBoxがあるよ! - Qiita
                                      • シェルスクリプト実行方法いろいろ - 電気ひつじ牧場

                                        シェルスクリプトを実行する際にsourceとか./とか実行方法がいろいろあってたまにわからなくなるのでまとめておきます。 bashでscript.shを実行することを想定しています。 準備 以下のような内容のファイルを用意します。 script.sh #!/bin/bash echo foo bar="bar" hoge .bashrc alias hoge="echo hoge" $source script.sh sourceはコマンドを実行した現在のbashプロセスを用いてスクリプトを実行します。つまりプロセスがフォークしません。よって現在のインタラクティブシェルを起動した時に読み込まれる.bashrcで定義されている内容を使うことができますし、スクリプト内でシェルを終了させるexitなどを記述するとsourceを実行したシェルが終了します。またスクリプトで定義/変更した変数はスクリ

                                          シェルスクリプト実行方法いろいろ - 電気ひつじ牧場
                                        • シェルスクリプト export コマンド - Qiita

                                          export コマンドはシェル変数を環境変数としてエクスポートするのに使用する。 あまり意識されていないかもしれないが、シェルにおいて環境変数を設定するためには、以下の2ステップが行われる必要がある。 1.シェル変数を設定する 2.そのシェル変数を環境変数としてエクスポートする シェル変数を環境変数としてエクスポート $ TEST_VAL=thanks # シェル変数を設定する $ echo "${TEST_VAL}" thanks # シェル変数として値が表示される $ printenv TEST_VAL # 環境変数としては設定されていないため、値は表示されない $ export TEST_VAL # 環境変数としてエクスポートする $ printenv TEST_VAL thanks # 環境変数として値が表示される

                                            シェルスクリプト export コマンド - Qiita
                                          • BashシェルスクリプトでCloud Loggingへのログ出力をシンプルに実装する方法 | ゲンゾウ用ポストイット

                                            ゲンゾウ用ポストイット シェル / Bash / Linux / Kubernetes / Docker / Git / クラウドのtipsを発信。 はじめに既存のシェルスクリプトから GCP の Cloud Logging にログ出力させる必要がありました。 時間をかけずに実装できないか考え、 Bashシェルスクリプトでログ出力をシンプルに実現する方法 に多少手を加えて実現できたので紹介します。 検証環境$ uname -moi x86_64 MacBookPro16,1 Darwin $ bash -version | head -n 1 GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0)事前準備(GCP上の設定)今回は Cloud Run 上でシェルスクリプトを実行させましたが、 Compute Engine

                                              BashシェルスクリプトでCloud Loggingへのログ出力をシンプルに実装する方法 | ゲンゾウ用ポストイット
                                            • Amazon.co.jp: ITエンジニア1年生のための まんがでわかるLinux コマンド&シェルスクリプト基礎編: Piro (著), 日経Linux (編集): 本

                                                Amazon.co.jp: ITエンジニア1年生のための まんがでわかるLinux コマンド&シェルスクリプト基礎編: Piro (著), 日経Linux (編集): 本
                                              • Bashシェルスクリプトで連番付きファイル名の次の連番を算出する | ゲンゾウ用ポストイット

                                                ゲンゾウ用ポストイット シェル / Bash / Linux / Kubernetes / Docker / Git / クラウドのtipsを発信。 はじめに特定のフォルダにファイルが配置されており、これら全てに通し連番が付与されているとします。 例えば、以下のようにゼロフィルされた3桁の通し連番が付与されているようなファイルが可能されている場合などが考えられます。 (ファイル名でソートできるため、このようなケースはよくあるケースかと思います。) 001_xxx.txt 002_xxx.txt 003_xxx.txt 004_xxx.txt 005_xxx.txt 006_xxx.txt 007_xxx.txt 008_xxx.txt 009_xxx.txt 010_xxx.txt 011_xxx.txt 012_xxx.txt 013_xxx.txt 014_xxx.txt 015_xx

                                                  Bashシェルスクリプトで連番付きファイル名の次の連番を算出する | ゲンゾウ用ポストイット
                                                • シェルスクリプトの冒頭でbashを明示する(提案) - Qiita

                                                  実行可能なシェルスクリプトの冒頭には、「シバン」というインタプリタの指定行がありますが、ここで#!/bin/bashのように明示するのも1つの方法じゃないか、と思いました。 対象読者 シェルスクリプト冒頭の#!/bin/shについて、 単なるコメントだと思っている人 「おまじない」として書いている人 /bin/shがどんなシェルなのか知らない人 シバン行とは スクリプトファイルの冒頭を#!にして、その後にファイル名を書いておくと、実行属性を付けてファイルを実行できるようになります。この冒頭行を「シバン」といいます。 もちろん、#!/bin/shのようなシェルスクリプトに限られるものではなく、Perl、Python、Rubyなどテキストで書くスクリプトでも同様に実行可能となります。 /bin/shって? 一般には、シェルスクリプトのシバン行は#!/bin/shと書きます。POSIXでもこの位

                                                    シェルスクリプトの冒頭でbashを明示する(提案) - Qiita
                                                  • aws-session-token を取得して環境変数に入れるシェルスクリプト - Qiita

                                                    経緯 AWS のIAMでは設定でMFA認証を強制させるポリシーを作成することができます。 AWS CLIから利用する際にはコンソールから発行できるアクセスキー(アクセスキーとシークレットキー)を~/.aws/credentials に発行されたキーを登録して利用します。しかし、MFAを設定している場合には、このアクセスキーを利用して一時的なトークンを取得し、これを利用してCLIを利用することになります。 いちいち取得した変数を登録するのが面倒だったため関数を作成してbashrcに追加しておくことで、その作業を楽にしました。 設定 1.まず、自分のMFAデバイスのarnを取得します(MFA デバイスの割り当て のARNです)。IAMのユーザの項目から探すことができます。 2.~/.aws/confing にmfa-deviceを追記します。 [profile hogehoge] region

                                                      aws-session-token を取得して環境変数に入れるシェルスクリプト - Qiita
                                                    • シェルスクリプトでの改行文字の削除にハマる - HacoLab

                                                      僕はただ改行を削除したいだけなんだ。。。 POSIX準拠の範囲でなんとかしたい。 単純に全改行を削除 指定パターンにマッチした行のみ改行を削除 sedの挙動解説 コード解説 妥協策(行末パターンを指定して削除) あるパターンにはさまれた複数行を1行にまとめる Step 1. sedでまとめたい範囲だけを抜き出す。 Step 2. grep -vで<start>行を省いて、<end>を置換可能な一文字にする。 Step 3. 改行を一旦消して、<end>を置換した文字を改行に置換 さいごに その他参考 単純に全改行を削除 1文字の削除にはtrコマンドを使いましょ。 (infileは改行を削除したいファイル) tr -d '\n' < infile 指定パターンにマッチした行のみ改行を削除 改行文字の削除の例でこんな感じのを見かける。 GNU系とBSD系で書き方が違う時点で目的とはかけ離れるん

                                                        シェルスクリプトでの改行文字の削除にハマる - HacoLab
                                                      • サーバーが落ちたら自動的に再起動するシェルスクリプト - Qiita

                                                        よくJavaのプロセスとかが死にやすい場合に、仕方がなく設定するスクリプト、死活監視をして問題あらば再起動する。 #!/bin/sh monitorInterval=3 bootWait=10 partOfProgramName="minecraft_server" while true do isAlive=`ps -ef | grep $partOfProgramName | grep -v grep | wc -l` if [ $isAlive = 1 ]; then echo "[起動中]: $partOfProgramName `date`" else echo "[停止]: $partOfProgramName `date`" flag=true while $flag do echo "[再起動中]: $partOfProgramName" isRebooted=`ps -e

                                                          サーバーが落ちたら自動的に再起動するシェルスクリプト - Qiita
                                                        • シェルスクリプトで標準出力と標準エラー出力に別々の色をフィルタでつける - Qiita

                                                          画面にログを出力する時、標準出力と標準エラー出力に別々の色がついていると見やすいですよね? 標準出力に出力する場合は out 関数、標準エラー出力で出力する場合は error 関数のよう別々の関数を使って色をつけて出力する方が簡単ですが、場合によっては後からフィルタで標準出力と標準エラー出力それぞれに色をつけたほうが楽な場合もあります。 この記事では題材として出力に色をつけていますが、一般化して言うと標準出力と標準エラー出力のそれぞれに対してパイプで異なるフィルタ(コマンド・シェル関数)を適用させたい場合の書き方です。 関連記事として「POSIX準拠シェルのためのpipefailとPIPESTATUSの実装(改良版)」も紹介しておきます。 0. 共通処理 最初に共通で使用する関数を定義しておきます。 #!/bin/sh set -eu ESC=$(printf '\033') colori

                                                            シェルスクリプトで標準出力と標準エラー出力に別々の色をフィルタでつける - Qiita
                                                          • Git のサブコマンドに学ぶシェルスクリプトの書き方 - 朝日ネット 技術者ブログ

                                                            はじめに 開発部の tasaki です。 シェルスクリプトはプログラムとプログラムとを繋ぐ存在であり、UNIX や Linux を使う上で最も重要なスクリプト言語であると言えます。 curl, diff, git, rsync, ssh 等の外部コマンドが複数絡むスクリプトや、テキストストリーム処理を多用するスクリプトを書きたい場合はシェルスクリプトとして書くのが最も手軽です。 一方、シェルスクリプトは書き方の自由度が高くコードスタイルについての合意が取りにくい言語であり、移植性の高いものを書くのが難しい言語であります。 大抵の Linux には bash が入っているためそれ向けに書いてしまってもよいのですが、Docker の流行により bash が標準で入っていない Alpine Linux 環境が使われる機会が世間的にも増えているため、少なくともデプロイ先で動くスクリプトは bash

                                                              Git のサブコマンドに学ぶシェルスクリプトの書き方 - 朝日ネット 技術者ブログ
                                                            • シェルスクリプトでファイルを一行ずつreadする処理を高速化するテクニック - Qiita

                                                              期待してる人ががっかりしないように、最初に結論を書いておくと dash、busybox (ash)、mksh、yash、zshにおいて読み込み速度は大幅に速くなりますが bash においては変わりません。ただしは使用メモリが減ります。kshは少し速くなりますが逆に使用メモリは大幅に増えます。シェルスクリプトでの読み込み速度を上げるもので、他の言語を使ったりコマンドを呼び出すよりも速くなるわけではありません。 シェルスクリプトでファイルを一行ごとに読み込む時、一般に使われているのは read 関数です。ですが、この read 関数、遅いというわさを聞きました。たしかに一行毎ずつ読み込むのですから cat を使ってファイル全体を読み込むのに比べれば遅いでしょうが、そのままでは一行ずつ処理をすることは出来ません。 さて一行ずつ処理したい場合に使えるのは read 以外どのような方法があるでしょう

                                                                シェルスクリプトでファイルを一行ずつreadする処理を高速化するテクニック - Qiita
                                                              • Step Functions から ECS Task を呼びだすときに、実行するシェルスクリプトを指定してみた - Qiita

                                                                Step Functions から ECS Task を呼びだすときに、実行するシェルスクリプトを指定してみたAWSECSstepfunctions はじめに システムの中で、1日1回シェルスクリプトを動かしてバッチ処理を行うときがあります。その際に、実行したいシェルスクリプトを複数用意して、時間帯によって実行するシェルスクリプトを指定したいときがあります。シェルスクリプトごとにコンテナイメージを用意する方法もアリですが、1個のコンテナイメージに複数のシェルスクリプトを格納しておいた方が管理が簡単な場合もあります。 ECS Task を呼びだすときに、containerOverrides を指定することで、Dockerfile 上の CMD を上書きして実行することが出来ます。これにより、元々定義されていたコンテナイメージの CMD の指定を上書きして ECS Task を実行できます。

                                                                  Step Functions から ECS Task を呼びだすときに、実行するシェルスクリプトを指定してみた - Qiita
                                                                • シェルスクリプトを書くときのおまじない - patorashのブログ

                                                                  最近、他の人がRundeckに登録していたジョブを修正していってるのだが、bundle installとかherokuコマンドが動かなかったりしたので、動かしているジョブではどうやっているのかなと思ったら、以下のように書いてあった。 /bin/bash -l -c 'bundle install' -lはログイン状態のシェルで-cは引数のコマンドを実行するということだったのだけれど、場合によっては、これを複数行書いているようだった。 /bin/bash -l -c 'なにかの処理1' /bin/bash -l -c 'なにかの処理2' /bin/bash -l -c 'なにかの処理3' うーむ、シェルスクリプトって普通、先頭に#!/bin/bashとか書くんじゃなかったっけ?と思いながら調べたら、1行目のオプションで-lをつければそれでいいらしい。 #!/bin/bash -l set -

                                                                    シェルスクリプトを書くときのおまじない - patorashのブログ
                                                                  • AWS 全リージョンの (ほぼ)全リソースをリストアップするシェルスクリプト - Qiita

                                                                    各リージョンの各サービスを個別に確認しなくても、全てのリソースをリストアップすることができます。 AWSアカウント解約時に、不要なアクティブリソースが残っていないかの確認にも役立つかもしれません。 AWS アカウントを解約したときに、アクティブなリソースがすべて自動的に終了されるとは限りません。アカウントを解約する前に、アクティブなリソースがあるかどうかを確認し、それらを終了することがベストプラクティスです。 for region in `aws ec2 describe-regions --query 'Regions[].RegionName' --region us-west-1 --output text` do echo "region = ${region}" aws resourcegroupstaggingapi get-resources --region ${regio

                                                                      AWS 全リージョンの (ほぼ)全リソースをリストアップするシェルスクリプト - Qiita
                                                                    • シェルスクリプト (sh) で Docker コンテナ内から Docker ネットワークの IPv4 アドレスをごにょごにょ計算する

                                                                      調べても bash ばっかりで, Docker の alpine ベースのイメージでは利用できなかったので作った. シナリオ Docker コンテナ "app1" と "app2" が Docker ネットワーク "app_net" (driver: bridge) で接続されている. "app_net" の各種アドレス設定は Docker によって自動的に行われる. すなわちネットワークアドレス, サブネットマスク / プレフィックス長, ゲートウェイアドレスおよび各コンテナの IP アドレスはホスト (Docker を実行しているコンピュータ) の環境により異なる場合がある. "app2" は "app_net" のゲートウェイアドレスが欲しい. "app2" は "app_net" 以外にも複数の Docker ネットワークと接続されている. TL;DR app1_addr=`hos

                                                                        シェルスクリプト (sh) で Docker コンテナ内から Docker ネットワークの IPv4 アドレスをごにょごにょ計算する
                                                                      • xargs -P と export -f を使ってシェルスクリプトで並列処理を実現する - mrk21::blog {}

                                                                        xargsの-Pオプションを使うとパイプで渡された値を任意の並列数で並列処理することができます。以下では、普通に実行すると10秒かかる処理が、5並列で並列処理することによって2秒で実行することができます。 f.sh: #!/bin/bash echo $*; sleep 1; $ seq 10 | xargs -I % -P 5 ./f.sh % 1 2 3 4 5 6 7 8 9 10 そのため、シェルスクリプトで大量の項目をforを使って処理している部分をxargsに置き換えることによって高速化することができます。 しかし、xargsでは関数を使用できないので、このままでは並列処理したい部分を都度別のシェルスクリプトに分割しなくてはなりません。 $ function f { echo $*; sleep 1; } $ seq 10 | xargs -I % -P 5 f % xargs

                                                                          xargs -P と export -f を使ってシェルスクリプトで並列処理を実現する - mrk21::blog {}
                                                                        • ノータブルコード5 - Lispとシェルスクリプトのキマイラ - 2020-03-10 - ククログ

                                                                          今回紹介するコードは、エディンバラ大学が開発した音声合成ライブラリFestivalからのコードです。このライブラリには、テキストファイルを音声に変換する「text2wave」という実行ファイルが付属しています。このファイルの冒頭部分を引用すると次のようになっています。 #!/bin/sh "true" ; exec /bin/festival --script $0 $* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-*-mode:scheme-*- ;; ;; ;; Centre for Speech Technology Research ;; ;; University of Edinburgh, UK ;; ;; Copyright (c) 1996,1997 ;; ;; All Rights Reserved

                                                                            ノータブルコード5 - Lispとシェルスクリプトのキマイラ - 2020-03-10 - ククログ
                                                                          • シェルスクリプト_動的な変数名を使う - Awesome Hacks!

                                                                            変数名str_1,str_2,str_3をループで回したい…そんな時に。 【プログラム】 str_1="aaa1" str_2="bbbbbb2" str_3="c3" for NUM in `seq 1 3` do echo "NUM = $NUM" eval `echo "${str_'`printf $NUM`'}"` echo "" done exit 0 【実行結果】 $ test.sh NUM = 1 aaa1 NUM = 2 bbbbbb2 NUM = 3 c3 $ 今までずっとこれを求めていたがなかなかたどり着けなかった。 これこそ、かゆいところに手が届くという言葉が似合うテクだと思った(個人的に)。 うまくいかないときは一旦作った変数名を違う変数に入れて使うとよい。

                                                                              シェルスクリプト_動的な変数名を使う - Awesome Hacks!
                                                                            • [Linux] シェルスクリプトで.envファイルを読み込む [dotenv]

                                                                              [Linux] シェルスクリプトで.envファイルを読み込む [dotenv] 2021.02.20 Linux Linux, shell, コマンド シェルスクリプトで .env .envファイルで定義した内容をシェルスクリプトから参照するために、環境変数として読み込む方法をまとめます。 . ├── .env └── my_script.sh こんな感じの構成になっていて、my_script.sh から .env ファイルを読み込んでその中で定義された変数を参照できるようにします。 .envの内容をシェル変数として読み込む実装方法 .env ファイル # 値を定義します。 MY_STRING=ABC MY_NUMBER=123 my_script.sh #!/bin/bash # ./.envファイルを読み込んで変数として参照できるようにする source ./.env echo $MY

                                                                                [Linux] シェルスクリプトで.envファイルを読み込む [dotenv]
                                                                              • 備忘録: 最小限の労力でサブコマンド付きのシェルスクリプトが書きたい - Qiita

                                                                                なるべく労力をかけずにサブコマンド付きのシェルスクリプトを書きたい、ということがあった。 労力をかけないことに力点をおいたので、 POSIX 準拠ではなく、 Bash 限定の要素が入っている。 コマンドをそのまま実行するとヘルプ表示 $ some-command Usage: some-command --help some-command sub-command1 some-command sub-command2

                                                                                  備忘録: 最小限の労力でサブコマンド付きのシェルスクリプトが書きたい - Qiita
                                                                                • 逆引きシェルスクリプト/ヒアドキュメントをファイルに出力する方法 - Linuxと過ごす

                                                                                  2023-04-25 逆引きUNIXコマンド 逆引きUNIXコマンド/ターミナルで動作するビジュアルなストレージ使用容量確認コマンド 2022-12-12 Ubuntu/GUI操作のWakeOnLAN・gWakeOnLan Ubuntu 2022-12-05 Ubuntu/Ubuntu22.04でデスクトップのアイコンのサイズを変更する手順 2022-08-25 Xubuntu/画面が勝手にオフされる場合の対処方法 2022-08-11 Xubuntu 2022-07-26 Linux環境設定/Windowsネットワークの名前解決と共有フォルダアクセス方法 2022-07-25 Xubuntu/Thunarでssh(sftp)接続しファイルブラウズする手順 2022-07-20 ソフトウェア/デスクトップ/Plankの設定画面を表示する ソフトウェア/デスクトップ ソフトウェア 2022-