タグ

bashに関するatsuizoのブックマーク (14)

  • Bash スクリプトのベストプラクティス - goodbyegangsterのブログ

    ネット上に散在している Bash スクリプトのベストプラクティスについて、僕なりにまとめたメモです。 VS Code での開発を前提に記載しています。 VS Code Extensions VS Code を利用するのであれば、以下の Extensions を利用できます。 language server mads-hartmann.bash-ide-vscode linter timonwong.shellcheck formatter foxundermoon.shell-format インデント 「タブ派」と「スペース 2 個派」に分かれるようですが、ヒアドキュメントを書く際にはタブが必須となるため、タブを利用しようと思います。 シェルスクリプトのインデントにはスペースとタブのどちらがよいか? settings.json { "[shellscript]": { "editor.ta

    Bash スクリプトのベストプラクティス - goodbyegangsterのブログ
    atsuizo
    atsuizo 2024/03/04
  • シェルスクリプトのWhile文で代入した変数が空になっている時の対処 | 俺的備忘録 〜なんかいろいろ〜

    先日作成を進めていたシェルスクリプトのWhile文で、変数に値が代入されていない事があったので、その備忘。 これは、Whileと他のコマンドを組み合わせた時に、その組み合わせ方に問題があるとサブシェルとして扱われてしまう事からくる問題だ。 たとえば、以下のように引数で読み込んだファイルの頭に行番号を追記するシェルスクリプトを記述したとする。 #!/bin/sh i=0 cat $1 | while read line; do i=`expr $i + 1` TEXT=$TEXT`echo $i`":$line\n"; done echo $TEXT で、実際にこのスクリプトを実行すると、以下のようになる。 /work/test$ cat test.txt testtest testtest1 testtest2 testtest3 /work/test$ sh test.sh test.t

    atsuizo
    atsuizo 2018/08/09
  • [速報]Bash on WindowsがUbuntuに加えFedora、openSUSEにも対応。Windows Storeから簡単に導入可能に。Build 2017

    [速報]Bash on WindowsがUbuntuに加えFedora、openSUSEにも対応。Windows Storeから簡単に導入可能に。Build 2017 米マイクロソフトがシアトルで開催している開発者向けイベント「Microsoft Build 2017」。2日目の基調講演では、Windows 10でBashやLinuxバイナリが実行可能となる「Bash on Windows」の強化が発表されました。 UbuntuがWindows Storeアプリとなり、導入が簡単になりました。

    [速報]Bash on WindowsがUbuntuに加えFedora、openSUSEにも対応。Windows Storeから簡単に導入可能に。Build 2017
    atsuizo
    atsuizo 2017/05/12
    面白いけど、ごちゃごちゃするの重いし気持ち悪いので個人的にはターミナルさえちゃんと使えればOKだわ、と思うこの頃。
  • bashのそれって実はこういう書き方できるよ一覧 - Qiita

    bashで普段こう書いているけど、実はこういう書き方もあるんですよというのをまとめてみました。 ->の右側がmanに載ってるテク名です。 例えばどういったものが書けるかはガチャガチャした前回の記事で…。 `command` -> Command Substitution 書く量は増えるけど、視認性が良い(ネストした時が特に)。 尚、これは書き方が違うだけでどっちもCommand Substitutionです。

    bashのそれって実はこういう書き方できるよ一覧 - Qiita
    atsuizo
    atsuizo 2017/03/16
  • CloudWatch のメトリクスをダウンロードするスクリプト - present

    AWS CLI で CloudWatch のメトリクスを取得できるけど、 過去 2 週間までしかさかのぼれないみたいだ。 2 週間よりも前のメトリクスを見たくなったときに備えて、 あらかじめダウンロードしておく必要があるな。 そういうわけで、1 日分のメトリクスをダウンロードする bash スクリプトを書いてみた。 このスクリプトを cron で毎日実行してローカルに保存しておく。 # ログの出力先 # メトリクスもこの下にダウンロードする logdir=/var/log/your_app_name/perform/ today=`date -u +%Y/%m/%d` logfile=${logdir}cloudwatch.log # aws コマンドに渡すパラメータ namespace=AWS/RDS statistics=Average starttime=`date -u -d '1

    CloudWatch のメトリクスをダウンロードするスクリプト - present
  • CloudWatchカスタムメトリクス取得用Bashスクリプト雛形 | DevelopersIO

    CloudWatchはAWSが提供するメトリクス保存・監視サービスです。EC2のCPU使用率やNetwork I/Oなどの基的なメトリクスを、何も追加で作業することなく無料で監視することができます。 一方で、デフォルトでは監視されない項目もカスタムメトリクスという方法を利用すれば、任意の値をCloudWatchに登録することが可能です。カスタムメトリクス登録のためにはCloudWatchのAPI経由で値の登録をする必要が有るため、AWS SDKやAWS CLIが利用されることが多いです。 カスタムメトリクスに簡単に値を追加できるように、登録するときのbashスクリプトを雛形として作ってみました。 スクリプト 例として、ディスク使用率をCloudWatchカスタムメトリクスとして送信するスクリプトを作成しました。 #!/bin/bash log() { echo $1 | logger }

    CloudWatchカスタムメトリクス取得用Bashスクリプト雛形 | DevelopersIO
  • Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道) - 主に言語とシステム開発に関して

    バッチのまとめTOPへ bash 初級者は,簡単なコマンドが並んだだけの小さなスクリプトを書くことができる。 しかしシェルの動作原理をよく理解しておらず, 一歩進んだことをやろうとするとつまずく。 シェルスクリプトの中級者になるためには, Linux上でシェルが動作する仕組みを体系的に理解しておく必要がある。 (1) シェルとコマンドについて (1−1) シェルとは,OSに命令を出すために,OSを包んでいる外膜である。 (1−2) Linuxログイン時には,そのユーザ用のログインシェルが起動する。 (1−3) ユーザが打ち込んだコマンドは,実行前に,bashによって整形される。 (1−4) コマンドの先頭の文字列は,実行可能ファイルか,またはbashの組み込みコマンドである。 (2) コマンド間の連携について (2−1) コマンド呼び出しとは,サブプロセスの生成である。 (2−2) 親プロ

    Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道) - 主に言語とシステム開発に関して
  • 入力と出力 | UNIX & Linux コマンド・シェルスクリプト リファレンス

    入力と出力 リダイレクションとパイプ コマンドの実行結果は通常、標準出力であるディスプレイに出力される。この実行結果はリダイレクション(>、>>)やパイプ(|)を使用することにより、ディスプレイではなくテキストファイルやコマンドに対して出力するように切り替えることができる。 また、リダイレクションはコマンドの出力先をテキストファイルに切り替える以外にも、これとは逆にコマンドへの入力元をテキストファイルに切り替えることもできる。 なお、リダイレクションとパイプは次のように使い分ける。 リダイレクション データを渡す対象がファイルである場合はリダイレクションを使用する。 パイプ データを渡す対象がコマンドである場合はパイプを使用する。 リダイレクション [>, », <] コマンドの出力を file へ上書きする → コマンドの実行結果の出力先を、ディスプレイからファイルへ切り替えたい場合は、

    入力と出力 | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • tree-tips: シェルスクリプトからMySQLを実行 | MySQL

    -eオプションでSQLを実行する。 mysql -uroot -e "show tables" -eオプションはトランザクションに注意。 以下はトランザクションは効いていません。 mysql -uroot -e "begin;" date mysql -uroot -e "insert into hoge values(1, 2, 3);" date mysql -uroot -e "commit;" トランザクションが効かない理由は簡単です。 mysqlコマンド毎にコネクションが切れているからです。 従って、-eオプションでトランザクションを有効にするには、以下のようにワンライナーにするしかありません。 mysql -uroot -e "begin; insert into hoge values(1, 2, 3); commit;" bashの変数をSQLに埋め込む事も可能です。以下は

  • MySQLで、シェルスクリプトからバッチ処理でSQLを実行する方法 · DQNEO日記

    SQL文をインラインで書いて実行することもできます。 mysql -h host -u user -ppassword dbname -e "INSERT INTO users (id, nickname) values (1, 'DQNEO');" これを応用すれば、「データベースを初期化」→「テーブル作成」→「初期データ投入」のような作業を自動化することができます。 SQL文の中でシェル変数が使えるので非常に便利です。 以下に実際の応用例を示します。 サンプルコード db_init.sh #!/bin/sh # このスクリプト(db_init.sh)のディレクトリの絶対パスを取得 DIR=$(cd $(dirname $0); pwd) # テーブル作成SQL SQL_CREATE=$DIR/create_tables.sql # 初期データインポート用のCSVファイル CSV_REC

    MySQLで、シェルスクリプトからバッチ処理でSQLを実行する方法 · DQNEO日記
  • シェルスクリプト入門 書き方のまとめ | Memo on the Web

    シェルスクリプト入門として, 基的な書き方をまとめました. 長いですが, 1ページにまとめてみました. 良かったら目次も参考にしてご覧になって下さい. 目次 シェルスクリプトとは 作り方, 実行の仕方 コメント ユーザーからのキーボード入力を受け付ける 変数 通常の変数 特別な変数 演算子 数値計算演算子 比較演算子 コマンドを繋げる演算子 条件文に使える比較演算子 条件文 制御構文(分岐) if文 case文 制御構文(ループ) for文 while文 until文 select文 文字列処理 文字列置換 削除 複数行のテキストの出力(ヒアドキュメント) 関数 シェルスクリプトとは シェルスクリプトとは, シェルの動作をまとめて記述したスクリプトのことです. 決められた文法にしたがって処理を記述することによって, シェルでの処理をまとめて行ったり, 作業を自動化できたりします(例 複数

    atsuizo
    atsuizo 2016/03/02
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

    ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、何もせずに終了ステータス0(つまり正常終了)を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト元/先と

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
    atsuizo
    atsuizo 2016/03/02
  • Linuxの使い方 - シェルスクリプトの作り方(1/8)

    6. シェルスクリプトの作り方(1/8) 6.1 概要 UNIX系OSでは実行したいコマンドをファイルに記述しておき、コマンド名として、そのファイルを指定することにより、ファイル中のコマンドを実行することが出来ます。このコマンドを記述したファイルをシェルスクリプトと呼んでいます。シェルスクリプトに記述するコマンドの形式は、ターミナル・エミュレータ上で実行するときとまったく同じですし、ファイルは普通のテキストファイルです。また、コンパイルのような前処理も必要ありません。 ここでは、次の内容について説明します。 実行方法とよく使うコマンド シェル変数と文字列演算 位置パラメータ(引数の取り扱い) 文字列のエスケープ 四則演算 制御演算 関数 【図6-1】例題のシェルスクリプトの実行環境 コマンドサーチパスの設定をしているため、コマンド名としてファイル名を指定すれば実行できます 以降の説明での例

    atsuizo
    atsuizo 2016/03/02
  • ユーザーの環境変数を設定するbashの設定ファイルと、カスタムプロンプトについて

    bashの環境設定ファイルについて 普段パスを指定すること無くコマンドを利用できるのは、ログイン時にコマンドへのパスが記述された設定ファイルを読み込んでいるからです。 以下の順序で設定ファイルを読み込んでいます。 ログイン時 1.「/etc/profile」の読み込み このファイルはログイン時に読み込む全ユーザー共通の設定です。ここで基的なコマンドにパスを通しています。 2.「.bash_profile」の読み込み 続いてユーザーのhomeディレクトリにある「.bash_profile」を読み込みます。 それがない場合は「.bash_login」。 それもない場合は「.profile」。 という順序でユーザー個別の設定を読み込みます。 なぜか3つも用意されていますが、ディストリビューションによって優先順位や有効なファイルが違うため、使い分ける必要があります。CentOSの場合は「.bas

    ユーザーの環境変数を設定するbashの設定ファイルと、カスタムプロンプトについて
  • 1