タグ

bashに関するcpwのブックマーク (19)

  • 【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita

    はじめに もう文字列の置換で sed コマンド使うの禁止して良いんじゃないですかね? 言いすぎだとわかってあえて言っていますが。 悪い書き方(外部コマンドに頼る方法) # 変数 line に入ってる文字列を echo コマンドで出力して sed コマンドに渡し、 # sed の s コマンドで "from" を "to" に置換して出力したものを ret 変数で受け取る ret=$(echo "$line" | sed "s/from/to/")

    【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita
    cpw
    cpw 2023/09/02
    これは目から鱗
  • シェルスクリプトで "set -o pipefail" を付けるとSIGPIPEで死ぬ - Qiita

    #!/usr/bin/env bash set -eo pipefail false | true echo "won't be printed" # この行は実行されない false コマンドは常に失敗するので、以降の行は実行されないというわけです。 SIGPIPEで死ぬパターン しかし、ここで1つ落とし穴があります。 パイプの左側のコマンドが通常は成功する場合でも、パイプの右側のコマンドによって SIGPIPE が発生することがあるのです。 例えば、次のようなパターンです。

    シェルスクリプトで "set -o pipefail" を付けるとSIGPIPEで死ぬ - Qiita
    cpw
    cpw 2018/09/14
    へぇ。知らなかった。
  • bashスクリプティング研修の資料を公開します - エムスリーテックブログ

    こんにちは、エンジニアリングGの中村です。 以前にこのブログにてエムスリーでの社内研修について紹介しました。今回は、この中でのbashスクリプティング講座の資料を公開します。 www.m3tech.blog 弊社の中でもいろいろな用途でbashが使われていますが、bashは簡単に利用できるもののプログラミング言語としてはバグを生みやすい、辛い言語だと思います。 ここで紹介しているのはいわゆるコーディング規則というよりも、バグ防止と可読性向上のためのルールをTips集的にまとめたものです。 bashにおいてまだまだ注意するところはありそうですが、多少なりともわかりにくいスクリプトの削減になればと期待しています。 [追記: 2018-08-22] はてブにて以下のコメントをいただきました。 bashスクリプティング研修の資料を公開します - エムスリーテックブログ bashで50行以上になった

    bashスクリプティング研修の資料を公開します - エムスリーテックブログ
  • GitHub - niieani/bash-oo-framework: Bash Infinity is a modern standard library / framework / boilerplate for Bash

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - niieani/bash-oo-framework: Bash Infinity is a modern standard library / framework / boilerplate for Bash
    cpw
    cpw 2018/08/12
    なにこれ。面白そう
  • Bashのよくある間違い | Yakst

    原文は2015年8月22日時点のものを利用しており、それ以降に追記、更新されている可能性があります。 翻訳は原作者の許可を得て公開されています。 Thanks for GreyCat! このページはBashプログラマーが陥りがちなよくあるエラーについてまとめました。以下の例は全てなんらかの欠陥があります。 クオートをいつも使い、どんな理由があっても単語分割を使わなければ、多くの落とし穴からあなた自身を守ることができます!単語分割はクオート表現をしない場合にはデフォルトでオンになっている、Bourneシェルから継承された壊れたレガシーな設計ミスです。落とし穴の大半はクオートされていない展開になんらか関連し、単語分割しその結果をグロブします。 1. for i in $(ls *.mp3) BASHプログラマーたちがループを書く際にもっとも犯しがちなよくあるミスは以下のような感じです。: f

    Bashのよくある間違い | Yakst
    cpw
    cpw 2017/12/13
  • コマンドラインツールを書くなら知っておきたい 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
    cpw
    cpw 2016/10/01
    これは知らなかった
  • linuxのシェルスクリプトで日付でループする - Qiita

    #!/bin/sh # # YYYY-MM-DD # STARTDATE=2014-02-20 ENDDATE=2014-03-02 CURRENTDATE=$STARTDATE while [ 1 ] ; do # 処理 echo $CURRENTDATE if [ $CURRENTDATE = $ENDDATE ] ; then break fi CURRENTDATE=`date -d "$CURRENTDATE 1day" "+%Y-%m-%d"` done

    linuxのシェルスクリプトで日付でループする - Qiita
    cpw
    cpw 2016/07/21
    日付
  • GoTTY 良さそう - Qiita

    GoTTY - Share your terminal as a web application https://github.com/yudai/gotty Qiita でも既にいくつか紹介されていますが、 個人的に使用した感じをメモ代わりに残してみます。 ちなみに、同じ名前で別のツール(こちらの方が名前的にそのままで Go による Terminal アプリ)もあるので、ご注意を。 さて、このツール、コマンドラインの入出力を WebSocket を使ってブラウザ上の入出力にマッピングして、簡単にサーバー上の端末画面をブラウザに表示してくれちゃいます。 インストール は簡単で、Go 製のワンバイナリになっているので、GitHub の Release ページから https://github.com/yudai/gotty/releases/download/v0.0.12/gotty_li

    GoTTY 良さそう - Qiita
    cpw
    cpw 2016/02/16
    こえー。でもプレゼン用途にはかなりよさそう
  • シェルの変数展開 - Qiita

    こちらも blog からの転載。 シェルスクリプトを作成する際にシェル変数に値を代入したり参照したりする事は頻繁に発生するが、 シェル変数の展開にも便利な使い方がある。 basename (1) や dirname (1) と同様な動作がシェルの組込みとして利用できるので資源の節約にもつながり、 上手に利用すると可読性の高いスクリプトが作成できる。 機能一覧 記述 機能

    シェルの変数展開 - Qiita
    cpw
    cpw 2016/01/29
    ちゃんとマスターしておかないと
  • シェルスクリプトを書くときはset -euしておく - Qiita

    エラーがあったらシェルスクリプトをそこで打ち止めにしてくれる(exit 0以外が返るものがあったら止まるようになる)。「あっあれここでうまくいってないからデータ準備できてないのにあれあれっもうやめて!」ってなるのを防げる。 set -u 未定義の変数を使おうとしたときに打ち止めにしてくれる。Perlでいうuse strict 'vars';的なもの。 って気軽な気持ちで書いてしまって、「ん、やたら時間かかると思ったらスペルミスうわなにをするやめ」ってなるのを防げる。 一部だけ例外にしたい はてなブックマークのコメントより -e は command1 || command2 みたいなことが出来なくなるの使うことないな。-uは付けといて良いが。 確かにおっしゃるとおりですね。コマンドの失敗を考慮して書いている部分については(もしくはやたらexit 0以外するコマンドを呼ばないといけないときなど

    シェルスクリプトを書くときはset -euしておく - Qiita
    cpw
    cpw 2016/01/24
    これデフォルトにしてほしいなぁ
  • 多重起動を防ぐシェルスクリプト - zenpouの日記

    cron等でシェルを複数回実行した時、多重起動するとまずいので、それを回避するスクリプト。 業務上必要だったので作ってみた。 #!/bin/sh SCRIPT_PID="/home/takase/work/run_script.pid" if [ -f $SCRIPT_PID ]; then PID=`cat $SCRIPT_PID ` if (ps -e | awk '{print $1}' | grep $PID >/dev/null); then exit fi fi echo $$ > $SCRIPT_PID (この辺にバッチの処理) rm $SCRIPT_PIDpidでプロセスの有無を確認しているので起動中は2重に実行されないし、 何か理由があって落ちてた場合は再実行される。 後はcrontabにこのシェルを設定してやればOK

    多重起動を防ぐシェルスクリプト - zenpouの日記
  • GitHub - magicmonty/bash-git-prompt: An informative and fancy bash prompt for Git users

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - magicmonty/bash-git-prompt: An informative and fancy bash prompt for Git users
    cpw
    cpw 2014/12/25
  • Batsh·Bashスクリプト、Windowsバッチファイルを生成するプログラミング言語 MOONGIFT

    最近、altJSに代表されるような言語を抽象化したプログラミング言語が人気です。素のままに使うのではなく、抽象化することでより優れた書き方に変換できたり、多数のフォーマットへの変換を容易にします。 Batshもその一つです。Batshという代替言語から、BashスクリプトとWindowsのバッチファイルを生成することができます。 Batshの使い方 左側がBatsh、右側がBashスクリプトへの変換結果です。 同じスクリプトからWindowsのバッチファイルを生成。 関数も使えます。 Windowsだとcallなんですね。 Batshを覚えてしまえばBashスクリプトもWindowsのバッチファイルも同じ書き方で対応できるようになります。あまり使う機会のない言語の場合、覚えておくのも大変です。Batshを習得しておけばLinux/Windows環境の両方で便利に使えるでしょう。 Batsh

    Batsh·Bashスクリプト、Windowsバッチファイルを生成するプログラミング言語 MOONGIFT
    cpw
    cpw 2014/09/13
    パワーシェルじゃなくてバッチファイルなんだ。もう最近はパワーシェルを普通に使ってもいいんじゃないかと思う。俺は使えないけど、、、
  • その入力だけBashのヒストリを残さない - Qiita

    この記事は最終更新から1年以上経過しています。 気をつけてね。 入力時に1つ以上の半角スペースを入れるとBashヒストリに残らない。 下記のようなケースで役に立つ。 VMのひな形作成などでヒストリを残したくない ヒストリにあったshutdownコマンドを勢いで叩いてしまいたくない 追記:依存する設定 ちゃんと設定があるという突っ込みを頂いたので追記、環境変数HISTCONTROLに ignorespace または ignoreboth が設定されていたらこの記事の挙動になる。 という事がmanにちゃんと書いてあった。 HISTCONTROL A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignore

    その入力だけBashのヒストリを残さない - Qiita
    cpw
    cpw 2014/05/27
  • うっかりnohup無しで長時間かかるコマンドを実行したときに後から終了しないようにする - Glide Note

    いつまで経っても終わらないから帰れない… 途中で終了してしまうと困るので、ログアウトしても終了しないように。 作業の流れ Ctrl+Zでコマンドの中断 bgでバックグラウンドに回す jobsでジョブの確認 disownでログアウトしても実行されるようにする 実際のコマンドだと

  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
  • bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する - 双六工場日誌

    @hirose31 さんが「シェルスクリプトでハマった件→【募】ステキな回避方法」でお題を出されていて、それに回答してみました。 その内容はリンク先を見てもらうとして、回答の中で使ったbashのプロセス置換について書かれた記事をあまり見ないので、回答で使ったプロセス置換のことをエントリにしてみたいと思います。 最初に注意点ですが、プロセス置換の機能は、bashやzsh*1の機能でPOSIX互換の機能ではありません。そのため、使用時には、対応していないシェルでは使えませんし、bashで使う場合も /bin/sh ではなく /bin/bash を明示的に指定する必要があります。たとえば、プロセス置換を使ったスクリプト「script.sh」に対して"$ bash script.sh" というコマンドは成功しますが、"$ sh script.sh" というコマンドは失敗します。この辺りの違いは「/

    bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する - 双六工場日誌
    cpw
    cpw 2013/08/16
  • /bin/sh と /bin/bash の違い - 双六工場日誌

    みなさん、shebang書いてますか! Shebangというのは、スクリプトの最初の一行目に書く、「#!/bin/sh」とか「#!/usr/bin/perl」とかそういうあれです。詳しくはWikipediaさん(シバン (Unix))に聞いてくださいまし。 Twitter見てると、「そもそもこれにshebangなんて名前がついてるの知らなかったよ」という発言も見る不憫な子ではあるのですが、そこに何が書いてあるかで実は動作が違うよってのが今日の題です。それで、はまっていたのを最近見て、まああまりここで引っかかる人はいないと思いつつ、この点を書いた情報を見ないのでまとめてみました。*1 今日取り上げるのは、bashがデフォルト設定になっているLinuxでの「#!/bin/sh」と「#!/bin/bash」のお話。確認はCentOS5, 6で行なっています。 さて、上記の環境の場合、「/bin

    /bin/sh と /bin/bash の違い - 双六工場日誌
    cpw
    cpw 2013/08/16
  • 1