タグ

bashに関するdai0916のブックマーク (35)

  • Bashスクリプトのチートシートと便利なスニペットまとめ - オープンソースこねこね

    Bashでスクリプトを書く際によく自分が使っている小技や関数などです。 またBashでは他のプログラミング言語以上に$や:などの記号の使い方が独特でググラビリティが低いので、基文法などもチートシートとしてまとめておきます。 基文法 変数と配列 制御構文 while for-in if - elif - else if文のone-liner 文字列比較 文字列が等しい (=) 文字列が等しくない (!=) 空文字、文字列長が0 (-z) 空文字でない、文字列長が0でない (-n) 数値比較 数値が等しい (-eq) 数値が等しくない (-ne) 数値がより小さい (-lt) 数値がより大きい (-gt) ファイルの判定 存在する (-e) ファイルである (-f) ディレクトリである (-d) シンボリックリンクである (-L) 関数 便利なスニペット 実行スクリプトがあるディレクトリを

    Bashスクリプトのチートシートと便利なスニペットまとめ - オープンソースこねこね
  • シェルスクリプトの代わりにPythonを使う - オープンソースこねこね

    これまで、開発や運用時に使う、ちょっとしたコマンドラインツール、自動化スクリプトは、主にBashのシェルスクリプトで実装していたのですが、最近このような用途にはPythonを使うようにしています。 Bashスクリプトへの不満 スクリプトの実装方針 ポータビリティ重視のための縛りPythonプログラミング Tips __future__モジュールでバージョン2、3両方に対応させる バージョン2、3で異なるモジュールを、同じ名前で読み込む バージョン2、3を判別する関数を用意する よく使うスニペット 文字に色をつける 赤い文字でエラーメッセージを出力して終了する 外部コマンド実行する テキストをファイルに出力する ファイルに実行権限をつける スクリプトの同時、多重起動防止する コマンドライン・オプションの解析 HTTPリクエスト まとめ Bashスクリプトへの不満 Bashのスクリプト実装にお

    シェルスクリプトの代わりにPythonを使う - オープンソースこねこね
  • Bashでバージョン番号をインクリメントする | DevelopersIO

    アプリのリリース作業において、ファイル管理しているバージョン番号をインクリメントする作業が往々にして発生します。 手動更新は面倒な上にヒューマンエラーのリスクも高まります。 そこで Bash でバージョン番号をインクリメントする方法を紹介します。 やりたいこと major.minor で採番されているバージョン番号に対して、Bash で minor の数字を一つ増やす Bash の知識をあまり想定せず、わかりやすさを重視 実行イメージ $ CUR_VERSION=1.9 # なにかコマンドを実行して現在のバージョン番号を取得 $ NEW_VERSION=Bash でゴニョゴニョ # ← 今回のメイン $ echo $NEW_VERSION # バージョン番号がインクリメントしていることを確認 1.10 案1: IFS を修正 実行例 $ CUR_VERSION=1.9 $ NEW_VERS

    Bashでバージョン番号をインクリメントする | DevelopersIO
    dai0916
    dai0916 2017/10/02
  • [小ネタ] mkdir したディレクトリに cd する方法 9 選 +1 (BASH) ※追記あり | DevelopersIO

    $ mkdir /very/_very/Very-long/directory_name/20170915 なんて操作をしたあと、そのディレクトリにcdしたい場合ってまれによくありますよね。 どんなやり方があるか考えてみました。 1. コピペする そのまんまですが、これをやりたくなくてこの blog を書いてます。 2. TAB 補完で頑張る これも無いわけではないですが、間違えたりすることを考えると正直あんまりやりたくないです。 3. 上矢印キーで前コマンドを呼び出し、右矢印キーで先頭に戻ってmkdirをcdに書き直す よく見る方法ですが、もうすこし少ない手数でできないでしょうか。 4. 上矢印キーで前コマンドを呼び出し、Ctrl-Aで先頭に戻ってCtrl-Dx5 のあとにcd BASH のキーバインドはデフォルトだと emacs モードなので、このやり方が出来ます。 でもまだちょっと手

    [小ネタ] mkdir したディレクトリに cd する方法 9 選 +1 (BASH) ※追記あり | DevelopersIO
  • Bashアプリケーションをテストする | POSTD

    以前、bashスクリプトをテストする仕事に取り組んだことがあります。最初、Pythonユニットテストを使うことにしましたが、プロジェクトに外部技術を持ち込むのは気が進みませんでした。そこで、仕方なく、悪名高い bash で書かれたテスト用フレームワークを使いました。 既存ソリューションの概要 手に入るソリューションを探してGoogle検索しましたが、選択肢はほんの少ししかありませんでした。そのうちいくつかについて、詳しく見ていきましょう。 重要になるのは、どんな基準でしょうか? 依存関係: bass のテスト用フレームワークを選ぶときに、 python 、 lua などのシステムパッケージも一緒に引きずり込むのは嫌ですね。 インストールの難しさ:継続的な開発の実装とTravis CIでの継続的な統合も仕事の1つだったので、私にとってインストールにかかる時間と手間数が妥当だということは、重要

    Bashアプリケーションをテストする | POSTD
  • bashスクリプトをデバッグする方法 - Qiita

    #!/bin/bash exec 5> debug_output.txt BASH_XTRACEFD="5" PS4='$LINENO: ' set -x するとdebug_output.txtにログが出力される。 exec 5>はファイルディスクリプタ5番をdebug_output.txtにするという意味。 PS4はトレース出力の際に表示されるプロンプト。$LINENOにより行番号を表示している。 set -xは実行するコマンドをトレース出力させる。 元記事にはbashdblog4bash、Eclipse、Visual Studioo Codeを使う方法なども紹介されているが、これが一番手軽でほとんどの場合十分だと思う。 Register as a new user and use Qiita more conveniently You get articles that match

    bashスクリプトをデバッグする方法 - Qiita
  • Windows Subsystem for Linuxを使って「開発」をしてみよう

    WindowsとWSL(Windows Subsystem for Linux)の間でファイルシステムを上手に相互運用するためのヒントや、WSLを活用してクロスプラットフォームな開発を行う方法を説明する。 ← 前回 連載 INDEX 次回 → 前回は、Windows Subsystem for Linux(以下、WSL)の概要とインストール方法を説明した。今回は、より実践的な内容として、WSLとWindowsでファイルシステムを上手に相互運用するためのヒントとして、Windows側のファイルパス作成時の注意点を紹介する。また、WSLを活用してクロスプラットフォームな.NET開発を目指したい人に向けて、ASP.NET Coreサイトを動かす方法と、WindowsからLinuxネイティブバイナリをデバッグする方法を説明する。 Windowsとの相互運用 WSLとWindowsではもともとの思想

    Windows Subsystem for Linuxを使って「開発」をしてみよう
  • 【西川和久の不定期コラム】 Windows 10 Creators Updateで「Bash」がバージョンアップ【前編】 ~Ubuntu 14.04.5 LTSから16.04.2 LTSへ。WindowsのEXEも実行可能

    【西川和久の不定期コラム】 Windows 10 Creators Updateで「Bash」がバージョンアップ【前編】 ~Ubuntu 14.04.5 LTSから16.04.2 LTSへ。WindowsのEXEも実行可能
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
  • Bash on Ubuntu on Windowsの、Creators Updateでの強化点&新機能

    正式リリースされたWindows 10 Creators Updateで、Bash on Windowsはどう進化するのか? その強化点と新機能を紹介する。 ← 前回 連載 INDEX 2016年8月にリリースされたWindows 10 Anniversary Update(ビルド14393)に続く、大型アップデートWindows 10 Creators Updateのリリースが2017年春ごろとうわさされている。Anniversary Update登場以降、Windows 10の新機能をいち早く試せるInsider Previewで小規模なリリースは継続されてきており、Bash on Ubuntu on Windows(以下BoW)も同様に機能強化が行われてきている。稿では、Anniversary Update以降で追加され、Creators Update正式リリース版で使用可能とな

  • コマンド一発で WordPress のデプロイ・同期ができるツールをつくりました

    WordPress をデプロイしたり、ローカル・リモート間で同期できるツールというと Wordmove がよく知られています。LT で紹介しちゃうくらい僕も Wordmove はよく使っていたのですが、何かの折につけよく動かなくなっていて、多分 ruby のアップデートとかそういうのだと思うのですが、忙しいときにデプロイできなくなったりするとまぁめんどくさくて、もっと簡単に導入できて可用性も高いツールがほしいなということで WP-CLI と rsync を使ってデプロイ・同期させるツールをつくりました。 bash-wp-deploy bash-wp-deploy というツールです。名前からわかるとおりシェルスクリプトです。Mac でしか動作確認していませんが、bash で書いているので Linux とかでも普通に動くと思います。Windows はわかりません。WP-CLI と rsync

    コマンド一発で WordPress のデプロイ・同期ができるツールをつくりました
    dai0916
    dai0916 2017/01/23
  • bashの初見殺しっぷりがハンパない件 - Qiita

    「これ知らなきゃ分からないだろ!」 「エラーの原因はわかったけど、なんか腑に落ちない」 いま悩んだ2時間返せ! bashというか、UNIXのコマンドに慣れてない 僕みたいな新人エンジニアが 気をつけた方がいいポイントまとめました。 あいことばをわすれない 微妙にエラーが出ないため、気づかないまま進んでしまい、 のちのち絶妙に致命的なことになってしまうので注意。 一行目忘れて2時間悩みました 二行目のオプションつけなかったため2時間悩みました setのオプションはお好みで あいことばの解説: http://qiita.com/magicant/items/f3554274ee500bddaca8 半角スペースをつけるな!半角スペースをつけろ! shellさんはスペースに非常に神経質です。 よくある変数代入では=の前後にスペースいれてはダメです。

    bashの初見殺しっぷりがハンパない件 - Qiita
  • シェルスクリプトの罠を避ける三つの tips

    シェルスクリプトは、Unix 系環境で仕事をするエンジニアなら誰もが一度は書くであろうにもかかわらず、書き方や特性を熟知している人が少ない言語です。この記事は、シェルスクリプトを書くときに罠を踏まないようにするために最低限あなたが気を付けるべき tips 集です。「たかがシェルスクリプト」とは思わないでください。生半可に書かれたシェルスクリプトはあなたの (チームの) 生産性をかえって低下させます。 Shebang に bash を明示しろ Bash でしか使えない機能のことを俗に Bashism と言います。Bashism はもちろん Bash 以外のシェルでは動きません。これに関するありがちな罠は、以下のように発生します。 Bash が /bin/sh として使われている環境でシェルスクリプトを書く。うっかり Bashism がシェルスクリプトに含まれていても、 /bin/sh は何も

    シェルスクリプトの罠を避ける三つの tips
  • bashでmemcachedを実装しました! - Qiita

    TL;DR bashとsocatコマンドを利用してmemcachedを実装しました。 MakeNowJust/bashcached - GitHub 文 はじめに bashで実装したmemcachedです https://t.co/5UQk8x3wqw — さっき作った@3日目東R-13a (@make_now_just) 2016年10月28日 bashでmemcachedを実装したらHacker Newsでちょっと話題になったみたいなので記事にします。 とりあえずインストール方法 インストール方法です。 まずsocatが必要なので、

    bashでmemcachedを実装しました! - Qiita
  • Bashタブ補完自作入門 - Cybozu Inside Out | サイボウズエンジニアのブログ

    ドーモ、SREチームの湯谷(@yutannihilation)です。最近気になるモジュラーシンセはIntellijelです。 上司がいい感じのコマンドをつくるという記事を書いていましたが、いい感じのコマンドにはいい感じのタブ補完を付けたくなります。この記事ではBashのタブ補完を自作する方法を紹介します。 タブ補完の仕組み Bashのタブ補完自体はBashに組み込まれている仕組みです(参考:Bash Reference Manual - 8.6 Programmable Completion)。completeというBashの組み込み関数によって補完方法(compspec(completion specification)と言うらしいです)が規定されていて、これがタブなどによって起動されます。 タブ補完は、lsならファイル名、cdならディレクトリ名、というようにコマンドに応じたものが設定さ

    Bashタブ補完自作入門 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 最近、httpstat なるものが流行っているらしい - tellme.tokyo

    github.com おそらく先行実装は python で書かれたこれです。 curl にはウェブサイトの応答時間を計測する機能が搭載されており、このツールではそれを利用して出力結果をグラフィカルに表示させています。単なる curl のラッパーのようなツールなのですが、見た目がリッチになるのに加えて、単一ファイルで実行でき python のバージョンに影響されないような工夫がされているのが、受けているポイントのような気がします。 このツールを見たとき「Go で書いてみるの良さそう!(この手のツールで単一バイナリになるのは嬉しいですよね)」と思い、休憩時間やお昼休みなどにちまちま書いていたら、二日前に先を越されてしまいました(そりゃそうですよね。なんでもスピードが大事だと痛感)。 github.com また、ついこの間まで 800 Stars くらいだったのですが、ここ1週間で爆発的に伸びて

    最近、httpstat なるものが流行っているらしい - tellme.tokyo
  • コマンドラインツールを書くなら知っておきたい Bash の 予約済み Exit Code - Qiita

    上記の表の通り,Exit Code 1, 2, 126〜165, 255 は特別な意味を持ち,スクリプトやプログラム内で exit に指定するパラメータとしては避けるべきである.とりわけ,Exit Code 127 はトラブルシューティングで混乱の元である("command not found" で終了したのか,プログラム固有のエラーなのか区別できなくなる).しかしながら,多くのスクリプトが exit 1 を一般的な実行を続行できないエラーとして使っている.Exit Code 1 は Bash の一般的なエラーを含め,とても多くのエラーで発生しうるので,デバッグの時に切り分けが大変になるだろう. Exit Code を体系立てて定義する試みはある(/usr/include/sysexits.h)が,これは C と C++ プログラマー向けである.スクリプトに関しても同様な感じにするのが適切

    コマンドラインツールを書くなら知っておきたい Bash の 予約済み Exit Code - Qiita
  • Windows Subsystem for Linuxとは? そのインストールと使い方 - Build Insider

    Windows上のBashシェル入門【Windows 10 Fall Creators Update対応】(1) Windows Subsystem for Linuxとは? そのインストールと使い方 Fall Creators Updateで正式版として提供されることになった「Windows 10上で動作するLinuxサブシステム」によるBashシェルの基礎を理解・マスターすることをゴールとして、Windows Subsystem for Linux(WSL、旧称:Bash on Ubuntu on Windows)の概要から、インストール方法までを解説。また、よくある疑問をQ&A形式で短くまとめる。 連載 INDEX 次回 → “Windows Subsystem for Linux”(以下、WSL)は、2016年4月の発表当時から「WindowsにBashシェルが入る!」と大きな話題

    Windows Subsystem for Linuxとは? そのインストールと使い方 - Build Insider
  • Windows10 Anniversary updateで知らぬ間にSSHdが起動している : やすひでぶろぐ

    リリースされたばかりのWindows10 Anniversary updateを適用しました。 目当てはBash(Ubuntu) on Windows。早速開発者モードを有効にしてセットアップ! どれどれ、ほかに変わったところは無いかな。 ん・・・!? SSH Server Broker、SSH Server Proxy is 何? ためしに管理者のユーザー名、パスワードを入力して、ポチッとな! コマンドプロンプトが使えました。 ア カ ン v4/v6 Listen、ファイアウォール全許可 ローカルListenしているだけで、ネットワーク越しには使えないよね常識的にかんg・・・ 0.0.0.0:22、[::]:22でListenしている。 Windows Firewallの様子はどうかと思うと・・・ 全許可。なんということでしょう。 Bash on Windows利用時は注意 目玉機能の一

    Windows10 Anniversary updateで知らぬ間にSSHdが起動している : やすひでぶろぐ
  • Bashでちょっと凝ったオプションの解析をする - 🐾 Nekonote.

    痒いところに手が届かないのをなんとかしたかったのねん Bashスクリプトを書いてたら、ちょっと凝ったオプション解析をしたくなった。 ロングオプションも使えるようにしたい オプションの第二引数は任意にしたい Bashスクリプトでオプション解析といえば getopt や getopts を使うと思いますが、 getopt はBashのビルトインコマンドなのでどこでも使えるけどロングオプションが使えない getopts は BSD系(macOSなど) と GNU系(Linuxなど) で動きが違う など微妙に痒いところに手が届かないので、下記のQiita記事を参考に、メモがてらちょっとアレンジしつつオレオレオプション解析を書いてみました。 qiita.com 下記をパースに使えば ロングオプションが使える 任意のオプションごとの引数を使える オプション外の値を処理できる ・・・ようになりました #

    Bashでちょっと凝ったオプションの解析をする - 🐾 Nekonote.
    dai0916
    dai0916 2016/07/02