bashのブレース展開についてまとめていきます。 ※今回はBash 4 の環境を利用して検証しています。 4 より前の環境では再現できない場合があります。 ブレース展開って何? Linuxのシェルである、bashの機能の一つです。 ブレース展開は任意の文字列を生成するために使用されます。 指定された文字列は、その文字列と、展開の前後に付けた、追記を有する全ての可能な組み合わせを生成するために使用されます。 超簡単に言うと複数の文字列に任意の文字列を加えたり、指定した文字数字を展開できる機能です。 と、書いてもよくわからないですね。 語彙力がなさすぎるのでこればっかりはどうしようもないです。 以下、使用例を交えて解説していきます。 基本的な書式 {文字列1,文字列2,...,文字列N} {<始まり>..<終わり>} {<始まり>..<終わり>..<インクリメントしたい数>} (Bash 4
株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashインフラLinuxプロセス置換シェルスクリプト非同期処理 こんにちは、羽山です。 みなさん元気にシェルスクリプトを書いていますか? 今回は bash で任意のコマンドを非同期実行しつつ、その実行結果を手軽に受け取る方法を紹介します。 よく利用される bash の非同期実行は & をコマンドの最後に付けてバックグランドで実行する方法ですが、以下のような制限や面倒くささがありがちです。 実行結果として簡単に受け取れるのは終了ステータスだけ 実行結果を得たい場合は一時ファイルへのリダイレクトや名前付きパイプを利用する 終了後に生成したファイルのクリーンナップ処理が必要 重複の回避などファイル名の生成に気を遣う必要がある 非同期処理の終了を wait で待機
ゲンゾウ用ポストイット シェル / Bash / Linux / Kubernetes / Docker / Git / クラウドのtipsを発信。 はじめにシェルスクリプトはお世辞にも読みやすいコードとは言えません。 なのでできる限りシンプルに、短く記述したいのですが、工夫をしないと ログ出力 処理がごちゃごちゃしてしまいます。 例えば、すべての出力、エラー出力をログとして保存しようとすると以下のような記述ができます。 #!/usr/bin/env bash LOG_OUT=/tmp/stdout.log LOG_ERR=/tmp/stderr.log # 標準出力 echo foo1 >>$LOG_OUT 2>>$LOG_ERR echo foo2 >>$LOG_OUT 2>>$LOG_ERR echo foo3 >>$LOG_OUT 2>>$LOG_ERR # 標準エラー出力 ls
bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set
Published on December 14, 2020 · Updated on December 16, 2020 Bash scripts. Almost anyone needs to write one sooner or later. Almost no one says “yeah, I love writing them”. And that’s why almost everyone is putting low attention while writing them. I won’t try to make you a Bash expert (since I’m not a one either), but I will show you a minimal template that will make your scripts safer. You
$ wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
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
はじめに シェル環境で作業することの多いみなさんは、シェルスクリプトのパッケージ管理ツールが欲しいと思ったことはあるでしょうか? 私はあります。一時期その欲求が高まって、つい自作してしまったほどです。1 本稿では、最近見つけたシェルスクリプトのパッケージ管理ツールを1つ紹介します。 こちらです: https://github.com/basherpm/basher 「basher」という名前で、一見Bash専用に見えますが、実はZshとfishにも対応しているそうです。 Even though it is called basher, it also works with zsh and fish. 私自身、BashとZshで動作を確認しており、これから常用していく予定です。 中身は完全にシェルスクリプトで実装されています。 READMEやコマンドのヘルプをざっと見たところ、以下のような機
みなさんはHomebrewをお使いでしょうか。macOSをお使いの多くの開発者が使っていると思います。 HomebrewのインストーラーはRubyで書かれており、次のコマンドでインストールするようになっていました。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" HomebrewがRubyに依存していることは良いのですが (formulaの書きやすさはRubyならでは)、インストーラーの話になると事情が変わってきます。HomebrewのインストールコマンドはmacOSの工場出荷状態でも動く必要があります。こういうものにRubyを使っているのはリスクがあります。 将来的にmacOSデフォルトにRubyやPythonが含まれなくなる (参考リンク
2009/09/07 毎年夏に開催される軽量プログラミング言語(LL:Lightweight Language)をテーマにした「LLイベント」。第7回目となる「LLTV」が、2009年8月29日に東京・中野で開催された。この記事ではプログラムの一部、「大改善!!劇的ビフォーアフター」をレポートする。前編では、Rubyによるfortuneコマンドの“増築”と、Firefox拡張によるslコマンドの実装というネタ系発表をレポートした。中編ではC言語にLisp風のマクロを取り入れ、lsコマンドのソースコードを約半分に削減する匠の技をレポートした。後編となる本記事では、売り場業務が滞りがちだった販売管理システムをbashコマンドで“建て直した”という劇的ビフォーアフターの発表をレポートする。 DBを捨ててテキストファイルに変換 「100万件ぐらいの検索なら、シェルだけでも1000分の数秒でできます
関連キーワード Windows 10 | Windows | Linux | Microsoft(マイクロソフト) 前編「Windows 10で使えるようになった『Bash』 『PowerShell』との違いは?」は、Windowsユーザーにコマンドラインインタフェース(CLI)を提供する「Bash」と「PowerShell」の違いを紹介した。後編は最近のPowerShellの進化を振り返った上で、BashとPowerShellのどちらを選ぶべきかを考えるヒントを紹介する。 併せて読みたいお薦め記事 「Windows」ユーザーが気になる「Linux」の機能 「Windows」で「Linux」の機能を使うこれだけの方法 Windowsから「Linuxデスクトップ」へ乗り換えたくなる4つの理由 必修Linuxコマンド83選 知っておきたい「Linux」基礎コマンド一覧:A~F編 知っておきたい
以下はAndrewによる記事、101 Bash Commands and Tips for Beginners to Expertsの日本語訳です。 一部を除き、上から順にコマンドを打って確かめることができるようになっています。 読むだけではなく、実際に打って試してみることで理解が早まることでしょう。 101 Bash Commands and Tips for Beginners to Experts 一年前まで、私はもっぱらMacOSとUbuntuのふたつのOSで作業をしていました。 両OSにおいて、私のデフォルトシェルはbashです。 過去6、7年ほどbashで仕事をしているため、bashがどのように動作するか、ある程度は理解しているつもりです。 従って、bashを始めたばかりの人にとって一般的で有用なコマンドについて、いくつか解説していきたいと思います。 また、bashについて知っ
■ bash の危険な算術式 _ 使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(本家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。 _ 以下のシェルスクリプトには脆弱性がある。わかるだろうか。 #!/bin/bash # "品目,単価,個数" の形式の CSV を読んで、"品目,合計金額" の形式で出力する csv="foo.csv" while IFS=, read item price num; do echo "$item,$((price*num))" done < "$csv" これ、細工された CSV ファイルを食わせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し
Bashで文字列をエスケープするのは案外面倒くさい。 そういえばシェル文字列をエスケープするコマンドとかありそうなのに知らないし…。まぁ僕が知らなかっただけで元からあるよって場合は誰か教えて下さい。 結論を先に書いておくと、今時の新規スクリプトは printf %q "$v" を使うのが一番確実かなと思う。Bash 4.3未満で~がエスケープされないバグとかあったけど未来の保守だけ考えれば良くて過去に持ち帰る必要が無いという要件が殆どだろうしやらないよりは1万倍マシ。 手順 面倒とはいえやらなきゃいかん。 で、とりあえず 'シングルクオート最強! $a "ho ge"' てな感じでシングルクオートで囲っておけば日本語や空白文字や変数やダブルクオートとかが入ってても何でもそのまま文字列として扱える。これは特定文字にバックスラッシュを付けるとかよりよっぽど簡単だし、簡単ということはミスや漏れも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く