タグ

bashに関するiwwのブックマーク (278)

  • 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
    iww
    iww 2014/09/14
    もう一歩進めて bashをbatにコンバートして欲しかった
  • pecoの基礎の基礎 - Qiita

    「pecoってツールらしきものが流行っている」と思いつつ、導入とか難しそうと思って後回しにしていたんですが、気がついたら自分の手元のbash設定ファイルにpecoを使う関数が定義されていたので、改めて初歩からやってみました。 説明に使用しているシェルはお馴染みのbashです。 pecoとは GitHubのpecoのサイト とてもシンプルなツールで 「標準入力から受けた行データをインクリメンタルサーチして、選択した行を標準出力に返す」 コマンドです。 シンプルゆえに様々な組み合わせで効果を発揮します。あらゆる場面での選択肢を標準入力に渡して、選択された結果を標準出力から受け取って加工してコマンド実行をする、というのが基的な流れ。 説明じゃ伝わらないので実例を体験したほうが早いかも。 peco のインストール pecoで検索すると「pecoはGoでできている」とか出てきて「Goってなんぞや」

    pecoの基礎の基礎 - Qiita
  • テキストファイル内の制御コードを検索するには - @IT

    テキストファイルに含まれる文字を検索する場合、grepを使うケースが多い。しかし、grepには16進数を指定する機能がないため、テキストファイルに含まれる各種制御コードの有無を検索できない。 このような場合、シェルの機能を利用すれば各種制御コードの有無を検索できる。多くのディストリビューションでは、bashが標準となっているので、ここではbashによる指定方法を紹介する。 bashでは、$'<文字列>'という指定をすると、それがバックスラッシュでエスケープされている文字に置き換えられる。これにより、各種制御コードを検索できる。具体的には、以下のようにデコードされる。

    iww
    iww 2014/09/08
  • $# - シェルに渡された引数の個数

    [Linux] => [シェルスクリプト] 特殊変数$#はシェルに渡された引数の個数を表します。 « killproc関数 | | sourceコマンド (ピリオド) »

    iww
    iww 2014/09/02
  • bash - コマンド (プログラム) の説明 - Linux コマンド集 一覧表

    bash は、標準入力やファイルから読み込んだコマンドを実行する、 sh 互換のコマンド言語インタプリタです。 bash には、Korn シェルや C シェル (ksh や csh ) の便利な機能も採り入れられています。 bash は IEEE POSIX Shell and Tools specification (IEEE Working Group 10032) に準拠する実装を目指しています。 bash は以下のオプションを起動時に解釈します (組み込みコマンド set の説明で述べられている 1 文字のシェルオプションも使えます): -c string -c オプションが指定されると、コマンドが string から読み込まれます。 string の後に引き数があれば、これらは 位置パラメータ (positional parameter: $0 からはじまるパラメータ) に代入さ

    iww
    iww 2014/07/25
  • [シェル芸]シェルゲイ・マルムスティーン – (っ´∀`)っ ゃー | 一撃

    みなさんこんにちは。日いよいよ四十路にリーチがかかってしまいました。沢山のおめでとうメッセージありがとうございます!今後もシェル芸道に励んでいきたいと思います。いきなり宣伝です。 [amazonjs asin="4048660683" locale="JP" title="フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門"] 実は私、このの中にあるエピソードで登場しております。どこらへんに登場しているかはアスキー・メディアワークスさんのサイトで目次を見ながらニヤニヤしてください。Bash CMSですが、1日で作ったエピソードはこちらになります。 こちらのスライドは去年春のOSCのコミュニティ企画「OSC.cms」で、ものすごくアウェーな試合をしたときのものです。 さて、そんな裏話もありつつ出来上がったシェルスクリプト高速開発、表紙の帯に「シェル芸を極めよ!」とい

    [シェル芸]シェルゲイ・マルムスティーン – (っ´∀`)っ ゃー | 一撃
    iww
    iww 2014/07/03
    なんだこれ
  • PS4の設定でシェルスクリプトのデバッグが捗る - Qiita

    .bashrc とかに以下の設定を書いておくと、bash -x や set -x 状態でスクリプト実行したときに、出力がリッチになってデバッグが捗ります。 # PS4の設定でシェルスクリプトのデバッグが捗る http://bit.ly/1gncKrn export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME:+$FUNCNAME(): }'

    PS4の設定でシェルスクリプトのデバッグが捗る - Qiita
  • シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    シグナルと trap コマンド シグナル シグナルとは? シグナルとは、実行中のプロセスに対して、さまざまなイベントを通知するために送出されるものである。 よく使用される、プロセスを終了するためのシグナルである SIGTERM や SIGKILL などのほかにも、数十種類のシグナルが存在する。 使用可能なシグナルの一覧は、コマンドラインから kill -l を実行することで参照可能である。 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19)

    シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • CUI ddコマンドの進捗状況をプログレスバーでパーセント表示させる

    CUI ddコマンドの進捗状況をプログレスバーでパーセント表示させる タイトル通りです。 実行環境は↓です。 # uname -a Linux linux-pukh 3.1.0-1.2-desktop #1 SMP PREEMPT Thu Nov 3 14:45:45 UTC 2011 (187dde0) i686 i686 i386 GNU/Linux # cat os-release NAME=openSUSE VERSION = 12.1 (Asparagus) VERSION_ID="12.1" PRETTY_NAME="openSUSE 12.1 (Asparagus) (i586)" ID=opensuse ちょっと気にしている点として、 ・コピー元、先のHDDサイズを比較するロジックがない。(コピー元と先のHDDサイズは同じサイズが良い。) ・コピー元、

  • 現在の shell を shellscript の中から確認する(Linux, BSD 両対応) - tkuchikiの日記

    現在の shell(以下、current shell) を確認する方法として真っ先に思い浮かぶのは以下だと思います。 $ echo $SHELL /bin/bash ただ、これは不正解で、$SHELL はあくまでも login shell ですので、 login shell と current shell が違う場合は正しい値を返してくれません。 私の場合ですと、ローカル環境で常時利用しているのは zsh ですが、 login shell は bash です(zsh を login shell にすると重いと教えていただいたことがあるので)。 このようなケースでも正しい値を返す方法が以下です。 $ echo $0 -zsh shell 上では $0 に current shell が格納されています。 これで解決すれば良いのですが、shellscript 内で確認しようと思うと話しは変わっ

    現在の shell を shellscript の中から確認する(Linux, BSD 両対応) - tkuchikiの日記
    iww
    iww 2014/05/10
  • コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ

    不慣れな環境を不意にいじった時にあるあるネタ。 とりあえずー とか言って勢いで書いたsetupスクリプトを実行してみたら意外と時間かかって、 ちょっと目を離した隙にsshの接続が切れちゃいました! 。。。ありますよね。ほんとよくありますよね。 そうなる予感はあったんだ なんて後の祭りです。ふとした油断から、screenもnohupすらも使わずにやってしまって、こんなことに。 shellがHUPしなかったからプロセスは生きてるものの、ログが見れないから進行状況がわからない。 うまく行ってるのかどうかモヤモヤした気持ちのまま、プロセスが終わるのをじっと待つ。。。 まぁ実に切ないです。 こんな時、いつも思うこと。 このプロセスの出力、もっかいstdoutに繋げられたらいいのに。。。 はい。というわけでつなげましょう。 長い前座ですみません。 切り離したプロセスを用意 #!/bin/bash wh

    コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ
  • /sbin/nologinのアカウントにスイッチする方法 | Pocketstudio.jp log3

    自分用φ(..)メモメモ /sbin/nologin にシェルが指定されたアカウントでは、su でスイッチしようとしても、 # su - munin This account is currently not available. ぐぬぬ、このようにユーザの切り替えができません。 こんなときは、su に「–shell=」という引数を与えると、無事スイッチできます。 # su - munin --shell=/bin/bash -bash-3.1$

  • bash 文字列 切り出し

    $変数名 又は ${変数名} その値 ${var:-文字列} 変数が存在し空でなければその値、それ以外なら文字列 ${var:=文字列} 変数が存在し空でなければその値、それ以外なら変数に文字列を設定 ${var:?文字列} 変数が存在し空でなければその値、それ以外なら文字列を出力して終了 ${var:+文字列} 変数が存在し空でなければその文字列、それ以外なら空 # 部分文字列 # 指定位置~末尾 # 指定位置~要素数 # ${var:位置} ${var:位置:長さ} # 先頭 OR 末尾からマッチした部分を削除 # 先頭がパターンマッチしたら、最短マッチ部分を削除 ${var#パターン} # 最長マッチ ${var##パターン} # マッチしたお尻を消す # 最短 ${var%パターン} # 最長 ${var%%パターン} # マッチ文字列を置換 # 最初にマッチした部分のみ ${va

  • [nginx] nginxでbash/CGIを動かす – ブラウザからシェルスクリプトを実行してみよう! – (っ´∀`)っ ゃー | 一撃

    [nginx] nginxでbash/CGIを動かす – ブラウザからシェルスクリプトを実行してみよう! – (っ´∀`)っ ゃー | 一撃
    iww
    iww 2014/03/18
  • Bash変態文法最速マスター

    注意このドキュメントは、すでにshまたはbashでそれなりにスクリプトを書いている人向けに書かれています。自分が対象読者でないと思ったら、すっぱりと読むのをあきらめてください。時間の無駄です。 このドキュメントではBash version 3.x 系(3.1以降) 4.x 系を対象にしています。2.x 系だと微妙に文法が違うところがあるので注意してください。ちなみに 4.x 系だと、変態なことをしなくても同じことができたり(連想配列が使えるようになったはず)、逆にもっと変態なことができたりします。(2013/09/11 追記) 書きかけで放置している間にメイン環境が 4.x になりました。3.x と 4.x でどこが違うかもう覚えてないし調べるのも面倒なので 4.x 系前提でいきます。 このドキュメントは、主にPOSIXなshにはないBashの機能を使い倒すことを目的としています。ここにあ

  • 何気なく使ってるhistoryコマンドについてちょっと調べてみた。Macの。 - kanonji’s diary

    historyコマンドについて調べてみました。調べたのは割と前なので、なんで調べようと思ったのかもう忘れました。 historyコマンドはシェルに組み込まれたコマンドだった $ whereis history $ which history $ type history history is a shell builtinhistoryコマンドがどこにあるのか気になったんですが、whereisとwhichでは何も出ませんでした。色々調べてtypeコマンドを知って、使ってみたらビルトインとの事。なので、下に書いた変数なんかもbashのお話ぽい。bashしか使ってないのでほかのシェルのことは分かりません。 ちなみにMacでのwhereisコマンドとwhichコマンドの違い - kanonjiの日記というエントリーもあります。 historyコマンドに関連するbashの変数 HISTFILE ヒ

    何気なく使ってるhistoryコマンドについてちょっと調べてみた。Macの。 - kanonji’s diary
  • シェルスクリプトで標準入力を加工する際の注意点 : DSAS開発者の部屋

    シェルスクリプトで標準入力を加工する際に若干ハマリかけたので、今回はそのお話をしたいと思います。 みなさんのシェルスクリプトライフの一助になれば幸いです。 標準入力を加工するシェル関数、例えば、 入力を文とするメールを送るシェル関数 ログを入力として受け取り、集計や解析をするシェル関数 を書く場合、みなさんどういう風に書いているでしょうか。 私は今までこんな風に書いていました… send_mail() { from='sender@example.org' to='receiver@example.org' { echo "From: ${from}" echo "To: ${to}" echo "Subject: test" echo cat - } | qmail-inject -A -f${from} } make_mail_body | send_mail これの何が問題かという

    シェルスクリプトで標準入力を加工する際の注意点 : DSAS開発者の部屋
  • http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8D%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/%E8%A8%AD%E5%AE%9A%E3%81%A7stdout,stderr%E3%81%AE%E5%87%BA%E5%8A%9B%E5%85%88%E3%82%92%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81

    iww
    iww 2014/02/02
  • パイプ出力を現在のシェル上のwhileに喰わせる上手いやり方 - Qiita

    これはコマンドの標準出力を1行ずつ f という変数に読み込んで何らかの処理を行うってやつです。 whileの中でやることがファイル操作などの一般的なことならこれで全然問題ないんですが、実行中のシェル環境に対する処理(具体的には変数の設定など)を行おうとすると期待通りにいってくれなくなります。例えばこんな感じ↓ # findで見つけたファイル名をfilesという配列変数に詰め込みたい files=() find -type f | while read -r f; do files+=("$f") done echo "${files[@]}" # 確かにfilesに値を入れた筈なのに空が出力される?? これはパイプで繋げると後ろのwhileがサブシェルで実行されてしまうために起こる現象です。噛み砕いて説明すると… 現在findを実行中のbashとは別に、パイプの後ろでもう一つのbashが起

    パイプ出力を現在のシェル上のwhileに喰わせる上手いやり方 - Qiita
  • ポータブルなシェルスクリプトを書く - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    拡張 POSIX シェルスクリプト Advent Calendar 2013、19日目の記事です。 うおー、あと 30分で書かないといけねー! 雑な内容ですみません。 今日はポータブルなシェルスクリプトの書き方ついてざっくり語ります。 UNIX 系 OS であれば大抵の OS / バージョンでも動くシェルスクリプト!! (ただし外部コマンドの非互換性の問題は除く) #!/bin/sh で書く POSIX sh でスクリプトを書けば完璧! shebang は #!/bin/sh!! …全然完璧ではありません。Solaris 10 のように /bin/sh が POSIX sh でない残念な OS がまだ生き残っています。 マニュアルにも載っているバグが仕様になったのではないかと思われる謎挙動や未知のバグを回避するのが大変です。 ポータブルにするには #!/bin/sh はまだ推奨できません。

    iww
    iww 2013/12/24
    checkbashisms